RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   21-Apr-2017 08:19:16
  Branch: rpm-5_4                          Handle: 2017042106191600

  Modified files:           (Branch: rpm-5_4)
    rpm                     CHANGES configure.ac
    rpm/lib                 poptALL.c
    rpm/rpmio               librpmio.vers rpmio.h rpmrpc.c

  Log:
    - autofu: refactor to add 
--with-{epoll,eventfd,fanotify,inotify,ipc,mount,personality,prctl,timerfd}.
    - rpmio: add getauxval+personality.

  Summary:
    Revision    Changes     Path
    1.3501.2.537+2  -0      rpm/CHANGES
    2.472.2.163 +118 -14    rpm/configure.ac
    2.144.2.15  +0  -1      rpm/lib/poptALL.c
    2.199.2.70  +2  -0      rpm/rpmio/librpmio.vers
    1.97.2.14   +10 -0      rpm/rpmio/rpmio.h
    2.99.2.10   +156 -1     rpm/rpmio/rpmrpc.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3501.2.536 -r1.3501.2.537 CHANGES
  --- rpm/CHANGES       21 Apr 2017 02:59:12 -0000      1.3501.2.536
  +++ rpm/CHANGES       21 Apr 2017 06:19:16 -0000      1.3501.2.537
  @@ -1,4 +1,6 @@
   5.4.17 -> 5.4.18:
  +    - jbj: autofu: refactor to add 
--with-{epoll,eventfd,fanotify,inotify,ipc,mount,personality,prctl,timerfd}.
  +    - jbj: rpmio: add getauxval+personality.
       - jbj: autofu: refactor to add 
--with-{aio,clock,mq,sched,search,sem,shm,timer,xattr,attr,cap,acl,keyutils} 
subsystem detection build options.
       - jbj: rpmio: add memfd_create+add_key+request_key+keyctl syscalls.
       - jbj: rpmio: add fgetxattr+flistxattr+fremovexattr+fsetxattr
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/configure.ac
  ============================================================================
  $ cvs diff -u -r2.472.2.162 -r2.472.2.163 configure.ac
  --- rpm/configure.ac  21 Apr 2017 02:58:43 -0000      2.472.2.162
  +++ rpm/configure.ac  21 Apr 2017 06:19:16 -0000      2.472.2.163
  @@ -1299,7 +1299,7 @@
       stddef.h stdint.h stdlib.h string.h strings.h dnl
       sys/acl.h sys/byteorder.h sys/endian.h sys/file.h dnl
       sys/ioctl.h sys/ipc.h sys/mman.h sys/mntctl.h sys/mnttab.h dnl
  -    sys/mount.h sys/param.h sys/prctl.h sys/resource.h dnl
  +    sys/mount.h sys/param.h sys/resource.h dnl
       sys/select.h sys/socket.h sys/statfs.h sys/statvfs.h dnl
       sys/stdtypes.h sys/systemcfg.h sys/time.h sys/timeb.h sys/types.h dnl
       sys/utsname.h sys/vfs.h sys/vmount.h sys/xattr.h sys/wait.h dnl
  @@ -1400,9 +1400,6 @@
   AC_CHECK_FUNCS(remap_file_pages)
   AC_CHECK_FUNCS(syncfs)
   
  -AC_CHECK_HEADERS(sys/prctl.h)
  -AC_CHECK_FUNCS(prctl)
  -
   # Find the best function to set timestamps.
   AC_CHECK_FUNCS(utime gettimeofday localtime_r tzset)
   AC_CHECK_FUNCS(utimes lutimes futimes futimesat)
  @@ -1436,9 +1433,9 @@
   dnl # <cpuid.h> API
   AC_CHECK_HEADERS(cpuid.h)
   
  -dnl # <sys/getauxv.h> API
  -AC_CHECK_HEADERS(sys/getauxv.h)
  -AC_CHECK_FUNC(getauxv)
  +dnl # <sys/auxv.h> API
  +AC_CHECK_HEADERS(elf.h sys/procfs.h sys/cdefs.h sys/auxv.h sys/getauxv.h)
  +AC_CHECK_FUNCS(getauxval getauxv)
   
   dnl # <beecrypt/api.h> tries to retrofit an assert(x) macro
   AC_CHECK_HEADERS(assert.h)
  @@ -1636,21 +1633,27 @@
   dnl
       atexit dnl
       getcwd getwd get_current_dir_name dnl
  +    stat fstat lstat fstatat dnl
  +    umask getumask dnl
       chdir fchdir dnl
  -    chmod fchmod lchmod dnl
  +    chmod fchmod lchmod fchmodat dnl
       chown fchown lchown dnl
       chflags fchflags lchflags dnl
       getattrlist fgetattrlist getattrlistat dnl
       setattrlist fsetattrlist dnl
       pathconf fpathconf dnl
       truncate ftruncate dnl
  +    getrlimit setrlimit prlimit dnl
       realpath dnl
       floor pow sqrt dnl
   dnl
  +    statvfs fstavfs dnl
  +dnl
       dup dup2 dup3 dnl
       link linkat dnl
       mkdir mkdirat dnl
       mkfifo mkfifoat dnl
  +    mknod mknodat dnl
       open openat creat dnl
       rmdir dnl
       symlink symlinkat dnl
  @@ -1662,11 +1665,12 @@
       pause dnl
       raise dnl
       sigaction sigpending sigreturn sigsuspend sigtimedwait dnl
  -    sigpause dnl
       sigprocmask pthread_sigmask dnl
  +    sigpause dnl
       sigqueue pthread_sigqueue dnl
       sigwait sigwaitinfo dnl
       sigemptyset sigfillset sigaddset sigdelset sigismember dnl
  +    sigisemptyset sigorset sigandset dnl
       sigset sighold sigrelse sigignore dnl
       sigvec sigmask sigblock siggetmask sigsetmask dnl
   dnl
  @@ -1677,21 +1681,27 @@
       getaddrinfo freeaddrinfo gai_strerror dnl
       getnameinfo dnl
       inet_aton inet_ntoa dnl
  +    inet_pton inet_ntop inet_net_pton dnl
       inet_addr inet_network inet_makeaddr inet_lnaof inet_netof dnl
   dnl
       syslog vsyslog openlog closelog setlogmask dnl
       getmode setmode strmode dnl
   dnl    setproctitle setproctitle_init dnl
  -    getpriority setpriority nice dnl
  +    getrusage getpriority setpriority nice dnl
   dnl
       basename dirname dnl
       confstr dnl
       getgrent setgrent endgrent dnl
       getpwent setpwent endpwent dnl
  -    gethostbyaddr gethostbyaddr dnl
  -    gethostbyname gethostbyname2 dnl
  -    gethostbyname_r gethostbyname2_r dnl
  +    gethostbyname gethostbyaddr gethostbyname_r gethostbyaddr_r dnl
  +    gethostbyname2 gethostbyname2_r dnl
       gethostent sethostent endhostent gethostent_r dnl
  +    getnetbyname getnetbyaddr getnetbyname_r getnetbyaddr_r dnl
  +    getnetent setnetent endnetent getnetent_r dnl
  +    getprotobyname getprotobynumber getprotobyname_r getprotobynumber_r dnl
  +    getprotoent setprotoent endprotoent getprotoent_r dnl
  +    getservbyname getservbyport dnl
  +    getservent setservent endservent getservent_r dnl
       herror hstrerror dnl
       gethostname sethostname dnl
       getmntent setmntent endmntent addmntent hasmntopt getmntent_r dnl
  @@ -1713,7 +1723,6 @@
   dnl
       isalpha isascii isdigit isprint isspace dnl
   dnl
  -    ftok dnl
       getpass getpassphrase dnl
       bsearch qsort qsort_r dnl
       rand rand_r srand dnl
  @@ -3048,6 +3057,72 @@
           AC_CHECK_FUNCS(clock_settime)
       ], [])
   
  +dnl # Glibc EPOLL
  +RPM_CHECK_LIB(
  +    [EPOLL], [epoll],
  +    [c], [epoll_create], [sys/epoll.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(epoll_create)
  +        AC_CHECK_FUNCS(epoll_create1)
  +        AC_CHECK_FUNCS(epoll_ctl)
  +        AC_CHECK_FUNCS(epoll_wait)
  +        AC_CHECK_FUNCS(epoll_pwait)
  +    ], [])
  +
  +dnl # Glibc EVENTFD
  +RPM_CHECK_LIB(
  +    [EVENTFD], [eventfd],
  +    [c], [eventfd], [sys/eventfd.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(eventfd)
  +        AC_CHECK_FUNCS(eventfd_read)
  +        AC_CHECK_FUNCS(eventfd_write)
  +    ], [])
  +
  +dnl # Glibc FANOTIFY
  +RPM_CHECK_LIB(
  +    [FANOTIFY], [fanotify],
  +    [c], [fanotify_init], [sys/fanotify.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(fanotify_init)
  +        AC_CHECK_FUNCS(fanotify_mark)
  +    ], [])
  +
  +dnl # Glibc INOTIFY
  +RPM_CHECK_LIB(
  +    [INOTIFY], [inotify],
  +    [c], [inotify_init], [sys/inotify.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(inotify_init)
  +        AC_CHECK_FUNCS(inotify_init1)
  +        AC_CHECK_FUNCS(inotify_add_watch)
  +        AC_CHECK_FUNCS(inotify_rm_watch)
  +    ], [])
  +
  +dnl # Glibc IPC
  +RPM_CHECK_LIB(
  +    [IPC], [ipc],
  +    [c], [ftok], [sys/ipc.h],
  +    [yes,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(ftok)
  +    ], [])
  +
  +dnl # Glibc MOUNT
  +RPM_CHECK_LIB(
  +    [MOUNT], [mount],
  +    [c], [mount], [sys/mount.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(mount)
  +        AC_CHECK_FUNCS(umount)
  +        AC_CHECK_FUNCS(umount2)
  +    ], [])
  +
   dnl # POSIX Message Queues
   RPM_CHECK_LIB(
       [POSIX Message Queues], [mq],
  @@ -3066,6 +3141,24 @@
           AC_CHECK_FUNCS(mq_unlink)
       ], [])
   
  +dnl # Glibc PERSONALITY
  +RPM_CHECK_LIB(
  +    [PERSONALITY], [personality],
  +    [c], [personality], [sys/personality.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(personality)
  +    ], [])
  +
  +dnl # Glibc PRCTL
  +RPM_CHECK_LIB(
  +    [PRCTL], [prctl],
  +    [c], [prctl], [sys/prctl.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(prctl)
  +    ], [])
  +
   dnl # POSIX Scheduler
   RPM_CHECK_LIB(
       [SCHED], [sched],
  @@ -3152,6 +3245,17 @@
           AC_CHECK_FUNCS(timerfd_settime)
       ], [])
   
  +dnl # Glibc TIMERFD
  +RPM_CHECK_LIB(
  +    [TIMERFD], [timerfd],
  +    [rt], [timerfd_create], [sys/timerfd.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(timerfd_create)
  +        AC_CHECK_FUNCS(timerfd_gettime)
  +        AC_CHECK_FUNCS(timerfd_settime)
  +    ], [])
  +
   dnl # Glibc XATTR
   RPM_CHECK_LIB(
       [XATTR], [xattr],
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/poptALL.c
  ============================================================================
  $ cvs diff -u -r2.144.2.14 -r2.144.2.15 poptALL.c
  --- rpm/lib/poptALL.c 27 Jun 2016 03:10:03 -0000      2.144.2.14
  +++ rpm/lib/poptALL.c 21 Apr 2017 06:19:16 -0000      2.144.2.15
  @@ -191,7 +191,6 @@
        /*@modifies rpmcliInitialized, rpmCLIMacroContext, 
rpmGlobalMacroContext,
                fileSystem, internalState @*/
   {
  -
       if (rpmcliInitialized < 0) {
        char * t = NULL;
        if (rpmcliTargets != NULL) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.199.2.69 -r2.199.2.70 librpmio.vers
  --- rpm/rpmio/librpmio.vers   21 Apr 2017 02:58:43 -0000      2.199.2.69
  +++ rpm/rpmio/librpmio.vers   21 Apr 2017 06:19:16 -0000      2.199.2.70
  @@ -162,6 +162,7 @@
       Fwrite;
       _Fwrite;
       get_date;
  +    Getauxval;
       Getpass;
       _GetPass;
       gidToGname;
  @@ -297,6 +298,7 @@
       pcrs_free_job;
       pcrs_free_joblist;
       pcrs_strerror;
  +    Personality;
       pgpArmorKeyTbl;
       pgpArmorTbl;
       pgpArmorUnwrap;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.h
  ============================================================================
  $ cvs diff -u -r1.97.2.13 -r1.97.2.14 rpmio.h
  --- rpm/rpmio/rpmio.h 21 Apr 2017 02:58:43 -0000      1.97.2.13
  +++ rpm/rpmio/rpmio.h 21 Apr 2017 06:19:16 -0000      1.97.2.14
  @@ -380,6 +380,16 @@
                   unsigned long nr_segs, unsigned int flags);
   
   /**
  + * getauxval(2) clone.
  + */
  +unsigned long Getauxval(unsigned long type);
  +
  +/**
  + * personality(2) clone.
  + */
  +int Personality(unsigned long persona);
  +
  +/**
    * prctl(2) clone.
    */
   int Prctl(int option, unsigned long arg2, unsigned long arg3,
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmrpc.c
  ============================================================================
  $ cvs diff -u -r2.99.2.9 -r2.99.2.10 rpmrpc.c
  --- rpm/rpmio/rpmrpc.c        21 Apr 2017 02:58:43 -0000      2.99.2.9
  +++ rpm/rpmio/rpmrpc.c        21 Apr 2017 06:19:16 -0000      2.99.2.10
  @@ -1730,7 +1730,162 @@
       return rc;
   }
   
  -#if defined(HAVE_PRCTL)
  +#if defined(HAVE_SYS_AUXV_H)
  +#include <sys/auxv.h>
  +#endif
  +
  +typedef struct key_s {
  +    uint32_t v;
  +    const char *n;
  +} KEY;
  +
  +static const char * tblName(uint32_t v, KEY * tbl, size_t ntbl)
  +{
  +    static char buf[32];
  +    const char * n = NULL;
  +    size_t i;
  +
  +    for (i = 0; i < ntbl; i++) {
  +     if (v != tbl[i].v)
  +         continue;
  +     n = tbl[i].n;
  +     break;
  +    }
  +    if (n == NULL) {
  +     (void) snprintf(buf, sizeof(buf), "0x%x", (unsigned)v);
  +     n = buf;
  +    }
  +    return n;
  +}
  +
  +#if defined(HAVE_ELF_H)
  +#include <elf.h>
  +
  +#define _ENTRY(_v)      { AT_##_v, #_v, }
  +static KEY ATtypes[] = {
  +#ifdef       NOTYET
  +    _ENTRY(NULL),
  +    _ENTRY(IGNORE),
  +    _ENTRY(EXECFD),
  +#endif
  +    _ENTRY(PHDR),            /* 0x400040 */
  +    _ENTRY(PHENT),           /* 0x38 */
  +    _ENTRY(PHNUM),           /* 0x9 */
  +    _ENTRY(PAGESZ),          /* 0x1000 */
  +    _ENTRY(BASE),            /* 0x7fae8c4f3000 */
  +#ifdef       NOTYET
  +    _ENTRY(FLAGS),
  +#endif
  +    _ENTRY(ENTRY),           /* 0x4046e0 */
  +#ifdef       NOTYET
  +    _ENTRY(NOTELF),
  +#endif
  +    _ENTRY(UID),
  +    _ENTRY(EUID),
  +    _ENTRY(GID),
  +    _ENTRY(EGID),
  +    _ENTRY(CLKTCK),          /* 0x64 */
  +    _ENTRY(PLATFORM),                /* 0x7ffdfa0aa809 */
  +    _ENTRY(HWCAP),           /* 0xbfebfbff */
  +#ifdef       NOTYET
  +    _ENTRY(FPUCW),
  +    _ENTRY(DCACHEBSIZE),
  +    _ENTRY(ICACHEBSIZE),
  +    _ENTRY(UCACHEBSIZE),
  +    _ENTRY(IGNOREPPC),
  +    _ENTRY(SECURE),
  +    _ENTRY(BASE_PLATFORM),
  +#endif
  +    _ENTRY(RANDOM),          /* 0x7ffdfa0aa7f9 */
  +#ifdef       NOTYET
  +    _ENTRY(HWCAP2),
  +    _ENTRY(EXECFN),
  +    _ENTRY(SYSINFO),
  +#endif
  +    _ENTRY(SYSINFO_EHDR),    /* 0x7ffdfa1a7000 */
  +#ifdef       NOTYET
  +    _ENTRY(L1I_CACHESHAPE),
  +    _ENTRY(L1D_CACHESHAPE),
  +    _ENTRY(L2_CACHESHAPE),
  +    _ENTRY(L3_CACHESHAPE),
  +#endif
  +};
  +static size_t nATtypes = sizeof(ATtypes) / sizeof(ATtypes[0]);
  +#define fmtATtype(_type) tblName(_type, ATtypes, nATtypes)
  +#undef       _ENTRY
  +#else        /* HAVE_ELF_H */
  +#define fmtATtype(_type) "???"
  +#endif       /* HAVE_ELF_H */
  +
  +unsigned long Getauxval(unsigned long type)
  +{
  +    unsigned long rc = 0;
  +#if defined(HAVE_GETAUXVAL)
  +    rc = getauxval(type);
  +#else
  +    errno = ENOSYS;
  +#endif
  +    if (rc == 0)
  +     rpmlog(RPMLOG_ERR, _("%s(AT_%s) failed: rc 0x%lx %m\n"),
  +             __FUNCTION__, fmtATtype(type), rc);
  +if (_rpmio_debug)
  +fprintf(stderr, _("<-- %s(AT_%s) rc 0x%lx\n"), __FUNCTION__, 
fmtATtype(type), rc);
  +    return rc;
  +}
  +
  +#if defined(HAVE_SYS_PERSONALITY_H)
  +#include <sys/personality.h>
  +
  +#define _ENTRY(_v)      { PER_##_v, #_v, }
  +static KEY PERsona[] = {
  +    _ENTRY(LINUX),
  +    _ENTRY(LINUX_32BIT),
  +    _ENTRY(LINUX_FDPIC),
  +    _ENTRY(SVR4),
  +    _ENTRY(SVR3),
  +    _ENTRY(SCOSVR3),
  +    _ENTRY(OSR5),
  +    _ENTRY(WYSEV386),
  +    _ENTRY(ISCR4),
  +    _ENTRY(BSD),
  +    _ENTRY(SUNOS),
  +    _ENTRY(XENIX),
  +    _ENTRY(LINUX32),
  +    _ENTRY(LINUX32_3GB),
  +    _ENTRY(IRIX32),
  +    _ENTRY(IRIXN32),
  +    _ENTRY(IRIX64),
  +    _ENTRY(RISCOS),
  +    _ENTRY(SOLARIS),
  +    _ENTRY(UW7),
  +    _ENTRY(OSF4),
  +    _ENTRY(HPUX),
  +    { 0xffffffff, "CURRENT" }
  +};
  +static size_t nPERsona = sizeof(PERsona) / sizeof(PERsona[0]);
  +#define fmtPERsona(_persona) tblName(_persona, PERsona, nPERsona)
  +#undef       _ENTRY
  +#else        /* HAVE_SYS_PERSONALITY_H */
  +#define fmtPERsona(_persona) "???"
  +#endif       /* HAVE_SYS_PERSONALITY_H */
  +
  +int Personality(unsigned long persona)
  +{
  +    int rc = -1;
  +#if defined(HAVE_PERSONALITY)
  +    rc = personality(persona);
  +#else
  +    errno = ENOSYS;
  +#endif
  +    if (rc == -1)
  +     rpmlog(RPMLOG_ERR, _("%s(PER_%s) failed: %m\n"),
  +             __FUNCTION__, fmtPERsona(persona));
  +if (_rpmio_debug)
  +fprintf(stderr, _("<-- %s(PER_%s) was PER_%s\n"), __FUNCTION__, 
fmtPERsona(persona), (rc != -1 ? fmtPERsona(rc) : "ERROR"));
  +    return rc;
  +}
  +
  +#if defined(HAVE_SYS_PRCTL_H)
   #include <sys/prctl.h>
   #endif
   int Prctl(int option, unsigned long arg2, unsigned long arg3,
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to