mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	Similar to ppoll, the poll.h header needs to redirect the poll call to a proper fortified ppoll with 64 bit time_t support. The implementation is straightforward, just need to add a similar check as __poll_chk and call the 64 bit time_t ppoll version. The debug fortify tests are also extended to cover 64 bit time_t for affected ABIs. Unfortunately it requires an aditional symbol, which makes backport tricky. One possibility is to add a static inline version if compiler supports is and call abort instead of __chk_fail, so fortified version will call __poll64 in the end. Another possibility is to just remove the fortify support for _TIME_BITS=64. Checked on i686-linux-gnu.
		
			
				
	
	
		
			353 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			353 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| %include <time64-compat.h>
 | |
| libc {
 | |
|   GLIBC_2.0 {
 | |
|     # functions used in inline functions or macros
 | |
|     __cmsg_nxthdr;
 | |
| 
 | |
|     # functions used in other libraries
 | |
|     __clone;
 | |
| 
 | |
|     # helper functions
 | |
|     __errno_location;
 | |
| 
 | |
|     # b*
 | |
|     bdflush;
 | |
| 
 | |
|     # c*
 | |
|     clone; create_module;
 | |
| 
 | |
|     # d*
 | |
|     delete_module;
 | |
| 
 | |
|     # g*
 | |
|     get_kernel_syms; getresgid; getresuid;
 | |
| 
 | |
|     # i*
 | |
|     init_module;
 | |
| 
 | |
|     # k*
 | |
|     klogctl;
 | |
| 
 | |
|     # l*
 | |
|     llseek;
 | |
| 
 | |
|     # m*
 | |
|     mremap;
 | |
| 
 | |
|     # n*
 | |
|     nfsservctl;
 | |
| 
 | |
|     # p*
 | |
|     personality; prctl;
 | |
| 
 | |
|     # q*
 | |
|     query_module; quotactl;
 | |
| 
 | |
|     # s*
 | |
|     setfsgid; setfsuid;
 | |
| 
 | |
|     # s*
 | |
|     setresgid; setresuid; swapoff; swapon; sysctl; sysinfo;
 | |
| 
 | |
|     # u*
 | |
|     umount; uselib;
 | |
| 
 | |
|     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 | |
|   }
 | |
|   GLIBC_2.1 {
 | |
|     # functions used in inline functions or macros
 | |
|     __libc_sa_len;
 | |
| 
 | |
|     # Since we have new signals this structure changed.
 | |
|     _sys_siglist; sys_siglist; sys_sigabbrev;
 | |
| 
 | |
|     # New errlist.
 | |
|     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 | |
| 
 | |
|     # chown interface change.
 | |
|     chown;
 | |
| 
 | |
|     # Change in pthread_attr_t.
 | |
|     pthread_attr_init;
 | |
| 
 | |
|     # c*
 | |
|     capget; capset;
 | |
| 
 | |
|     # n*
 | |
|     ntp_adjtime; ntp_gettime;
 | |
| 
 | |
|     # u*
 | |
|     umount2;
 | |
| 
 | |
|     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 | |
|   }
 | |
|   GLIBC_2.2 {
 | |
|     # needed in other libraries.
 | |
|     __endmntent; __getmntent_r; __setmntent; __statfs; __sysctl;
 | |
| 
 | |
|     # ipc ctl interface change.
 | |
|     semctl; shmctl; msgctl;
 | |
| 
 | |
|     # Old symbol versions from libpthread.
 | |
|     __pread64;
 | |
|     __pwrite64;
 | |
|     lseek64;
 | |
|     open64;
 | |
|     pread;
 | |
|     pread64;
 | |
|     pwrite;
 | |
|     pwrite64;
 | |
|   }
 | |
|   GLIBC_2.2.1 {
 | |
|     # p*
 | |
|     pivot_root;
 | |
|   }
 | |
|   GLIBC_2.3 {
 | |
|     # r*
 | |
|     readahead;
 | |
| 
 | |
|     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 | |
|   }
 | |
|   GLIBC_2.3.2 {
 | |
|     # New kernel interfaces.
 | |
|     epoll_create; epoll_ctl; epoll_wait;
 | |
|   }
 | |
|   GLIBC_2.3.3 {
 | |
|     _sys_siglist;
 | |
|     gnu_dev_major;
 | |
|     gnu_dev_makedev;
 | |
|     gnu_dev_minor;
 | |
|     posix_fadvise64;
 | |
|     posix_fallocate64;
 | |
|     sys_sigabbrev;
 | |
|     sys_siglist;
 | |
| 
 | |
|     # Changed timer_t.  Only used by some 64-bit targets.
 | |
|     timer_create;
 | |
|     timer_delete;
 | |
|     timer_getoverrun;
 | |
|     timer_gettime;
 | |
|     timer_settime;
 | |
|   }
 | |
|   GLIBC_2.3.4 {
 | |
|     sched_getaffinity; sched_setaffinity;
 | |
|   }
 | |
|   GLIBC_2.4 {
 | |
|     inotify_init; inotify_add_watch; inotify_rm_watch;
 | |
| 
 | |
|     unshare;
 | |
| 
 | |
|     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 | |
|   }
 | |
|   GLIBC_2.5 {
 | |
|     splice; tee; vmsplice;
 | |
|   }
 | |
|   GLIBC_2.6 {
 | |
|     epoll_pwait; sync_file_range; sched_getcpu;
 | |
|   }
 | |
|   GLIBC_2.7 {
 | |
|     eventfd; eventfd_read; eventfd_write; signalfd;
 | |
|   }
 | |
|   GLIBC_2.8 {
 | |
|     timerfd_create; timerfd_settime; timerfd_gettime;
 | |
|   }
 | |
|   GLIBC_2.9 {
 | |
|     epoll_create1; inotify_init1;
 | |
|   }
 | |
|   GLIBC_2.10 {
 | |
|     fallocate;
 | |
|   }
 | |
|   GLIBC_2.12 {
 | |
|     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
 | |
| 
 | |
|     ntp_gettimex;
 | |
| 
 | |
|     recvmmsg;
 | |
|   }
 | |
|   GLIBC_2.13 {
 | |
|     prlimit; prlimit64;
 | |
| 
 | |
|     fanotify_init; fanotify_mark;
 | |
|   }
 | |
|   GLIBC_2.14 {
 | |
|     clock_adjtime;
 | |
| 
 | |
|     name_to_handle_at; open_by_handle_at;
 | |
| 
 | |
|     setns;
 | |
| 
 | |
|     sendmmsg;
 | |
|   }
 | |
|   GLIBC_2.15 {
 | |
|     process_vm_readv; process_vm_writev;
 | |
|   }
 | |
|   GLIBC_2.27 {
 | |
|     memfd_create;
 | |
|     mlock2;
 | |
|     pkey_alloc; pkey_free; pkey_set; pkey_get; pkey_mprotect;
 | |
|   }
 | |
|   GLIBC_2.29 {
 | |
|     getcpu;
 | |
|   }
 | |
|   GLIBC_2.30 {
 | |
|     getdents64; gettid; tgkill;
 | |
|   }
 | |
|   GLIBC_2.32 {
 | |
|   }
 | |
|   GLIBC_2.34 {
 | |
| %ifdef TIME64_NON_DEFAULT
 | |
|     # 64-bit time_t support
 | |
|     __adjtime64;
 | |
|     ___adjtimex64;
 | |
|     __aio_suspend_time64;
 | |
|     __clock_adjtime64;
 | |
|     __clock_getres64;
 | |
|     __clock_gettime64;
 | |
|     __clock_nanosleep_time64;
 | |
|     __clock_settime64;
 | |
|     __cnd_timedwait64;
 | |
|     __ctime64;
 | |
|     __ctime64_r;
 | |
|     __difftime64;
 | |
|     __fcntl_time64;
 | |
|     __fstat64_time64;
 | |
|     __fstatat64_time64;
 | |
|     __futimens64;
 | |
|     __futimes64;
 | |
|     __futimesat64;
 | |
|     __fts64_open_time64;
 | |
|     __fts64_close_time64;
 | |
|     __fts64_read_time64;
 | |
|     __fts64_set_time64;
 | |
|     __fts64_children_time64;
 | |
|     __ftw64_time64;
 | |
|     __nftw64_time64;
 | |
|     __gai_suspend_time64;
 | |
|     __getitimer64;
 | |
|     __getrusage64;
 | |
|     __getsockopt64;
 | |
|     __gettimeofday64;
 | |
|     __glob64_time64;
 | |
|     __globfree64_time64;
 | |
|     __gmtime64;
 | |
|     __gmtime64_r;
 | |
|     __ioctl_time64;
 | |
|     __localtime64;
 | |
|     __localtime64_r;
 | |
|     __lstat64_time64;
 | |
|     __lutimes64;
 | |
|     __mktime64;
 | |
|     __mq_timedreceive_time64;
 | |
|     __mq_timedsend_time64;
 | |
|     __msgctl64;
 | |
|     __mtx_timedlock64;
 | |
|     __nanosleep64;
 | |
|     __nanosleep64;
 | |
|     __ntp_gettime64;
 | |
|     __ntp_gettimex64;
 | |
|     __ppoll64;
 | |
|     __prctl_time64;
 | |
|     __pselec64;
 | |
|     __pselect64;
 | |
|     __pthread_clockjoin_np64;
 | |
|     __pthread_cond_clockwait64;
 | |
|     __pthread_cond_timedwait64;
 | |
|     __pthread_mutex_clocklock64;
 | |
|     __pthread_mutex_timedlock64;
 | |
|     __pthread_rwlock_clockrdlock64;
 | |
|     __pthread_rwlock_clockwrlock64;
 | |
|     __pthread_rwlock_timedrdlock64;
 | |
|     __pthread_rwlock_timedwrlock64;
 | |
|     __pthread_timedjoin_np64;
 | |
|     __recvmmsg64;
 | |
|     __recvmsg64;
 | |
|     __sched_rr_get_interval64;
 | |
|     __select64;
 | |
|     __sem_clockwait64;
 | |
|     __semctl64;
 | |
|     __semtimedop64;
 | |
|     __sem_timedwait64;
 | |
|     __sendmmsg64;
 | |
|     __sendmsg64;
 | |
|     __setitimer64;
 | |
|     __setsockopt64;
 | |
|     __settimeofday64;
 | |
|     __shmctl64;
 | |
|     __sigtimedwait64;
 | |
|     __stat64_time64;
 | |
|     __thrd_sleep64;
 | |
|     __time64;
 | |
|     __timegm64;
 | |
|     __timer_gettime64;
 | |
|     __timer_settime64;
 | |
|     __timerfd_gettime64;
 | |
|     __timerfd_settime64;
 | |
|     __timespec_get64;
 | |
|     __timespec_getres64;
 | |
|     __utime64;
 | |
|     __utimensat64;
 | |
|     __utimes64;
 | |
|     __utimes64;
 | |
|     __wait3_time64;
 | |
|     __wait4_time64;
 | |
| %endif
 | |
|     close_range;
 | |
|   }
 | |
|   GLIBC_2.35 {
 | |
| %ifdef TIME64_NON_DEFAULT
 | |
|     __epoll_pwait2_time64;
 | |
| %endif
 | |
|     epoll_pwait2;
 | |
|   }
 | |
|   GLIBC_2.36 {
 | |
|     fsconfig;
 | |
|     fsmount;
 | |
|     fsopen;
 | |
|     fspick;
 | |
|     move_mount;
 | |
|     mount_setattr;
 | |
|     open_tree;
 | |
|     pidfd_open;
 | |
|     pidfd_getfd;
 | |
|     pidfd_send_signal;
 | |
|     process_madvise;
 | |
|     process_mrelease;
 | |
|   }
 | |
|   GLIBC_2.37 {
 | |
| %ifdef TIME64_NON_DEFAULT
 | |
|     __ppoll64_chk;
 | |
| %endif
 | |
|   }
 | |
|   GLIBC_PRIVATE {
 | |
|     # functions used in other libraries
 | |
|     __syscall_rt_sigqueueinfo;
 | |
|     __open_nocancel;
 | |
|     __read_nocancel;
 | |
|     __pread64_nocancel;
 | |
|     __close_nocancel;
 | |
|     __sigtimedwait;
 | |
|     # functions used by nscd
 | |
|     __netlink_assert_response;
 | |
|   }
 | |
| }
 | |
| 
 | |
| librt {
 | |
|   GLIBC_2.3.3 {
 | |
|     # Leftover from the int -> timer_t transition.  For ABIs that came later
 | |
|     # and do not have the symbol version, this version node is merged with
 | |
|     # the baseline version.
 | |
|     __librt_version_placeholder;
 | |
|   }
 | |
| }
 | |
| 
 | |
| ld {
 | |
|   GLIBC_2.35 {
 | |
|     __rseq_flags;
 | |
|     __rseq_offset;
 | |
|     __rseq_size;
 | |
|   }
 | |
|   GLIBC_PRIVATE {
 | |
|     __nptl_change_stack_perm;
 | |
|   }
 | |
| }
 |