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