From 25143bec0d6bdfe5575223e8839663719c0dd426 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sat, 28 Jun 2014 00:00:35 +0200 Subject: fixed i686 static build issues --- tools/apbuild/apsymbols.h.i686 | 63 ++++++++++++++++++------------------------ tools/apbuild/buildlist | 50 --------------------------------- tools/apbuild/buildlist.i686 | 51 ++++++++++++++++++++++++++++++++++ tools/apbuild/buildlist.x86_64 | 51 ++++++++++++++++++++++++++++++++++ tools/apbuild/ctype.h | 4 +-- 5 files changed, 131 insertions(+), 88 deletions(-) delete mode 100755 tools/apbuild/buildlist create mode 100755 tools/apbuild/buildlist.i686 create mode 100755 tools/apbuild/buildlist.x86_64 (limited to 'tools') diff --git a/tools/apbuild/apsymbols.h.i686 b/tools/apbuild/apsymbols.h.i686 index a2b9e4ec..2206ee31 100644 --- a/tools/apbuild/apsymbols.h.i686 +++ b/tools/apbuild/apsymbols.h.i686 @@ -6,23 +6,18 @@ APBUILD_NOTE_METADATA("apbuild.version=" APBUILD_VERSION); #endif /* apbuild generated symbol exclusion list */ -__asm__(".symver __exp_finite,exp@GLIBC_2.0"); -__asm__(".symver __acosf_finite,acosf@GLIBC_2.0"); -__asm__(".symver __log_finite,log@GLIBC_2.0"); -__asm__(".symver __pow_finite,pow@GLIBC_2.0"); -__asm__(".symver memcpy,memcpy@GLIBC_2.0"); -__asm__(".symver _sys_errlist,_sys_errlist@GLIBC_2.0"); -__asm__(".symver _sys_nerr,_sys_nerr@GLIBC_2.0"); -__asm__(".symver _sys_siglist,_sys_siglist@GLIBC_2.0"); __asm__(".symver clnt_pcreateerror,clnt_pcreateerror@GLIBC_2.0"); __asm__(".symver clnt_spcreateerror,clnt_spcreateerror@GLIBC_2.0"); __asm__(".symver feupdateenv,feupdateenv@GLIBC_2.1"); __asm__(".symver lio_listio,lio_listio@GLIBC_2.1"); __asm__(".symver lio_listio64,lio_listio64@GLIBC_2.1"); +__asm__(".symver mkostemps,mkostemps@GLIBC_2.11"); +__asm__(".symver mkostemps64,mkostemps64@GLIBC_2.11"); __asm__(".symver nftw,nftw@GLIBC_2.1"); __asm__(".symver nftw64,nftw64@GLIBC_2.1"); __asm__(".symver posix_fadvise64,posix_fadvise64@GLIBC_2.2"); __asm__(".symver posix_fallocate64,posix_fallocate64@GLIBC_2.2"); +__asm__(".symver __ppoll_chk,__ppoll_chk@GLIBC_2.16"); __asm__(".symver pthread_cond_broadcast,pthread_cond_broadcast@GLIBC_2.0"); __asm__(".symver pthread_cond_destroy,pthread_cond_destroy@GLIBC_2.0"); __asm__(".symver pthread_cond_init,pthread_cond_init@GLIBC_2.0"); @@ -31,13 +26,11 @@ __asm__(".symver pthread_cond_timedwait,pthread_cond_timedwait@GLIBC_2.0"); __asm__(".symver pthread_cond_wait,pthread_cond_wait@GLIBC_2.0"); __asm__(".symver regexec,regexec@GLIBC_2.0"); __asm__(".symver rpc_createerr,rpc_createerr@GLIBC_2.0"); -__asm__(".symver sys_errlist,sys_errlist@GLIBC_2.0"); -__asm__(".symver sys_nerr,sys_nerr@GLIBC_2.0"); +__asm__(".symver __rpc_thread_createerr,__rpc_thread_createerr@GLIBC_2.2.3"); __asm__(".symver sys_sigabbrev,sys_sigabbrev@GLIBC_2.0"); +__asm__(".symver _sys_siglist,_sys_siglist@GLIBC_2.0"); __asm__(".symver sys_siglist,sys_siglist@GLIBC_2.0"); __asm__(".symver vm86,vm86@GLIBC_2.0"); -__asm__(".symver __rpc_thread_createerr,__rpc_thread_createerr@GLIBC_2.2.3"); -__asm__(".symver __guard,__guard@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __gethostname_chk,__gethostname_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver epoll_create,epoll_create@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __getdomainname_chk,__getdomainname_chk@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -62,8 +55,8 @@ __asm__(".symver readlinkat,readlinkat@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __wctomb_chk,__wctomb_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __readlink_chk,__readlink_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver setipv4sourcefilter,setipv4sourcefilter@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __isoc99_sscanf,__isoc99_sscanf@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __getlogin_r_chk,__getlogin_r_chk@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver __isoc99_sscanf,__isoc99_sscanf@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver sync_file_range,sync_file_range@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __open64_2,__open64_2@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_rth_init,inet6_rth_init@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -92,14 +85,14 @@ __asm__(".symver __confstr_chk,__confstr_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __wcsncat_chk,__wcsncat_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver setsourcefilter,setsourcefilter@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver xdr_u_quad_t,xdr_u_quad_t@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __fread_unlocked_chk,__fread_unlocked_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver eaccess,eaccess@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver __fread_unlocked_chk,__fread_unlocked_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_option_alloc,inet6_option_alloc@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __openat64_2,__openat64_2@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver sched_setaffinity,sched_setaffinity@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_option_append,inet6_option_append@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver futimens,futimens@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver renameat,renameat@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver futimens,futimens@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __wmemset_chk,__wmemset_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_opt_get_val,inet6_opt_get_val@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver unshare,unshare@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -156,7 +149,6 @@ __asm__(".symver __strncat_chk,__strncat_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_rth_space,inet6_rth_space@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __recv_chk,__recv_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_rth_reverse,inet6_rth_reverse@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __stack_smash_handler,__stack_smash_handler@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __realpath_chk,__realpath_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver qsort_r,qsort_r@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __obstack_printf_chk,__obstack_printf_chk@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -165,8 +157,8 @@ __asm__(".symver splice,splice@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver eventfd_write,eventfd_write@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver vmsplice,vmsplice@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver getsourcefilter,getsourcefilter@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __isoc99_vwscanf,__isoc99_vwscanf@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver epoll_ctl,epoll_ctl@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver __isoc99_vwscanf,__isoc99_vwscanf@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver gnu_dev_minor,gnu_dev_minor@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __memcpy_chk,__memcpy_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __isoc99_vfscanf,__isoc99_vfscanf@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -202,7 +194,6 @@ __asm__(".symver pipe2,pipe2@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __strcat_chk,__strcat_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver faccessat,faccessat@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __asprintf_chk,__asprintf_chk@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver ppoll,ppoll@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __recvfrom_chk,__recvfrom_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver inet6_opt_set_val,inet6_opt_set_val@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __ptsname_r_chk,__ptsname_r_chk@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -216,29 +207,29 @@ __asm__(".symver __readlinkat_chk,__readlinkat_chk@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver dlmopen,dlmopen@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver dladdr1,dladdr1@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver dlinfo,dlinfo@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutexattr_getprotocol,pthread_mutexattr_getprotocol@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutex_setprioceiling,pthread_mutex_setprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutexattr_setprioceiling,pthread_mutexattr_setprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __pthread_unregister_cancel_restore,__pthread_unregister_cancel_restore@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_attr_setaffinity_np,pthread_attr_setaffinity_np@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __pthread_cleanup_routine,__pthread_cleanup_routine@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_timedjoin_np,pthread_timedjoin_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_tryjoin_np,pthread_tryjoin_np@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver pthread_condattr_getclock,pthread_condattr_getclock@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver __pthread_register_cancel_defer,__pthread_register_cancel_defer@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_attr_setaffinity_np,pthread_attr_setaffinity_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_attr_getaffinity_np,pthread_attr_getaffinity_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_condattr_setclock,pthread_condattr_setclock@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutexattr_setprotocol,pthread_mutexattr_setprotocol@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __pthread_unwind_next,__pthread_unwind_next@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_timedjoin_np,pthread_timedjoin_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutex_consistent_np,pthread_mutex_consistent_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutexattr_getrobust_np,pthread_mutexattr_getrobust_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver __pthread_unregister_cancel_restore,__pthread_unregister_cancel_restore@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutexattr_getprotocol,pthread_mutexattr_getprotocol@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver pthread_setaffinity_np,pthread_setaffinity_np@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutex_getprioceiling,pthread_mutex_getprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutexattr_getprioceiling,pthread_mutexattr_getprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_attr_getaffinity_np,pthread_attr_getaffinity_np@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver pthread_barrierattr_getpshared,pthread_barrierattr_getpshared@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_condattr_setclock,pthread_condattr_setclock@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_tryjoin_np,pthread_tryjoin_np@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_setschedprio,pthread_setschedprio@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver pthread_getaffinity_np,pthread_getaffinity_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver __pthread_register_cancel_defer,__pthread_register_cancel_defer@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver __pthread_cleanup_routine,__pthread_cleanup_routine@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutexattr_getprioceiling,pthread_mutexattr_getprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutexattr_setprioceiling,pthread_mutexattr_setprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutex_setprioceiling,pthread_mutex_setprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver pthread_mutexattr_setrobust_np,pthread_mutexattr_setrobust_np@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutexattr_getrobust_np,pthread_mutexattr_getrobust_np@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutexattr_setprotocol,pthread_mutexattr_setprotocol@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver pthread_mutex_consistent_np,pthread_mutex_consistent_np@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_mutex_getprioceiling,pthread_mutex_getprioceiling@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver pthread_setschedprio,pthread_setschedprio@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_put16,ns_put16@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_name_pton,ns_name_pton@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_name_skip,ns_name_skip@GLIBC_DONT_USE_THIS_SYMBOL"); @@ -264,8 +255,8 @@ __asm__(".symver ns_name_rollback,ns_name_rollback@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_samename,ns_samename@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_name_uncompress,ns_name_uncompress@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_subdomain,ns_subdomain@GLIBC_DONT_USE_THIS_SYMBOL"); -__asm__(".symver ns_makecanon,ns_makecanon@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver ns_initparse,ns_initparse@GLIBC_DONT_USE_THIS_SYMBOL"); +__asm__(".symver ns_makecanon,ns_makecanon@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver mq_open,mq_open@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver __mq_open_2,__mq_open_2@GLIBC_DONT_USE_THIS_SYMBOL"); __asm__(".symver mq_timedsend,mq_timedsend@GLIBC_DONT_USE_THIS_SYMBOL"); diff --git a/tools/apbuild/buildlist b/tools/apbuild/buildlist deleted file mode 100755 index be6443c2..00000000 --- a/tools/apbuild/buildlist +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -# get a list of all symbols - YOU MUST RUN THIS SCRIPT WITH THE LATEST VERSIONS OF GLIBC -# currently blacklists all newer than 2.3.0 - -if [ -e syms ]; then rm syms; fi -if [ -e allsym ]; then rm allsym; fi - -host=`gcc -v 2>&1 | grep 'Target:' | sed 's/Target: //'` -for f in /lib/* /lib/$host/*; do - if [ ! -f $f ]; then continue; fi - readelf -s --wide $f >>syms - objdump -T $f | grep "GLIBC_" | sed 's/\(.*\)GLIBC_//; s/)//' | grep -v PRIVATE | column -t >>allsym -done - - -# get a list of all symbol versions only available in 2.3+ -grep @@GLIBC_ syms | awk ' { print $8 } ' | sed 's/@@/ /; /GLIBC_P/d; s/GLIBC_//' | awk ' { if ($2 > 2.3) print $1 " " $2 } ' | column -t >glibc2.4.syms - -# select the symbols that already existed, but were obsoleted by 2.2+ versions -cat glibc2.4.syms | awk '{print $1}' | while read; do grep $REPLY allsym; done | sed '/2\.4/d' >syms-to-header - -# select the latest symbols of that set -# build a header from them -cat syms-to-header | awk '{print $2 " " $1 }' | sort | uniq >output -cat glibc2.4.syms | sort | uniq >> output - -cat output | sort | uniq | awk '{print $2 " " $1}' | sort -k2,1 | awk '{ if ($1 <= 2.3) print $1 " " $2 }' | column -t | sort -k2 | uniq -f1 >output2 - -# output the symbols that are brand new to 2.3+, ie not the ones that had earlier versions -cat glibc2.4.syms | awk '{ print $1 }' | while read; do if ! grep "$REPLY" output2 >/dev/null; then echo "DONT_USE_THIS_SYMBOL $REPLY" >>output2; fi; done; - -cat output2 | column -t | awk '{ print "__asm__(\".symver " $2 "," $2 "@GLIBC_" $1 "\");" }' > output - -# now remove dl_iterate_phdr as it's weak anyway (we should probably do this for all weak syms) -cat output | sed 's/__asm__("\.symver dl_iterate_phdr.*//' >output2 - -cat <apsymbols.h -/* apbuild embedded metadata */ -#define APBUILD_NOTE_METADATA(s) \ - __asm__(".section .metadata, \"MS\", @note, 1\n\t.string \"" s "\"\n\t.previous\n\t") - -#ifdef APBUILD_VERSION -APBUILD_NOTE_METADATA("apbuild.version=" APBUILD_VERSION); -#endif - -/* apbuild generated symbol exclusion list */ -EOF -cat output2 >> apsymbols.h -rm output2 diff --git a/tools/apbuild/buildlist.i686 b/tools/apbuild/buildlist.i686 new file mode 100755 index 00000000..542c371f --- /dev/null +++ b/tools/apbuild/buildlist.i686 @@ -0,0 +1,51 @@ +#!/bin/bash + +# get a list of all symbols - YOU MUST RUN THIS SCRIPT WITH THE LATEST VERSIONS OF GLIBC +# currently blacklists all newer than 2.3.0 + +if [ -e syms ]; then rm syms; fi +if [ -e allsym ]; then rm allsym; fi + +#host=`gcc -v 2>&1 | grep 'Target:' | sed 's/Target: //'` +host=i386-linux-gnu +for f in /lib/$host/*; do + if [ ! -f $f ]; then continue; fi + readelf -s --wide $f >>syms + objdump -T $f | grep "GLIBC_" | sed 's/\(.*\)GLIBC_//; s/)//' | grep -v PRIVATE | column -t >>allsym +done + + +# get a list of all symbol versions only available in 2.3+ +grep @@GLIBC_ syms | awk ' { print $8 } ' | sed 's/@@/ /; /GLIBC_P/d; s/GLIBC_//' | awk ' { if ($2 > 2.3) print $1 " " $2 } ' | column -t >glibc2.4.syms + +# select the symbols that already existed, but were obsoleted by 2.2+ versions +cat glibc2.4.syms | awk '{print $1}' | while read; do grep $REPLY allsym; done | sed '/2\.4/d' >syms-to-header + +# select the latest symbols of that set +# build a header from them +cat syms-to-header | awk '{print $2 " " $1 }' | sort | uniq >output +cat glibc2.4.syms | sort | uniq >> output + +cat output | sort | uniq | awk '{print $2 " " $1}' | sort -k2,1 | awk '{ if ($1 <= 2.3) print $1 " " $2 }' | column -t | sort -k2 | uniq -f1 >output2 + +# output the symbols that are brand new to 2.3+, ie not the ones that had earlier versions +cat glibc2.4.syms | awk '{ print $1 }' | while read; do if ! grep "$REPLY" output2 >/dev/null; then echo "DONT_USE_THIS_SYMBOL $REPLY" >>output2; fi; done; + +cat output2 | column -t | awk '{ print "__asm__(\".symver " $2 "," $2 "@GLIBC_" $1 "\");" }' > output + +# now remove dl_iterate_phdr as it's weak anyway (we should probably do this for all weak syms) +cat output | sed 's/__asm__("\.symver dl_iterate_phdr.*//' >output2 + +cat <apsymbols.h.i686 +/* apbuild embedded metadata */ +#define APBUILD_NOTE_METADATA(s) \ + __asm__(".section .metadata, \"MS\", @note, 1\n\t.string \"" s "\"\n\t.previous\n\t") + +#ifdef APBUILD_VERSION +APBUILD_NOTE_METADATA("apbuild.version=" APBUILD_VERSION); +#endif + +/* apbuild generated symbol exclusion list */ +EOF +cat output2 >> apsymbols.h.i686 +rm output2 diff --git a/tools/apbuild/buildlist.x86_64 b/tools/apbuild/buildlist.x86_64 new file mode 100755 index 00000000..65682254 --- /dev/null +++ b/tools/apbuild/buildlist.x86_64 @@ -0,0 +1,51 @@ +#!/bin/bash + +# get a list of all symbols - YOU MUST RUN THIS SCRIPT WITH THE LATEST VERSIONS OF GLIBC +# currently blacklists all newer than 2.3.0 + +if [ -e syms ]; then rm syms; fi +if [ -e allsym ]; then rm allsym; fi + +#host=`gcc -v 2>&1 | grep 'Target:' | sed 's/Target: //'` +host=x86_64-linux-gnu +for f in /lib/* /lib/$host/*; do + if [ ! -f $f ]; then continue; fi + readelf -s --wide $f >>syms + objdump -T $f | grep "GLIBC_" | sed 's/\(.*\)GLIBC_//; s/)//' | grep -v PRIVATE | column -t >>allsym +done + + +# get a list of all symbol versions only available in 2.3+ +grep @GLIBC_ syms | awk ' { print $8 } ' | sed 's/@/ /; /GLIBC_P/d; s/GLIBC_//' | awk ' { if ($2 > 2.3) print $1 " " $2 } ' | column -t >glibc2.4.syms + +# select the symbols that already existed, but were obsoleted by 2.2+ versions +cat glibc2.4.syms | awk '{print $1}' | while read; do grep $REPLY allsym; done | sed '/2\.4/d' >syms-to-header + +# select the latest symbols of that set +# build a header from them +cat syms-to-header | awk '{print $2 " " $1 }' | sort | uniq >output +cat glibc2.4.syms | sort | uniq >> output + +cat output | sort | uniq | awk '{print $2 " " $1}' | sort -k2,1 | awk '{ if ($1 <= 2.3) print $1 " " $2 }' | column -t | sort -k2 | uniq -f1 >output2 + +# output the symbols that are brand new to 2.3+, ie not the ones that had earlier versions +cat glibc2.4.syms | awk '{ print $1 }' | while read; do if ! grep "$REPLY" output2 >/dev/null; then echo "DONT_USE_THIS_SYMBOL $REPLY" >>output2; fi; done; + +cat output2 | column -t | awk '{ print "__asm__(\".symver " $2 "," $2 "@GLIBC_" $1 "\");" }' > output + +# now remove dl_iterate_phdr as it's weak anyway (we should probably do this for all weak syms) +cat output | sed 's/__asm__("\.symver dl_iterate_phdr.*//' >output2 + +cat <apsymbols.h.x86_64 +/* apbuild embedded metadata */ +#define APBUILD_NOTE_METADATA(s) \ + __asm__(".section .metadata, \"MS\", @note, 1\n\t.string \"" s "\"\n\t.previous\n\t") + +#ifdef APBUILD_VERSION +APBUILD_NOTE_METADATA("apbuild.version=" APBUILD_VERSION); +#endif + +/* apbuild generated symbol exclusion list */ +EOF +cat output2 >> apsymbols.h.x86_64 +rm output2 diff --git a/tools/apbuild/ctype.h b/tools/apbuild/ctype.h index ee93b991..7629b42c 100644 --- a/tools/apbuild/ctype.h +++ b/tools/apbuild/ctype.h @@ -82,8 +82,8 @@ __asm__(".symver __ctype_tolower,__ctype_tolower@GLIBC_2.2.5"); __asm__(".symver __ctype_toupper,__ctype_toupper@GLIBC_2.2.5"); #else __asm__(".symver __ctype_b,__ctype_b@GLIBC_2.0"); -__asm__(".symver __ctype_tolower,__ctype_tolower@GLIBC_2.2.5"); -__asm__(".symver __ctype_toupper,__ctype_toupper@GLIBC_2.2.5"); +__asm__(".symver __ctype_tolower,__ctype_tolower@GLIBC_2.0"); +__asm__(".symver __ctype_toupper,__ctype_toupper@GLIBC_2.0"); #endif #define __isctype(c, type) \ -- cgit v1.2.3