mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 11:43:34 +08:00
9714012ca0
aio_* bring in references to pread, which isn't in all the standards containing aio_* (as a reference from one library to another, this is a bug for dynamic as well as static linking). This patch fixes this by using __libc_pread instead, exporting that function from libc at symbol version GLIBC_PRIVATE; the code, with conditionals that may call either __pread64 or __libc_pread, becomes exactly analogous to that elsewhere in the same file that may call either __pwrite64 or __libc_pwrite. Tested for x86_64 and x86 (testsuite, and comparison of disassembly of installed shared libraries). libc changes because of the PLT entry for the newly exported __libc_pread; librt changes because of assertion line numbers and PLT rearrangement; other stripped installed shared libraries do not change. [BZ #18519] * posix/Versions (libc): Export __libc_pread at version GLIBC_PRIVATE. * sysdeps/pthread/aio_misc.c (handle_fildes_io): Call __libc_pread instead of pread. * conform/Makefile (test-xfail-POSIX/aio.h/linknamespace): Remove variable.
141 lines
3.3 KiB
Plaintext
141 lines
3.3 KiB
Plaintext
libc {
|
|
GLIBC_2.0 {
|
|
# functions with special/multiple interfaces
|
|
__bsd_getpgrp; __getpgid; __setpgid;
|
|
|
|
# functions with required interface outside normal name space
|
|
_exit;
|
|
|
|
# functions used in other libraries
|
|
__sched_get_priority_max; __sched_get_priority_min;
|
|
__sched_getparam; __sched_getscheduler; __sched_setscheduler;
|
|
__sched_yield; __fork; __getpid; __wait;
|
|
|
|
# functions used by libstdc++ 2.7.2
|
|
__waitpid;
|
|
|
|
# global variables
|
|
__environ; _environ;
|
|
|
|
# variables in normal name space
|
|
environ; optarg; opterr; optind; optopt;
|
|
re_max_failures; re_syntax_options;
|
|
|
|
# a*
|
|
alarm;
|
|
|
|
# c*
|
|
confstr;
|
|
|
|
# e*
|
|
execl; execle; execlp; execv; execve; execvp; fexecve;
|
|
|
|
# f*
|
|
fnmatch; fork; fpathconf; freeaddrinfo;
|
|
|
|
# g*
|
|
getaddrinfo; getdtablesize; getegid; geteuid; getgid; getopt; getopt_long;
|
|
getopt_long_only; getpgid; getpgrp; getpid; getppid; getsid; getuid; glob;
|
|
glob_pattern_p; globfree; group_member;
|
|
|
|
# n*
|
|
nanosleep;
|
|
|
|
# p*
|
|
pathconf; pause; pselect;
|
|
|
|
# r*
|
|
re_comp; re_compile_fastmap; re_compile_pattern; re_exec; re_match;
|
|
re_match_2; re_search; re_search_2; re_set_registers; re_set_syntax;
|
|
regcomp; regerror; regexec; regfree;
|
|
|
|
# s*
|
|
sched_get_priority_max; sched_get_priority_min; sched_getparam;
|
|
sched_getscheduler; sched_rr_get_interval; sched_setparam;
|
|
sched_setscheduler; sched_yield; setegid; seteuid; setgid;
|
|
setpgid; setpgrp; setsid; setuid; sleep; sysconf;
|
|
|
|
# t*
|
|
times;
|
|
|
|
# u*
|
|
uname;
|
|
|
|
# v*
|
|
vfork;
|
|
|
|
# w*
|
|
wait; wait3; wait4; waitpid;
|
|
}
|
|
GLIBC_2.1 {
|
|
# functions used in other libraries
|
|
__pread64; __pwrite64;
|
|
|
|
# g*
|
|
gai_strerror; getnameinfo; glob64; globfree64;
|
|
|
|
# p*
|
|
pread; pread64; pwrite; pwrite64;
|
|
|
|
# w*
|
|
waitid; wordexp; wordfree;
|
|
}
|
|
GLIBC_2.1.2 {
|
|
# functions used in other libraries
|
|
__vfork;
|
|
}
|
|
GLIBC_2.2 {
|
|
# p*
|
|
posix_spawn_file_actions_init; posix_spawn_file_actions_destroy;
|
|
posix_spawn_file_actions_addclose; posix_spawn_file_actions_addopen;
|
|
posix_spawn_file_actions_adddup2;
|
|
posix_spawnattr_init; posix_spawnattr_destroy;
|
|
posix_spawnattr_getsigdefault; posix_spawnattr_setsigdefault;
|
|
posix_spawnattr_getflags; posix_spawnattr_setflags;
|
|
posix_spawnattr_getpgroup; posix_spawnattr_setpgroup;
|
|
posix_spawnattr_setsigmask; posix_spawnattr_getsigmask;
|
|
posix_spawn; posix_spawnp; posix_spawnattr_getschedpolicy;
|
|
posix_spawnattr_setschedpolicy; posix_spawnattr_getschedparam;
|
|
posix_spawnattr_setschedparam;
|
|
|
|
# Used in macros.
|
|
__sysconf;
|
|
}
|
|
GLIBC_2.2.3 {
|
|
# Extended Interface.
|
|
fnmatch;
|
|
}
|
|
GLIBC_2.2.6 {
|
|
# For syscall wrapper
|
|
__nanosleep;
|
|
}
|
|
GLIBC_2.3.2 {
|
|
# Note that these symbols appear in sysdeps/unix/sysv/linux/Versions
|
|
# under GLIBC_2.0; the first instance in the script is taken as the
|
|
# default, so linux configurations put them in GLIBC_2.0 while other
|
|
# configuration put them in GLIBC_2.3.2.
|
|
getresgid; getresuid; setresgid; setresuid;
|
|
}
|
|
GLIBC_2.3.3 {
|
|
sched_getaffinity; sched_setaffinity;
|
|
}
|
|
GLIBC_2.3.4 {
|
|
regexec;
|
|
}
|
|
GLIBC_2.6 {
|
|
__sched_cpucount;
|
|
}
|
|
GLIBC_2.7 {
|
|
__sched_cpualloc; __sched_cpufree;
|
|
}
|
|
GLIBC_2.10 {
|
|
__posix_getopt;
|
|
}
|
|
GLIBC_2.11 {
|
|
execvpe;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
__libc_fork; __libc_pread; __libc_pwrite;
|
|
}
|
|
}
|