aboutsummaryrefslogtreecommitdiff
path: root/elf
AgeCommit message (Collapse)Author
2016-08-03elf: Do not use memalign for TCB/TLS blocks allocation [BZ #17730]Florian Weimer
Instead, call malloc and explicitly align the pointer. There is no external location to store the original (unaligned) pointer, and this commit increases the allocation size to store the pointer at a fixed location relative to the TCB pointer. The manual alignment means that some space goes unused which was previously made available for subsequent allocations. However, in the TLS_DTV_AT_TP case, the manual alignment code avoids aligning the pre-TCB to the TLS block alignment. (Even while using memalign, the allocation had some unused padding in front.) This concludes the removal of memalign calls from the TLS code, and the new tst-tls3-malloc test verifies that only core malloc routines are used.
2016-08-03elf: Avoid using memalign for TLS allocations [BZ #17730]Florian Weimer
Instead of a flag which indicates the pointer can be freed, dtv_t now includes the pointer which should be freed. Due to padding, the size of dtv_t does not increase. To avoid using memalign, the new allocate_dtv_entry function allocates a sufficiently large buffer so that a sub-buffer can be found in it which starts with an aligned pointer. Both the aligned and original pointers are kept, the latter for calling free later.
2016-08-03elf: dl-minimal malloc needs to respect fundamental alignmentFlorian Weimer
The dynamic linker currently uses __libc_memalign for TLS-related allocations. The goal is to switch to malloc instead. If the minimal malloc follows the ABI fundamental alignment, we can assume that malloc provides this alignment, and thus skip explicit alignment in a few cases as an optimization. It was requested on libc-alpha that MALLOC_ALIGNMENT should be used, although this results in wasted space if MALLOC_ALIGNMENT is larger than the fundamental alignment. (The dynamic linker cannot assume that the non-minimal malloc will provide an alignment of MALLOC_ALIGNMENT; the ABI provides _Alignof (max_align_t) only.)
2016-07-19elf/elf.h: Add missing Meta relocationsWill Newton
2016-07-19 Will Newton <will.newton@gmail.com> * elf/elf.h (R_METAG_REL8, R_METAG_REL16, R_METAG_TLS_GD R_METAG_TLS_LDM, R_METAG_TLS_LDO_HI16, R_METAG_TLS_LDO_LO16, R_METAG_TLS_LDO, R_METAG_TLS_IE, R_METAG_TLS_IENONPIC, R_METAG_TLS_IENONPIC_HI16, R_METAG_TLS_IENONPIC_LO16, R_METAG_TLS_LE, R_METAG_TLS_LE_HI16, R_METAG_TLS_LE_LO16): New.
2016-07-18elf: Define missing Meta architecture specific relocationsKhem Raj
2016-07-12x86-64: Properly align stack in _dl_tlsdesc_dynamic [BZ #20309]H.J. Lu
Since _dl_tlsdesc_dynamic is called via PLT, we need to add 8 bytes for push in the PLT entry to align the stack. [BZ #20309] * configure.ac (have-mtls-dialect-gnu2): Set to yes if -mtls-dialect=gnu2 works. * configure: Regenerated. * elf/Makefile [have-mtls-dialect-gnu2 = yes] (tests): Add tst-gnu2-tls1. (modules-names): Add tst-gnu2-tls1mod. ($(objpfx)tst-gnu2-tls1): New. (tst-gnu2-tls1mod.so-no-z-defs): Likewise. (CFLAGS-tst-gnu2-tls1mod.c): Likewise. * elf/tst-gnu2-tls1.c: New file. * elf/tst-gnu2-tls1mod.c: Likewise. * sysdeps/x86_64/dl-tlsdesc.S (_dl_tlsdesc_dynamic): Add 8 bytes for push in the PLT entry to align the stack.
2016-07-01Treat STV_HIDDEN and STV_INTERNAL symbols as STB_LOCALMaciej W. Rozycki
In a reference to PR ld/19908 make ld.so respect symbol export classes aka visibility and treat STV_HIDDEN and STV_INTERNAL symbols as local, preventing such symbols from preempting exported symbols. According to the ELF gABI[1] neither STV_HIDDEN nor STV_INTERNAL symbols are supposed to be present in linked binaries: "A hidden symbol contained in a relocatable object must be either removed or converted to STB_LOCAL binding by the link-editor when the relocatable object is included in an executable file or shared object." "An internal symbol contained in a relocatable object must be either removed or converted to STB_LOCAL binding by the link-editor when the relocatable object is included in an executable file or shared object." however some GNU binutils versions produce such symbols in some cases. PR ld/19908 is one and we also have this note in scripts/abilist.awk: so clearly there is linked code out there which contains such symbols which is prone to symbol table misinterpretation, and it'll be more productive if we handle this gracefully, under the Robustness Principle: "be liberal in what you accept, and conservative in what you produce", especially as this is a simple (STV_HIDDEN|STV_INTERNAL) => STB_LOCAL mapping. References: [1] "System V Application Binary Interface - DRAFT - 24 April 2001", The Santa Cruz Operation, Inc., "Symbol Table", <http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html> * sysdeps/generic/ldsodefs.h (dl_symbol_visibility_binds_local_p): New inline function. * elf/dl-addr.c (determine_info): Treat hidden and internal symbols as local. * elf/dl-lookup.c (do_lookup_x): Likewise. * elf/dl-reloc.c (RESOLVE_MAP): Likewise.
2016-06-28elf.h: Add declarations for BPFRichard Henderson
The EM_BPF number has been officially assigned, though it has not yet been posted to the gabi webpage yet. * elf/elf.h (EM_BPF): New. (EM_NUM): Update. (R_BPF_NONE, R_BPF_MAP_FD): New.
2016-06-28elf.h: Sync with the gabi webpageRichard Henderson
http://www.sco.com/developers/gabi/latest/ch4.eheader.html Retrieved 2016-06-20. * elf/elf.h (EM_IAMCU, EM_SPU, EM_PDP10, EM_PDP11, EM_ARC_COMPACT, EM_VIDEOCORE, EM_TMM_GPP, EM_NS32K, EM_TPC, EM_SNP1K, EM_ST200, EM_IP2K, EM_MAX, EM_CR, EM_F2MC16, EM_MSP430, EM_BLACKFIN, EM_SE_C33, EM_SEP, EM_ARCA, EM_UNICORE, EM_EXCESS, EM_DXP, EM_ALTERA_NIOS2, EM_CRX, EM_XGATE, EM_C166, EM_M16C, EM_DSPIC30F, EM_CE, EM_M32C, EM_TSK3000, EM_RS08, EM_SHARC, EM_ECOG2, EM_SCORE7, EM_DSP24, EM_VIDEOCORE3, EM_LATTICEMICO32, EM_SE_C17, EM_TI_C6000, EM_TI_C2000, EM_TI_C5500, EM_TI_ARP32, EM_TI_PRU, EM_MMDSP_PLUS, EM_CYPRESS_M8C, EM_R32C, EM_TRIMEDIA, EM_QDSP6, EM_8051, EM_STXP7X, EM_NDS32, EM_ECOG1X, EM_MAXQ30, EM_XIMO16, EM_MANIK, EM_CRAYNV2, EM_RX, EM_METAG, EM_MCST_ELBRUS, EM_ECOG16, EM_CR16, EM_ETPU, EM_SLE9X, EM_L10M, EM_K10M, EM_AVR32, EM_STM8, EM_TILE64, EM_CUDA, EM_CLOUDSHIELD, EM_COREA_1ST, EM_COREA_2ND, EM_ARC_COMPACT2, EM_OPEN8, EM_RL78, EM_VIDEOCORE5, EM_78KOR, EM_56800EX, EM_BA1, EM_BA2, EM_XCORE, EM_MCHP_PIC, EM_KM32, EM_KMX32, EM_EMX16, EM_EMX8, EM_KVARC, EM_CDP, EM_COGE, EM_COOL, EM_NORC, EM_CSR_KALIMBA, EM_Z80, EM_VISIUM, EM_FT32, EM_MOXIE, EM_AMDGPU, EM_RISCV): New. (EM_NUM): Update.
2016-04-23Reduce number of mmap calls from __libc_memalign in ld.soH.J. Lu
__libc_memalign in ld.so allocates one page at a time and tries to optimize consecutive __libc_memalign calls by hoping that the next mmap is after the current memory allocation. However, the kernel hands out mmap addresses in top-down order, so this optimization in practice never happens, with the result that we have more mmap calls and waste a bunch of space for each __libc_memalign. This change makes __libc_memalign to mmap one page extra. Worst case, the kernel never puts a backing page behind it, but best case it allows __libc_memalign to operate much much better. For elf/tst-align --direct, it reduces number of mmap calls from 12 to 9. * elf/dl-minimal.c (__libc_memalign): Mmap one extra page.
2016-04-13Register extra test objectsAndreas Schwab
This makes sure that the extra test objects are compiled with the correct MODULE_NAME and dependencies are tracked.
2016-04-09Allow overriding of CFLAGS as well as CPPFLAGS for rtld.Nick Alcock
We need this to pass -fno-stack-protector to all the pieces of rtld in non-elf/ directories.
2016-03-31Fix tst-dlsym-error buildAdhemerval Zanella
This patch fixes the new test tst-dlsym-error build on aarch64 (and possible other architectures as well) due missing strchrnul definition. * elf/tst-dlsym-error.c: Include <string.h> for strchrnul.
2016-03-31Report dlsym, dlvsym lookup errors using dlerror [BZ #19509]Florian Weimer
* elf/dl-lookup.c (_dl_lookup_symbol_x): Report error even if skip_map != NULL. * elf/tst-dlsym-error.c: New file. * elf/Makefile (tests): Add tst-dlsym-error. (tst-dlsym-error): Link against libdl.
2016-03-07ldconfig: Do not remove stale symbolic links with -X [BZ #19610]Florian Weimer
2016-03-07sln: use stat64Hongjiu Zhang
When using sln on some filesystems which return 64-bit inodes, the stat call might fail during install like so: .../elf/sln .../elf/symlink.list /lib32/libc.so.6: invalid destination: Value too large for defined data type /lib32/ld-linux.so.2: invalid destination: Value too large for defined data type Makefile:104: recipe for target 'install-symbolic-link' failed Switch to using stat64 all the time to avoid this. URL: https://bugs.gentoo.org/576396
2016-02-24Enable --localedir to set message catalog directory (Bug 14259)Carlos O'Donell
In 1999 the project split "localedir" into "localedir" (path to compiled locale archives) and "msgcatdir" (path to message catalogs). This predates the 2002 change in the GNU Coding Standard to document the use of "localedir" for the path to the message catalogs. It appears that newlib, gcc, and several other projects also used "msgcatdir" at one point or another in the past, and so it is in line with historical precedent that glibc would also use "msgcatdir." However, given that the GNU Coding Standard uses "localedir", we will switch to that for consistency as a GNU project. Previous uses of --localdir didn't work anyway (see bug 14259). I am committing this patch in the understanding that nobody would object to fixing #14259 as part of aligning our variable usage to the GNU Coding Standard. Given that previous "localedir" uses were converted to "complocaledir" by [1], we can now convert "msgcatdir" to "localedir" and complete the transition. With an addition to config.make.in we also fix bug 14259 and allow users to specify the locale dependent data directory with "--localedir" at configure time. There is still no way to control at configure time the location of the *compiled* locale directory. Tested on x86_64 with no regressions. Tested using "--localedir" to specify alternate locale dependent data directory and verified with "make install DESTDIR=/tmp/glibc". [1] 90fe682d3067163aa773feecf497ef599429457a
2016-02-19elf.h: Add NT_ARM_SYSTEM_CALL constant.Mark Wielaard
Linux kernel 3.18 added the NT_ARM_SYSTEM_CALL regset for aarch64. * elf/elf.h: Add NT_ARM_SYSTEM_CALL.
2016-02-19elf/elf.h: Add new 386 and X86_64 relocations from binutils.Mark Wielaard
The following new 386 and X86_64 were added to binutils. They are non-dynamic relocations, so don't need direct handling in glibc. But other programs, like elfutils, use the glibc elf.h definitions for the names and numbers when inspecting ET_REL files. R_386_GOT32X was proposed in https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0 There also used to be R_X86_64_PC32_BND and R_X86_64_PLT32_BND but those already got deprecated in https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ * elf/elf.h (R_386_GOT32X): New. (R_386_NUM): Update. (R_X86_64_GOTPCRELX: New. (R_X86_64_REX_GOTPCRELX): New. (R_X86_64_NUM): Update.
2016-01-31Revert "elf/elf.h: Add new 386 and X86_64 relocations from binutils."Mark Wielaard
This reverts commit 3da75f08818fa3d217e5d566477c7001cb774792. glibc 2.23 hard freeze doesn't allow this change at this time.
2016-01-31elf/elf.h: Add new 386 and X86_64 relocations from binutils.Mark Wielaard
The following new 386 and X86_64 were added to binutils. They are non-dynamic relocations, so don't need direct handling in glibc. But other programs, like elfutils, use the glibc elf.h definitions for the names and numbers when inspecting ET_REL files. R_386_GOT32X was proposed in https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0 There also used to be R_X86_64_PC32_BND and R_X86_64_PLT32_BND but those already got deprecated in https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ * elf/elf.h (R_386_GOT32X): New. (R_386_NUM): Update. (R_X86_64_GOTPCRELX: New. (R_X86_64_REX_GOTPCRELX): New. (R_X86_64_NUM): Update.
2016-01-07Make shebang interpreter directives consistentMarko Myllynen
2016-01-04Update copyright dates not handled by scripts/update-copyrights.Joseph Myers
I've updated copyright dates in glibc for 2016. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files. * NEWS: Update copyright dates. * catgets/gencat.c (print_version): Likewise. * csu/version.c (banner): Likewise. * debug/catchsegv.sh: Likewise. * debug/pcprofiledump.c (print_version): Likewise. * debug/xtrace.sh (do_version): Likewise. * elf/ldconfig.c (print_version): Likewise. * elf/ldd.bash.in: Likewise. * elf/pldd.c (print_version): Likewise. * elf/sotruss.sh: Likewise. * elf/sprof.c (print_version): Likewise. * iconv/iconv_prog.c (print_version): Likewise. * iconv/iconvconfig.c (print_version): Likewise. * locale/programs/locale.c (print_version): Likewise. * locale/programs/localedef.c (print_version): Likewise. * login/programs/pt_chown.c (print_version): Likewise. * malloc/memusage.sh (do_version): Likewise. * malloc/memusagestat.c (print_version): Likewise. * malloc/mtrace.pl: Likewise. * manual/libc.texinfo: Likewise. * nptl/version.c (banner): Likewise. * nscd/nscd.c (print_version): Likewise. * nss/getent.c (print_version): Likewise. * nss/makedb.c (print_version): Likewise. * posix/getconf.c (main): Likewise. * scripts/test-installation.pl: Likewise. * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
2016-01-04Update copyright dates with scripts/update-copyrights.Joseph Myers
2015-11-24Implement "make update-all-abi"Florian Weimer
* scripts/update-abilist.sh: New file. * Makefile (+subdir_targets): Add subdir_update-all-abi. * Makerules (update-all-abi-%, update-all-abi) (subdir_update-all-abi): New targets. * elf/Makefile (update-all-abi): New target.
2015-11-14Run tst-prelink test for GLOB_DAT relocH.J. Lu
Run tst-prelink test on targets with GLOB_DAT relocaton. * config.make.in (have-glob-dat-reloc): New. * configure.ac (libc_cv_has_glob_dat): New. Set to yes if target supports GLOB_DAT relocaton. AC_SUBST. * configure: Regenerated. * elf/Makefile (tests): Add tst-prelink. (tests-special): Add $(objpfx)tst-prelink-cmp.out. (tst-prelink-ENV): New. ($(objpfx)tst-prelink-conflict.out): Likewise. ($(objpfx)tst-prelink-cmp.out): Likewise. * sysdeps/x86/tst-prelink.c: Moved to ... * elf/tst-prelink.c: Here. * sysdeps/x86/tst-prelink.exp: Moved to ... * elf/tst-prelink.exp: Here. * sysdeps/x86/Makefile (tests): Don't add tst-prelink. (tst-prelink-ENV): Removed. ($(objpfx)tst-prelink-conflict.out): Likewise. ($(objpfx)tst-prelink-cmp.out): Likewise. (tests-special): Don't add $(objpfx)tst-prelink-cmp.out.
2015-11-10NaCl: Use open_resource API for shared objectsRoland McGrath
2015-11-09ld.so: Add original DSO name if overridden by audit module [BZ #18251]Florian Weimer
* elf/dl-load.c (_dl_map_object_from_fd): Add additional parameter for original name of the DSO. Add it to the name list of the DSO if it is actually given. (_dl_map_object): Keep track of whether an audit module rewrote the file name. If yes, pass the original name to _dl_map_object_from_fd in a new parameter, otherwise NULL. When debugging is enabled, log the change of the file name. * sysdeps/mach/hur/dl-sysdep.c: Adjust commented-out call to _dl_map_object_from_fd. * elf/Makefile: Build and run tst-audit11 and tst-audit12. * elf/tst-audit11.c: New file * elf/tst-auditmod11.c: New file. * elf/tst-audit11mod1.c: New file. * elf/tst-audit11mod2.c: New file. * elf/tst-audit11mod2.map: New file. * elf/tst-audit12.c: New file * elf/tst-auditmod12.c: New file. * elf/tst-audit12mod1.c: New file. * elf/tst-audit12mod2.c: New file. * elf/tst-audit12mod2.map: New file. * elf/tst-audit12mod3.c: New file.
2015-11-07Keep only ELF_RTYPE_CLASS_{PLT|COPY} bits for prelinkH.J. Lu
prelink runs ld.so with the environment variable LD_TRACE_PRELINKING set to dump the relocation type class from _dl_debug_bindings. prelink has the following relocation type classes: #define RTYPE_CLASS_VALID 8 #define RTYPE_CLASS_PLT (8|1) #define RTYPE_CLASS_COPY (8|2) #define RTYPE_CLASS_TLS (8|4) where ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA has a conflict with RTYPE_CLASS_TLS. Since prelink only uses ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits, we should clear the other bits when the DL_DEBUG_PRELINK bit is set. [BZ #19178] * elf/dl-lookup.c (RTYPE_CLASS_VALID): New. (RTYPE_CLASS_PLT): Likewise. (RTYPE_CLASS_COPY): Likewise. (RTYPE_CLASS_TLS): Likewise. (_dl_debug_bindings): Use RTYPE_CLASS_TLS and RTYPE_CLASS_VALID to set relocation type class for DL_DEBUG_PRELINK. Keep only ELF_RTYPE_CLASS_PLT and ELF_RTYPE_CLASS_COPY bits for DL_DEBUG_PRELINK.
2015-10-29_dl_fini: Rewrite to use VLA instead of extend_allocaFlorian Weimer
In this case, extend_alloca is used to work around the lack of deallocation on scope exit. A VLA is automatically deallocated in this way, so it is the more fitting approach. To implement this, it is necessary to eliminate the goto. In addition, this change eliminates the trivially-true assert; the assert is always skipped if nloaded > 0. * elf/dl-fini.c (_dl_fini): Rewrite to use variable-length array instead of extend_alloca. Change control flow to avoid a goto. Remove assert which is trivially always true.
2015-10-27Add AT_PLATFORM to _dl_aux_init ()Carlos Eduardo Seo
Added AT_PLATFORM to _dl_aux_init () function to keep it in sync with _dl_sysdep_start (). * elf/dl-support.c (_dl_aux_init): Added AT_PLATFORM to the case statement.
2015-10-20Convert 113 more function definitions to prototype style (files with ↵Joseph Myers
assertions). This mostly automatically-generated patch converts 113 function definitions in glibc from old-style K&R to prototype-style. Following my other recent such patches, this one deals with the case of function definitions in files that either contain assertions or where grep suggested they might contain assertions - and thus where it isn't possible to use a simple object code comparison as a sanity check on the correctness of the patch, because line numbers are changed. A few such automatically-generated changes needed to be supplemented by manual changes for the result to compile. openat64 had a prototype declaration with "..." but an old-style definition in sysdeps/unix/sysv/linux/dl-openat64.c, and "..." needed adding to the generated prototype in the definition (I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68024> for diagnosing such cases in GCC; the old state was undefined behavior not requiring a diagnostic, but one seems a good idea). In addition, as Florian has noted regparm attribute mismatches between declaration and definition are only diagnosed for prototype definitions, and five functions needed internal_function added to their definitions (in the case of __pthread_mutex_cond_lock, via the macro definition of __pthread_mutex_lock) to compile on i386. After this patch is in, remaining old-style definitions are probably most readily fixed manually before we can turn on -Wold-style-definition for all builds. Tested for x86_64 and x86 (testsuite). * crypt/md5-crypt.c (__md5_crypt_r): Convert to prototype-style function definition. * crypt/sha256-crypt.c (__sha256_crypt_r): Likewise. * crypt/sha512-crypt.c (__sha512_crypt_r): Likewise. * debug/backtracesyms.c (__backtrace_symbols): Likewise. * elf/dl-minimal.c (_itoa): Likewise. * hurd/hurdmalloc.c (malloc): Likewise. (free): Likewise. (realloc): Likewise. * inet/inet6_option.c (inet6_option_space): Likewise. (inet6_option_init): Likewise. (inet6_option_append): Likewise. (inet6_option_alloc): Likewise. (inet6_option_next): Likewise. (inet6_option_find): Likewise. * io/ftw.c (FTW_NAME): Likewise. (NFTW_NAME): Likewise. (NFTW_NEW_NAME): Likewise. (NFTW_OLD_NAME): Likewise. * libio/iofwide.c (_IO_fwide): Likewise. * libio/strops.c (_IO_str_init_static_internal): Likewise. (_IO_str_init_static): Likewise. (_IO_str_init_readonly): Likewise. (_IO_str_overflow): Likewise. (_IO_str_underflow): Likewise. (_IO_str_count): Likewise. (_IO_str_seekoff): Likewise. (_IO_str_pbackfail): Likewise. (_IO_str_finish): Likewise. * libio/wstrops.c (_IO_wstr_init_static): Likewise. (_IO_wstr_overflow): Likewise. (_IO_wstr_underflow): Likewise. (_IO_wstr_count): Likewise. (_IO_wstr_seekoff): Likewise. (_IO_wstr_pbackfail): Likewise. (_IO_wstr_finish): Likewise. * locale/programs/localedef.c (normalize_codeset): Likewise. * locale/programs/locarchive.c (add_locale_to_archive): Likewise. (add_locales_to_archive): Likewise. (delete_locales_from_archive): Likewise. * malloc/malloc.c (__libc_mallinfo): Likewise. * math/gen-auto-libm-tests.c (init_fp_formats): Likewise. * misc/tsearch.c (__tfind): Likewise. * nptl/pthread_attr_destroy.c (__pthread_attr_destroy): Likewise. * nptl/pthread_attr_getdetachstate.c (__pthread_attr_getdetachstate): Likewise. * nptl/pthread_attr_getguardsize.c (pthread_attr_getguardsize): Likewise. * nptl/pthread_attr_getinheritsched.c (__pthread_attr_getinheritsched): Likewise. * nptl/pthread_attr_getschedparam.c (__pthread_attr_getschedparam): Likewise. * nptl/pthread_attr_getschedpolicy.c (__pthread_attr_getschedpolicy): Likewise. * nptl/pthread_attr_getscope.c (__pthread_attr_getscope): Likewise. * nptl/pthread_attr_getstack.c (__pthread_attr_getstack): Likewise. * nptl/pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr): Likewise. * nptl/pthread_attr_getstacksize.c (__pthread_attr_getstacksize): Likewise. * nptl/pthread_attr_init.c (__pthread_attr_init_2_1): Likewise. (__pthread_attr_init_2_0): Likewise. * nptl/pthread_attr_setdetachstate.c (__pthread_attr_setdetachstate): Likewise. * nptl/pthread_attr_setguardsize.c (pthread_attr_setguardsize): Likewise. * nptl/pthread_attr_setinheritsched.c (__pthread_attr_setinheritsched): Likewise. * nptl/pthread_attr_setschedparam.c (__pthread_attr_setschedparam): Likewise. * nptl/pthread_attr_setschedpolicy.c (__pthread_attr_setschedpolicy): Likewise. * nptl/pthread_attr_setscope.c (__pthread_attr_setscope): Likewise. * nptl/pthread_attr_setstack.c (__pthread_attr_setstack): Likewise. * nptl/pthread_attr_setstackaddr.c (__pthread_attr_setstackaddr): Likewise. * nptl/pthread_attr_setstacksize.c (__pthread_attr_setstacksize): Likewise. * nptl/pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise. * nptl/pthread_create.c (__find_in_stack_list): Likewise. * nptl/pthread_getattr_np.c (pthread_getattr_np): Likewise. * nptl/pthread_mutex_cond_lock.c (__pthread_mutex_lock): Define to use internal_function. * nptl/pthread_mutex_init.c (__pthread_mutex_init): Convert to prototype-style function definition. * nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise. (__pthread_mutex_cond_lock_adjust): Likewise. Use internal_function. * nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock): Convert to prototype-style function definition. * nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock): Likewise. * nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Likewise. (__pthread_mutex_unlock): Likewise. * nptl_db/td_ta_clear_event.c (td_ta_clear_event): Likewise. * nptl_db/td_ta_set_event.c (td_ta_set_event): Likewise. * nptl_db/td_thr_clear_event.c (td_thr_clear_event): Likewise. * nptl_db/td_thr_event_enable.c (td_thr_event_enable): Likewise. * nptl_db/td_thr_set_event.c (td_thr_set_event): Likewise. * nss/makedb.c (process_input): Likewise. * posix/fnmatch.c (__strchrnul): Likewise. (__wcschrnul): Likewise. (fnmatch): Likewise. * posix/fnmatch_loop.c (FCT): Likewise. * posix/glob.c (globfree): Likewise. (__glob_pattern_type): Likewise. (__glob_pattern_p): Likewise. * posix/regcomp.c (re_compile_pattern): Likewise. (re_set_syntax): Likewise. (re_compile_fastmap): Likewise. (regcomp): Likewise. (regerror): Likewise. (regfree): Likewise. * posix/regexec.c (regexec): Likewise. (re_match): Likewise. (re_search): Likewise. (re_match_2): Likewise. (re_search_2): Likewise. (re_search_stub): Likewise. Use internal_function (re_copy_regs): Likewise. (re_set_registers): Convert to prototype-style function definition. (prune_impossible_nodes): Likewise. Use internal_function. * resolv/inet_net_pton.c (inet_net_pton): Convert to prototype-style function definition. (inet_net_pton_ipv4): Likewise. * stdlib/strtod_l.c (____STRTOF_INTERNAL): Likewise. * sysdeps/pthread/aio_cancel.c (aio_cancel): Likewise. * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise. * sysdeps/pthread/timer_delete.c (timer_delete): Likewise. * sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise. Make variadic. * time/strptime_l.c (localtime_r): Convert to prototype-style function definition. * wcsmbs/mbsnrtowcs.c (__mbsnrtowcs): Likewise. * wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Likewise. * wcsmbs/wcsnrtombs.c (__wcsnrtombs): Likewise. * wcsmbs/wcsrtombs.c (__wcsrtombs): Likewise.
2015-10-19Remove gnu_unique_object configure test.Joseph Myers
There is a configure test for assembler support for the gnu_unique_object symbol type. This support was added in binutils 2.20, so is present in all versions supported for building glibc. Thus, I think the configure test can be removed; this patch does so. Now, there is a caveat that the gas NEWS entry refers to this as a feature for GNU/Linux targets. But the condition is use of ELFOSABI_GNU or ELFOSABI_NONE. ELFOSABI_GNU covers Hurd as well as GNU/Linux (as was the case with the older ELFOSABI_LINUX name), and ELFOSABI_NONE means this is effectively OS-independent. Furthermore, I think a correct binutils port for any glibc target ought to support this feature for use with glibc; glibc supports this as an OS-independent feature (the configure test is only about glibc testcases). Tested for x86_64 (testsuite, and that installed shared libraries are unchanged by the patch). * configure.ac (libc_cv_asm_unique_object): Remove configure test. * configure: Regenerated. * config.h.in (HAVE_ASM_UNIQUE_OBJECT): Remove #undef. * elf/tst-unique1.c (do_test) [HAVE_ASM_UNIQUE_OBJECT]: Make code unconditional. * elf/tst-unique1mod1.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise. * elf/tst-unique1mod2.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise. * elf/tst-unique2.c (do_test) [HAVE_ASM_UNIQUE_OBJECT]: Likewise. (do_test) [!HAVE_ASM_UNIQUE_OBJECT]: Remove conditional code. * elf/tst-unique2mod1.c [HAVE_ASM_UNIQUE_OBJECT]: Make code unconditional. * elf/tst-unique2mod2.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise.
2015-10-16Convert 703 function definitions to prototype style.Joseph Myers
This automatically-generated patch converts 703 function definitions in glibc from old-style K&R to prototype-style. This conversion is deliberately simplistic, excluding any tricky cases as even a patch covering only simple cases is still very large. Currently excluded are: sysdeps files (to improve test coverage for the initial patch); files containing assertions (to avoid line number changes so that generated libraries can be compared); any cases where the generated function declaration would involve lines over 79 characters and so need to be wrapped; any cases with array parameters or other cases where parameter declarators don't end with the parameter name; any other cases that my script didn't parse. I didn't try to make the ChangeLog generation indicate when function definitions are conditional; it just lists the functions changed without regard to that. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * crypt/cert.c (good_bye): Convert to prototype-style function definition. (get8): Likewise. (put8): Likewise. * crypt/crypt-entry.c (crypt): Likewise. (__fcrypt): Likewise. * crypt/crypt_util.c (_ufc_prbits): Likewise. (_ufc_set_bits): Likewise. (_ufc_clearmem): Likewise. (__init_des_r): Likewise. (shuffle_sb): Likewise. (shuffle_sb): Likewise. (_ufc_setup_salt_r): Likewise. (_ufc_mk_keytab_r): Likewise. (_ufc_dofinalperm_r): Likewise. (encrypt): Likewise. (__setkey_r): Likewise. (setkey): Likewise. * crypt/md5.c (md5_init_ctx): Likewise. (md5_read_ctx): Likewise. (md5_finish_ctx): Likewise. (md5_stream): Likewise. (md5_buffer): Likewise. (md5_process_bytes): Likewise. * crypt/sha256.c (__sha256_init_ctx): Likewise. (__sha256_finish_ctx): Likewise. (__sha256_process_bytes): Likewise. * crypt/sha512.c (__sha512_init_ctx): Likewise. (__sha512_finish_ctx): Likewise. (__sha512_process_bytes): Likewise. * ctype/isctype.c (__isctype): Likewise. * debug/backtrace.c (__backtrace): Likewise. * debug/backtracesymsfd.c (__backtrace_symbols_fd): Likewise. * debug/fgets_chk.c (__fgets_chk): Likewise. * debug/fgets_u_chk.c (__fgets_unlocked_chk): Likewise. * debug/memcpy_chk.c (__memcpy_chk): Likewise. * debug/memmove_chk.c (MEMMOVE_CHK): Likewise. * debug/mempcpy_chk.c (__mempcpy_chk): Likewise. * debug/memset_chk.c (__memset_chk): Likewise. * debug/strcat_chk.c (__strcat_chk): Likewise. * debug/strncat_chk.c (__strncat_chk): Likewise. * debug/strncpy_chk.c (__strncpy_chk): Likewise. * debug/vsprintf_chk.c (_IO_str_chk_overflow): Likewise. * dirent/dirfd.c (dirfd): Likewise. * dirent/getdents.c (__getdirentries): Likewise. * dirent/getdents64.c (getdirentries64): Likewise. * dirent/rewinddir.c (__rewinddir): Likewise. * dirent/seekdir.c (seekdir): Likewise. * dirent/telldir.c (telldir): Likewise. * elf/sln.c (makesymlinks): Likewise. (makesymlink): Likewise. * gmon/gmon.c (__moncontrol): Likewise. (__monstartup): Likewise. (write_hist): Likewise. (write_call_graph): Likewise. (write_bb_counts): Likewise. * grp/setgroups.c (setgroups): Likewise. * inet/inet_lnaof.c (inet_lnaof): Likewise. * inet/inet_net.c (inet_network): Likewise. * inet/inet_netof.c (inet_netof): Likewise. * inet/rcmd.c (rresvport_af): Likewise. (rresvport): Likewise. * io/access.c (__access): Likewise. * io/chdir.c (__chdir): Likewise. * io/chmod.c (__chmod): Likewise. * io/chown.c (__chown): Likewise. * io/close.c (__close): Likewise. * io/creat.c (creat): Likewise. * io/creat64.c (creat64): Likewise. * io/dup.c (__dup): Likewise. * io/dup2.c (__dup2): Likewise. * io/dup3.c (__dup3): Likewise. * io/euidaccess.c (__euidaccess): Likewise. * io/faccessat.c (faccessat): Likewise. * io/fchmod.c (__fchmod): Likewise. * io/fchmodat.c (fchmodat): Likewise. * io/fchown.c (__fchown): Likewise. * io/fchownat.c (fchownat): Likewise. * io/fcntl.c (__fcntl): Likewise. * io/flock.c (__flock): Likewise. * io/fts.c (fts_load): Likewise. (fts_close): Likewise. (fts_read): Likewise. (fts_set): Likewise. (fts_children): Likewise. (fts_build): Likewise. (fts_stat): Likewise. (fts_sort): Likewise. (fts_alloc): Likewise. (fts_lfree): Likewise. (fts_palloc): Likewise. (fts_padjust): Likewise. (fts_maxarglen): Likewise. (fts_safe_changedir): Likewise. * io/getwd.c (getwd): Likewise. * io/isatty.c (__isatty): Likewise. * io/lchown.c (__lchown): Likewise. * io/link.c (__link): Likewise. * io/linkat.c (linkat): Likewise. * io/lseek.c (__libc_lseek): Likewise. * io/mkdir.c (__mkdir): Likewise. * io/mkdirat.c (mkdirat): Likewise. * io/mkfifo.c (mkfifo): Likewise. * io/mkfifoat.c (mkfifoat): Likewise. * io/open.c (__libc_open): Likewise. * io/open64.c (__libc_open64): Likewise. * io/readlink.c (__readlink): Likewise. * io/readlinkat.c (readlinkat): Likewise. * io/rmdir.c (__rmdir): Likewise. * io/symlink.c (__symlink): Likewise. * io/symlinkat.c (symlinkat): Likewise. * io/ttyname.c (ttyname): Likewise. * io/ttyname_r.c (__ttyname_r): Likewise. * io/umask.c (__umask): Likewise. * io/unlink.c (__unlink): Likewise. * io/unlinkat.c (unlinkat): Likewise. * io/utime.c (utime): Likewise. * libio/clearerr.c (clearerr): Likewise. * libio/clearerr_u.c (clearerr_unlocked): Likewise. * libio/feof.c (_IO_feof): Likewise. * libio/feof_u.c (feof_unlocked): Likewise. * libio/ferror.c (_IO_ferror): Likewise. * libio/ferror_u.c (ferror_unlocked): Likewise. * libio/filedoalloc.c (_IO_file_doallocate): Likewise. * libio/fileno.c (__fileno): Likewise. * libio/fputc.c (fputc): Likewise. * libio/fputc_u.c (fputc_unlocked): Likewise. * libio/fputwc.c (fputwc): Likewise. * libio/fputwc_u.c (fputwc_unlocked): Likewise. * libio/freopen.c (freopen): Likewise. * libio/freopen64.c (freopen64): Likewise. * libio/fseek.c (fseek): Likewise. * libio/fseeko.c (fseeko): Likewise. * libio/fseeko64.c (fseeko64): Likewise. * libio/ftello.c (__ftello): Likewise. * libio/ftello64.c (ftello64): Likewise. * libio/fwide.c (fwide): Likewise. * libio/genops.c (_IO_un_link): Likewise. (_IO_link_in): Likewise. (_IO_least_marker): Likewise. (_IO_switch_to_main_get_area): Likewise. (_IO_switch_to_backup_area): Likewise. (_IO_switch_to_get_mode): Likewise. (_IO_free_backup_area): Likewise. (_IO_switch_to_put_mode): Likewise. (__overflow): Likewise. (__underflow): Likewise. (__uflow): Likewise. (_IO_setb): Likewise. (_IO_doallocbuf): Likewise. (_IO_default_underflow): Likewise. (_IO_default_uflow): Likewise. (_IO_default_xsputn): Likewise. (_IO_sgetn): Likewise. (_IO_default_xsgetn): Likewise. (_IO_sync): Likewise. (_IO_default_setbuf): Likewise. (_IO_default_seekpos): Likewise. (_IO_default_doallocate): Likewise. (_IO_init): Likewise. (_IO_old_init): Likewise. (_IO_default_sync): Likewise. (_IO_default_finish): Likewise. (_IO_default_seekoff): Likewise. (_IO_sputbackc): Likewise. (_IO_sungetc): Likewise. (_IO_set_column): Likewise. (_IO_set_column): Likewise. (_IO_adjust_column): Likewise. (_IO_get_column): Likewise. (_IO_init_marker): Likewise. (_IO_remove_marker): Likewise. (_IO_marker_difference): Likewise. (_IO_marker_delta): Likewise. (_IO_seekmark): Likewise. (_IO_unsave_markers): Likewise. (_IO_nobackup_pbackfail): Likewise. (_IO_default_pbackfail): Likewise. (_IO_default_seek): Likewise. (_IO_default_stat): Likewise. (_IO_default_read): Likewise. (_IO_default_write): Likewise. (_IO_default_showmanyc): Likewise. (_IO_default_imbue): Likewise. (_IO_iter_next): Likewise. (_IO_iter_file): Likewise. * libio/getc.c (_IO_getc): Likewise. * libio/getwc.c (_IO_getwc): Likewise. * libio/iofclose.c (_IO_new_fclose): Likewise. * libio/iofdopen.c (_IO_new_fdopen): Likewise. * libio/iofflush.c (_IO_fflush): Likewise. * libio/iofflush_u.c (__fflush_unlocked): Likewise. * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise. * libio/iofgets.c (_IO_fgets): Likewise. * libio/iofgets_u.c (__fgets_unlocked): Likewise. * libio/iofgetws.c (fgetws): Likewise. * libio/iofgetws_u.c (fgetws_unlocked): Likewise. * libio/iofopen64.c (_IO_fopen64): Likewise. * libio/iofopncook.c (_IO_cookie_read): Likewise. (_IO_cookie_write): Likewise. (_IO_cookie_seek): Likewise. (_IO_cookie_close): Likewise. (_IO_cookie_seekoff): Likewise. (_IO_old_cookie_seek): Likewise. * libio/iofputs.c (_IO_fputs): Likewise. * libio/iofputs_u.c (__fputs_unlocked): Likewise. * libio/iofputws.c (fputws): Likewise. * libio/iofputws_u.c (fputws_unlocked): Likewise. * libio/iofread.c (_IO_fread): Likewise. * libio/iofread_u.c (__fread_unlocked): Likewise. * libio/iofsetpos.c (_IO_new_fsetpos): Likewise. * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise. * libio/ioftell.c (_IO_ftell): Likewise. * libio/iofwrite.c (_IO_fwrite): Likewise. * libio/iogetdelim.c (_IO_getdelim): Likewise. * libio/iogets.c (_IO_gets): Likewise. * libio/iopadn.c (_IO_padn): Likewise. * libio/iopopen.c (_IO_new_proc_open): Likewise. (_IO_new_popen): Likewise. (_IO_new_proc_close): Likewise. * libio/ioputs.c (_IO_puts): Likewise. * libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise. (_IO_seekoff): Likewise. * libio/ioseekpos.c (_IO_seekpos_unlocked): Likewise. (_IO_seekpos): Likewise. * libio/iosetbuffer.c (_IO_setbuffer): Likewise. * libio/iosetvbuf.c (_IO_setvbuf): Likewise. * libio/ioungetc.c (_IO_ungetc): Likewise. * libio/ioungetwc.c (ungetwc): Likewise. * libio/iovdprintf.c (_IO_vdprintf): Likewise. * libio/iovsscanf.c (_IO_vsscanf): Likewise. * libio/iowpadn.c (_IO_wpadn): Likewise. * libio/libc_fatal.c (__libc_fatal): Likewise. * libio/memstream.c (__open_memstream): Likewise. (_IO_mem_sync): Likewise. (_IO_mem_finish): Likewise. * libio/oldfileops.c (_IO_old_file_init): Likewise. (_IO_old_file_close_it): Likewise. (_IO_old_file_finish): Likewise. (_IO_old_file_fopen): Likewise. (_IO_old_file_attach): Likewise. (_IO_old_file_setbuf): Likewise. (_IO_old_do_write): Likewise. (old_do_write): Likewise. (_IO_old_file_underflow): Likewise. (_IO_old_file_overflow): Likewise. (_IO_old_file_sync): Likewise. (_IO_old_file_seekoff): Likewise. (_IO_old_file_write): Likewise. (_IO_old_file_xsputn): Likewise. * libio/oldiofclose.c (_IO_old_fclose): Likewise. * libio/oldiofdopen.c (_IO_old_fdopen): Likewise. * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise. * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise. * libio/oldiofopen.c (_IO_old_fopen): Likewise. * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise. * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise. * libio/oldiopopen.c (_IO_old_proc_open): Likewise. (_IO_old_popen): Likewise. (_IO_old_proc_close): Likewise. * libio/oldpclose.c (__old_pclose): Likewise. * libio/pclose.c (__new_pclose): Likewise. * libio/peekc.c (_IO_peekc_locked): Likewise. * libio/putc.c (_IO_putc): Likewise. * libio/putc_u.c (putc_unlocked): Likewise. * libio/putchar.c (putchar): Likewise. * libio/putchar_u.c (putchar_unlocked): Likewise. * libio/putwc.c (putwc): Likewise. * libio/putwc_u.c (putwc_unlocked): Likewise. * libio/putwchar.c (putwchar): Likewise. * libio/putwchar_u.c (putwchar_unlocked): Likewise. * libio/rewind.c (rewind): Likewise. * libio/setbuf.c (setbuf): Likewise. * libio/setlinebuf.c (setlinebuf): Likewise. * libio/vasprintf.c (_IO_vasprintf): Likewise. * libio/vscanf.c (_IO_vscanf): Likewise. * libio/vsnprintf.c (_IO_strn_overflow): Likewise. * libio/vswprintf.c (_IO_wstrn_overflow): Likewise. * libio/wfiledoalloc.c (_IO_wfile_doallocate): Likewise. * libio/wgenops.c (_IO_least_wmarker): Likewise. (_IO_switch_to_main_wget_area): Likewise. (_IO_switch_to_wbackup_area): Likewise. (_IO_wsetb): Likewise. (_IO_wdefault_pbackfail): Likewise. (_IO_wdefault_finish): Likewise. (_IO_wdefault_uflow): Likewise. (__woverflow): Likewise. (__wuflow): Likewise. (__wunderflow): Likewise. (_IO_wdefault_xsputn): Likewise. (_IO_wdefault_xsgetn): Likewise. (_IO_wdoallocbuf): Likewise. (_IO_wdefault_doallocate): Likewise. (_IO_switch_to_wget_mode): Likewise. (_IO_free_wbackup_area): Likewise. (_IO_switch_to_wput_mode): Likewise. (_IO_sputbackwc): Likewise. (_IO_sungetwc): Likewise. (_IO_adjust_wcolumn): Likewise. (_IO_init_wmarker): Likewise. (_IO_wmarker_delta): Likewise. (_IO_seekwmark): Likewise. (_IO_unsave_wmarkers): Likewise. * libio/wmemstream.c (open_wmemstream): Likewise. (_IO_wmem_sync): Likewise. (_IO_wmem_finish): Likewise. * locale/nl_langinfo.c (nl_langinfo): Likewise. * locale/nl_langinfo_l.c (__nl_langinfo_l): Likewise. * locale/programs/simple-hash.c (init_hash): Likewise. (delete_hash): Likewise. (insert_entry): Likewise. (set_entry): Likewise. (next_prime): Likewise. (is_prime): Likewise. * locale/programs/xmalloc.c (fixup_null_alloc): Likewise. (xmalloc): Likewise. (xrealloc): Likewise. * locale/programs/xstrdup.c (xstrdup): Likewise. * localedata/collate-test.c (xstrcoll): Likewise. * localedata/xfrm-test.c (xstrcmp): Likewise. * login/getlogin_r.c (__getlogin_r): Likewise. * login/getpt.c (__posix_openpt): Likewise. * login/login_tty.c (login_tty): Likewise. * login/setlogin.c (setlogin): Likewise. * mach/msg-destroy.c (__mach_msg_destroy): Likewise. (mach_msg_destroy_port): Likewise. (mach_msg_destroy_memory): Likewise. * malloc/mcheck.c (flood): Likewise. * misc/acct.c (acct): Likewise. * misc/brk.c (__brk): Likewise. * misc/chflags.c (chflags): Likewise. * misc/chroot.c (chroot): Likewise. * misc/fchflags.c (fchflags): Likewise. * misc/fstab.c (getfsspec): Likewise. (getfsfile): Likewise. * misc/fsync.c (fsync): Likewise. * misc/ftruncate.c (__ftruncate): Likewise. * misc/ftruncate64.c (__ftruncate64): Likewise. * misc/getdomain.c (getdomainname): Likewise. (getdomainname): Likewise. * misc/gethostname.c (__gethostname): Likewise. * misc/getpass.c (getpass): Likewise. * misc/getttyent.c (skip): Likewise. (value): Likewise. * misc/gtty.c (gtty): Likewise. * misc/hsearch.c (hsearch): Likewise. (hcreate): Likewise. * misc/hsearch_r.c (__hcreate_r): Likewise. (__hdestroy_r): Likewise. * misc/ioctl.c (__ioctl): Likewise. * misc/mkdtemp.c (mkdtemp): Likewise. * misc/mkostemp.c (mkostemp): Likewise. * misc/mkostemp64.c (mkostemp64): Likewise. * misc/mkostemps.c (mkostemps): Likewise. * misc/mkostemps64.c (mkostemps64): Likewise. * misc/mkstemp.c (mkstemp): Likewise. * misc/mkstemp64.c (mkstemp64): Likewise. * misc/mkstemps.c (mkstemps): Likewise. * misc/mkstemps64.c (mkstemps64): Likewise. * misc/mktemp.c (__mktemp): Likewise. * misc/preadv.c (preadv): Likewise. * misc/preadv64.c (preadv64): Likewise. * misc/pwritev.c (pwritev): Likewise. * misc/pwritev64.c (pwritev64): Likewise. * misc/readv.c (__readv): Likewise. * misc/revoke.c (revoke): Likewise. * misc/setdomain.c (setdomainname): Likewise. * misc/setegid.c (setegid): Likewise. * misc/seteuid.c (seteuid): Likewise. * misc/sethostid.c (sethostid): Likewise. * misc/sethostname.c (sethostname): Likewise. * misc/setregid.c (__setregid): Likewise. * misc/setreuid.c (__setreuid): Likewise. * misc/sstk.c (sstk): Likewise. * misc/stty.c (stty): Likewise. * misc/syscall.c (syscall): Likewise. * misc/syslog.c (setlogmask): Likewise. * misc/truncate.c (__truncate): Likewise. * misc/truncate64.c (truncate64): Likewise. * misc/ualarm.c (ualarm): Likewise. * misc/usleep.c (usleep): Likewise. * misc/ustat.c (ustat): Likewise. * misc/writev.c (__writev): Likewise. * nptl/cleanup_compat.c (_pthread_cleanup_pop): Likewise. * nptl/old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0): Likewise. * nptl/old_pthread_cond_destroy.c (__pthread_cond_destroy_2_0): Likewise. * nptl/old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise. * nptl/old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise. * nptl/pt-raise.c (raise): Likewise. * nptl/pthread_barrier_destroy.c (pthread_barrier_destroy): Likewise. * nptl/pthread_barrier_wait.c (__pthread_barrier_wait): Likewise. * nptl/pthread_barrierattr_destroy.c (pthread_barrierattr_destroy): Likewise. * nptl/pthread_barrierattr_init.c (pthread_barrierattr_init): Likewise. * nptl/pthread_barrierattr_setpshared.c (pthread_barrierattr_setpshared): Likewise. * nptl/pthread_cond_broadcast.c (__pthread_cond_broadcast): Likewise. * nptl/pthread_cond_destroy.c (__pthread_cond_destroy): Likewise. * nptl/pthread_cond_init.c (__pthread_cond_init): Likewise. * nptl/pthread_cond_signal.c (__pthread_cond_signal): Likewise. * nptl/pthread_condattr_destroy.c (__pthread_condattr_destroy): Likewise. * nptl/pthread_condattr_getclock.c (pthread_condattr_getclock): Likewise. * nptl/pthread_condattr_getpshared.c (pthread_condattr_getpshared): Likewise. * nptl/pthread_condattr_init.c (__pthread_condattr_init): Likewise. * nptl/pthread_condattr_setpshared.c (pthread_condattr_setpshared): Likewise. * nptl/pthread_detach.c (pthread_detach): Likewise. * nptl/pthread_equal.c (__pthread_equal): Likewise. * nptl/pthread_getcpuclockid.c (pthread_getcpuclockid): Likewise. * nptl/pthread_getspecific.c (__pthread_getspecific): Likewise. * nptl/pthread_key_delete.c (pthread_key_delete): Likewise. * nptl/pthread_mutex_consistent.c (pthread_mutex_consistent): Likewise. * nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Likewise. * nptl/pthread_mutex_getprioceiling.c (pthread_mutex_getprioceiling): Likewise. * nptl/pthread_mutexattr_destroy.c (__pthread_mutexattr_destroy): Likewise. * nptl/pthread_mutexattr_getprotocol.c (pthread_mutexattr_getprotocol): Likewise. * nptl/pthread_mutexattr_getpshared.c (pthread_mutexattr_getpshared): Likewise. * nptl/pthread_mutexattr_getrobust.c (pthread_mutexattr_getrobust): Likewise. * nptl/pthread_mutexattr_gettype.c (pthread_mutexattr_gettype): Likewise. * nptl/pthread_mutexattr_init.c (__pthread_mutexattr_init): Likewise. * nptl/pthread_mutexattr_setprioceiling.c (pthread_mutexattr_setprioceiling): Likewise. * nptl/pthread_mutexattr_setprotocol.c (pthread_mutexattr_setprotocol): Likewise. * nptl/pthread_mutexattr_setpshared.c (pthread_mutexattr_setpshared): Likewise. * nptl/pthread_mutexattr_setrobust.c (pthread_mutexattr_setrobust): Likewise. * nptl/pthread_mutexattr_settype.c (__pthread_mutexattr_settype): Likewise. * nptl/pthread_rwlock_destroy.c (__pthread_rwlock_destroy): Likewise. * nptl/pthread_rwlockattr_destroy.c (pthread_rwlockattr_destroy): Likewise. * nptl/pthread_rwlockattr_getkind_np.c (pthread_rwlockattr_getkind_np): Likewise. * nptl/pthread_rwlockattr_getpshared.c (pthread_rwlockattr_getpshared): Likewise. * nptl/pthread_rwlockattr_init.c (pthread_rwlockattr_init): Likewise. * nptl/pthread_rwlockattr_setkind_np.c (pthread_rwlockattr_setkind_np): Likewise. * nptl/pthread_rwlockattr_setpshared.c (pthread_rwlockattr_setpshared): Likewise. * nptl/pthread_setcancelstate.c (__pthread_setcancelstate): Likewise. * nptl/pthread_setcanceltype.c (__pthread_setcanceltype): Likewise. * nptl/pthread_setconcurrency.c (pthread_setconcurrency): Likewise. * nptl/pthread_setschedprio.c (pthread_setschedprio): Likewise. * nptl/pthread_setspecific.c (__pthread_setspecific): Likewise. * nptl/pthread_spin_destroy.c (pthread_spin_destroy): Likewise. * nptl/pthread_tryjoin.c (pthread_tryjoin_np): Likewise. * nptl/sem_close.c (sem_close): Likewise. * nptl/sem_destroy.c (__new_sem_destroy): Likewise. * nptl/sem_init.c (__old_sem_init): Likewise. * nptl/sigaction.c (__sigaction): Likewise. * nptl/unregister-atfork.c (__unregister_atfork): Likewise. * posix/_exit.c (_exit): Likewise. * posix/alarm.c (alarm): Likewise. * posix/confstr.c (confstr): Likewise. * posix/fpathconf.c (__fpathconf): Likewise. * posix/getgroups.c (__getgroups): Likewise. * posix/getpgid.c (__getpgid): Likewise. * posix/group_member.c (__group_member): Likewise. * posix/pathconf.c (__pathconf): Likewise. * posix/sched_getaffinity.c (sched_getaffinity): Likewise. * posix/sched_setaffinity.c (sched_setaffinity): Likewise. * posix/setgid.c (__setgid): Likewise. * posix/setpgid.c (__setpgid): Likewise. * posix/setuid.c (__setuid): Likewise. * posix/sleep.c (__sleep): Likewise. * posix/sysconf.c (__sysconf): Likewise. * posix/times.c (__times): Likewise. * posix/uname.c (__uname): Likewise. * posix/waitid.c (__waitid): Likewise. * pwd/getpw.c (__getpw): Likewise. * resolv/base64.c (b64_pton): Likewise. * resolv/gai_sigqueue.c (__gai_sigqueue): Likewise. * resolv/gethnamaddr.c (Dprintf): Likewise. (gethostbyname): Likewise. (gethostbyname2): Likewise. (gethostbyaddr): Likewise. (_sethtent): Likewise. (_gethtbyname): Likewise. (_gethtbyname2): Likewise. (_gethtbyaddr): Likewise. (map_v4v6_address): Likewise. (map_v4v6_hostent): Likewise. (addrsort): Likewise. (ht_sethostent): Likewise. (ht_gethostbyname): Likewise. (ht_gethostbyaddr): Likewise. * resolv/inet_net_ntop.c (inet_net_ntop): Likewise. (inet_net_ntop_ipv4): Likewise. * resolv/inet_neta.c (inet_neta): Likewise. * resolv/inet_ntop.c (inet_ntop): Likewise. (inet_ntop4): Likewise. (inet_ntop6): Likewise. * resolv/inet_pton.c (__inet_pton): Likewise. (inet_pton4): Likewise. (inet_pton6): Likewise. * resolv/res_debug.c (loc_aton): Likewise. (loc_ntoa): Likewise. * resource/getpriority.c (__getpriority): Likewise. * resource/getrusage.c (__getrusage): Likewise. * resource/nice.c (nice): Likewise. * resource/setpriority.c (__setpriority): Likewise. * resource/setrlimit64.c (setrlimit64): Likewise. * resource/vlimit.c (vlimit): Likewise. * resource/vtimes.c (vtimes): Likewise. * rt/aio_error.c (aio_error): Likewise. * rt/aio_return.c (aio_return): Likewise. * rt/aio_sigqueue.c (__aio_sigqueue): Likewise. * signal/kill.c (__kill): Likewise. * signal/killpg.c (killpg): Likewise. * signal/raise.c (raise): Likewise. * signal/sigaction.c (__sigaction): Likewise. * signal/sigaddset.c (sigaddset): Likewise. * signal/sigaltstack.c (sigaltstack): Likewise. * signal/sigandset.c (sigandset): Likewise. * signal/sigblock.c (__sigblock): Likewise. * signal/sigdelset.c (sigdelset): Likewise. * signal/sigempty.c (sigemptyset): Likewise. * signal/sigfillset.c (sigfillset): Likewise. * signal/sighold.c (sighold): Likewise. * signal/sigignore.c (sigignore): Likewise. * signal/sigintr.c (siginterrupt): Likewise. * signal/sigisempty.c (sigisemptyset): Likewise. * signal/sigismem.c (sigismember): Likewise. * signal/signal.c (signal): Likewise. * signal/sigorset.c (sigorset): Likewise. * signal/sigpause.c (__sigpause): Likewise. * signal/sigpending.c (sigpending): Likewise. * signal/sigprocmask.c (__sigprocmask): Likewise. * signal/sigrelse.c (sigrelse): Likewise. * signal/sigreturn.c (__sigreturn): Likewise. * signal/sigset.c (sigset): Likewise. * signal/sigsetmask.c (__sigsetmask): Likewise. * signal/sigstack.c (sigstack): Likewise. * signal/sigsuspend.c (__sigsuspend): Likewise. * signal/sigvec.c (sigvec_wrapper_handler): Likewise. * signal/sysv_signal.c (__sysv_signal): Likewise. * socket/accept.c (accept): Likewise. * socket/accept4.c (__libc_accept4): Likewise. * socket/bind.c (__bind): Likewise. * socket/connect.c (__connect): Likewise. * socket/getpeername.c (getpeername): Likewise. * socket/getsockname.c (__getsockname): Likewise. * socket/getsockopt.c (getsockopt): Likewise. * socket/listen.c (__listen): Likewise. * socket/recv.c (__recv): Likewise. * socket/recvmsg.c (__recvmsg): Likewise. * socket/send.c (__send): Likewise. * socket/sendmsg.c (__sendmsg): Likewise. * socket/shutdown.c (shutdown): Likewise. * socket/sockatmark.c (sockatmark): Likewise. * socket/socket.c (__socket): Likewise. * stdio-common/ctermid.c (ctermid): Likewise. * stdio-common/cuserid.c (cuserid): Likewise. * stdio-common/printf-prs.c (parse_printf_format): Likewise. * stdio-common/remove.c (remove): Likewise. * stdio-common/rename.c (rename): Likewise. * stdio-common/renameat.c (renameat): Likewise. * stdio-common/tempname.c (__gen_tempname): Likewise. * stdio-common/xbug.c (InitBuffer): Likewise. (AppendToBuffer): Likewise. (ReadFile): Likewise. * stdlib/a64l.c (a64l): Likewise. * stdlib/drand48_r.c (drand48_r): Likewise. * stdlib/getcontext.c (getcontext): Likewise. * stdlib/getenv.c (getenv): Likewise. * stdlib/l64a.c (l64a): Likewise. * stdlib/llabs.c (llabs): Likewise. * stdlib/lldiv.c (lldiv): Likewise. * stdlib/lrand48_r.c (lrand48_r): Likewise. * stdlib/mrand48_r.c (mrand48_r): Likewise. * stdlib/putenv.c (putenv): Likewise. * stdlib/random.c (__srandom): Likewise. (__initstate): Likewise. (__setstate): Likewise. * stdlib/random_r.c (__srandom_r): Likewise. (__setstate_r): Likewise. (__random_r): Likewise. * stdlib/secure-getenv.c (__libc_secure_getenv): Likewise. * stdlib/setcontext.c (setcontext): Likewise. * stdlib/setenv.c (setenv): Likewise. (unsetenv): Likewise. * stdlib/srand48.c (srand48): Likewise. * stdlib/srand48_r.c (__srand48_r): Likewise. * stdlib/swapcontext.c (swapcontext): Likewise. * stdlib/system.c (__libc_system): Likewise. * stdlib/tst-strtod.c (expand): Likewise. * stdlib/tst-strtol.c (expand): Likewise. * stdlib/tst-strtoll.c (expand): Likewise. * streams/fattach.c (fattach): Likewise. * streams/fdetach.c (fdetach): Likewise. * streams/getmsg.c (getmsg): Likewise. * streams/isastream.c (isastream): Likewise. * string/ffs.c (__ffs): Likewise. * string/ffsll.c (ffsll): Likewise. * string/memcmp.c (memcmp_common_alignment): Likewise. (memcmp_not_common_alignment): Likewise. (MEMCMP): Likewise. * string/memcpy.c (memcpy): Likewise. * string/memmove.c (MEMMOVE): Likewise. * string/memset.c (memset): Likewise. * string/rawmemchr.c (RAWMEMCHR): Likewise. * string/strchrnul.c (STRCHRNUL): Likewise. * string/strerror.c (strerror): Likewise. * string/strndup.c (__strndup): Likewise. * string/strverscmp.c (__strverscmp): Likewise. * sunrpc/clnt_raw.c (clntraw_freeres): Likewise. * sunrpc/clnt_tcp.c (clnttcp_geterr): Likewise. (clnttcp_freeres): Likewise. * sunrpc/clnt_unix.c (clntunix_freeres): Likewise. * sunrpc/pmap_prot.c (xdr_pmap): Likewise. * sunrpc/pmap_prot2.c (xdr_pmaplist): Likewise. * sunrpc/pmap_rmt.c (xdr_rmtcallres): Likewise. * sunrpc/rpc_prot.c (xdr_replymsg): Likewise. (xdr_callhdr): Likewise. * sunrpc/rpcinfo.c (udpping): Likewise. (tcpping): Likewise. (pstatus): Likewise. (pmapdump): Likewise. (brdcst): Likewise. (deletereg): Likewise. (getprognum): Likewise. (getvers): Likewise. (get_inet_address): Likewise. * sunrpc/svc_raw.c (svcraw_recv): Likewise. * sunrpc/svc_udp.c (svcudp_create): Likewise. (svcudp_stat): Likewise. (svcudp_recv): Likewise. (svcudp_reply): Likewise. (svcudp_getargs): Likewise. (svcudp_freeargs): Likewise. (svcudp_destroy): Likewise. * sunrpc/xdr.c (xdr_bytes): Likewise. (xdr_netobj): Likewise. (xdr_string): Likewise. (xdr_wrapstring): Likewise. * sunrpc/xdr_float.c (xdr_float): Likewise. (xdr_double): Likewise. * sunrpc/xdr_mem.c (xdrmem_setpos): Likewise. * sunrpc/xdr_ref.c (xdr_pointer): Likewise. * sysvipc/ftok.c (ftok): Likewise. * sysvipc/msgctl.c (msgctl): Likewise. * sysvipc/msgget.c (msgget): Likewise. * sysvipc/msgrcv.c (msgrcv): Likewise. * sysvipc/msgsnd.c (msgsnd): Likewise. * sysvipc/semget.c (semget): Likewise. * sysvipc/semop.c (semop): Likewise. * sysvipc/shmat.c (shmat): Likewise. * sysvipc/shmctl.c (shmctl): Likewise. * sysvipc/shmdt.c (shmdt): Likewise. * sysvipc/shmget.c (shmget): Likewise. * termios/cfmakeraw.c (cfmakeraw): Likewise. * termios/speed.c (cfgetospeed): Likewise. (cfgetispeed): Likewise. (cfsetospeed): Likewise. (cfsetispeed): Likewise. * termios/tcflow.c (tcflow): Likewise. * termios/tcflush.c (tcflush): Likewise. * termios/tcgetattr.c (__tcgetattr): Likewise. * termios/tcgetpgrp.c (tcgetpgrp): Likewise. * termios/tcgetsid.c (tcgetsid): Likewise. * termios/tcsendbrk.c (tcsendbreak): Likewise. * termios/tcsetpgrp.c (tcsetpgrp): Likewise. * time/adjtime.c (__adjtime): Likewise. * time/dysize.c (dysize): Likewise. * time/ftime.c (ftime): Likewise. * time/getitimer.c (__getitimer): Likewise. * time/gettimeofday.c (__gettimeofday): Likewise. * time/gmtime.c (__gmtime_r): Likewise. (gmtime): Likewise. * time/localtime.c (__localtime_r): Likewise. (localtime): Likewise. * time/offtime.c (__offtime): Likewise. * time/settimeofday.c (__settimeofday): Likewise. * time/stime.c (stime): Likewise. * time/strftime_l.c (tm_diff): Likewise. (iso_week_days): Likewise. * time/strptime.c (strptime): Likewise. * time/time.c (time): Likewise. * time/timespec_get.c (timespec_get): Likewise. * time/tzset.c (tzset_internal): Likewise. (compute_change): Likewise. (__tz_compute): Likewise. * wcsmbs/btowc.c (__btowc): Likewise. * wcsmbs/mbrlen.c (__mbrlen): Likewise. * wcsmbs/mbsinit.c (__mbsinit): Likewise. * wcsmbs/mbsrtowcs.c (__mbsrtowcs): Likewise. * wcsmbs/wcpcpy.c (__wcpcpy): Likewise. * wcsmbs/wcpncpy.c (__wcpncpy): Likewise. * wcsmbs/wcscat.c (__wcscat): Likewise. * wcsmbs/wcschrnul.c (__wcschrnul): Likewise. * wcsmbs/wcscmp.c (WCSCMP): Likewise. * wcsmbs/wcscpy.c (WCSCPY): Likewise. * wcsmbs/wcscspn.c (wcscspn): Likewise. * wcsmbs/wcsdup.c (wcsdup): Likewise. * wcsmbs/wcslen.c (__wcslen): Likewise. * wcsmbs/wcsncat.c (WCSNCAT): Likewise. * wcsmbs/wcsncmp.c (WCSNCMP): Likewise. * wcsmbs/wcsncpy.c (__wcsncpy): Likewise. * wcsmbs/wcsnlen.c (__wcsnlen): Likewise. * wcsmbs/wcspbrk.c (wcspbrk): Likewise. * wcsmbs/wcsrchr.c (WCSRCHR): Likewise. * wcsmbs/wcsspn.c (wcsspn): Likewise. * wcsmbs/wcsstr.c (wcsstr): Likewise. * wcsmbs/wcstok.c (wcstok): Likewise. * wcsmbs/wctob.c (wctob): Likewise. * wcsmbs/wmemchr.c (__wmemchr): Likewise. * wcsmbs/wmemcmp.c (WMEMCMP): Likewise. * wcsmbs/wmemcpy.c (__wmemcpy): Likewise. * wcsmbs/wmemmove.c (__wmemmove): Likewise. * wcsmbs/wmempcpy.c (__wmempcpy): Likewise. * wcsmbs/wmemset.c (__wmemset): Likewise. * wctype/wcfuncs.c (__towlower): Likewise. (__towupper): Likewise.
2015-10-15Mark internal _dl_XXX functions hiddenH.J. Lu
Since internal _dl_XXX functions are only used internally in ld.so, they can be made hidden. [BZ #19122] * elf/dl-runtime.c (_dl_fixup): Add attribute_hidden. * elf/dynamic-link.h (_dl_try_allocate_static_tls): Likewise. * sysdeps/generic/dl-cache.h (_dl_cache_libcmp): Likewise. * sysdeps/generic/ldsodefs.h (_dl_name_match_p): Likewise. (_dl_higher_prime_number): Likewise. (_dl_debug_printf_c): Likewise. (_dl_signal_cerror): Likewise. (_dl_receive_error): Likewise. (_dl_reloc_bad_type): Likewise. (_dl_resolve_conflicts): Likewise. (_dl_check_all_versions): Likewise. (_dl_check_map_versions): Likewise. (_dl_sort_fini): Likewise. (_dl_debug_initialize): Likewise. (_dl_init_paths): Likewise. (_dl_show_auxv): Likewise. (_dl_next_ld_env_entry): Likewise. (_dl_important_hwcaps): Likewise. (_dl_load_cache_lookup): Likewise. (_dl_update_slotinfo): Likewise. (_dl_show_scope): Likewise.
2015-10-15Always enable pointer guard [BZ #18928]Florian Weimer
Honoring the LD_POINTER_GUARD environment variable in AT_SECURE mode has security implications. This commit enables pointer guard unconditionally, and the environment variable is now ignored. [BZ #18928] * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove _dl_pointer_guard member. * elf/rtld.c (_rtld_global_ro): Remove _dl_pointer_guard initializer. (security_init): Always set up pointer guard. (process_envvars): Do not process LD_POINTER_GUARD.
2015-09-25[BZ #17250] Fix static dlopen default library search pathMaciej W. Rozycki
Fix a regression introduced with commit 0d23a5c1 [Static dlopen correction fallout fixes] that caused the default library search path to be ignored for modules loaded with dlopen from static executables. [BZ #17250] * elf/dl-support.c (_dl_main_map): Don't initialize l_flags_1 member.
2015-09-18Fix error messages in elf/tst-dlmopen1.c.Carlos O'Donell
The test error messages incorrectly reference LIBC_SO when they should reference the dlmopen'd library tst-dlmopen1mod.so. Define TEST_SO and use it in all the error messages.
2015-09-18Use ALIGN_* macros in _dl_map_object_from_fd.Carlos O'Donell
Cleanup _dl_map_object_from_fd to make it clear exactly what we're doing with the mappings i.e. extending the the start of the map down to a page boundary, extending the end of the map up to a page boundary, and offset itself also to page boundary. The result is much easier to read as expected from the ALIGN_* cleanups.
2015-09-08Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912).Joseph Myers
It was noted in <https://sourceware.org/ml/libc-alpha/2012-09/msg00305.html> that the bits/*.h naming scheme should only be used for installed headers. This patch renames bits/libc-lock.h to plain libc-lock.h and bits/libc-lockP.h to plain libc-lockP.h to follow that convention. Note that I don't know where libc-lockP.h comes from for Hurd (the Hurd libc-lock.h includes libc-lockP.h, but the only libc-lockP.h in the glibc source tree is for NPTL) - some unmerged patch? - but I updated the #include in the Hurd libc-lock.h anyway. Tested for x86_64 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #14912] * bits/libc-lock.h: Move to ... * sysdeps/generic/libc-lock.h: ...here. (_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H. * sysdeps/mach/hurd/bits/libc-lock.h: Move to ... * sysdeps/mach/hurd/libc-lock.h: ...here. (_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H. [_LIBC]: Include <libc-lockP.h> instead of <bits/libc-lockP.h>. * sysdeps/mach/bits/libc-lock.h: Move to ... * sysdeps/mach/libc-lock.h: ...here. (_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H. * sysdeps/nptl/bits/libc-lock.h: Move to ... * sysdeps/nptl/libc-lock.h: ...here. (_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H. * sysdeps/nptl/bits/libc-lockP.h: Move to ... * sysdeps/nptl/libc-lockP.h: ...here. (_BITS_LIBC_LOCKP_H): Rename macro to _LIBC_LOCKP_H. * crypt/crypt_util.c: Include <libc-lock.h> instead of <bits/libc-lock.h>. * dirent/scandir-tail.c: Likewise. * dlfcn/dlerror.c: Likewise. * elf/dl-close.c: Likewise. * elf/dl-iteratephdr.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-writev.h: Likewise. * elf/rtld.c: Likewise. * grp/fgetgrent.c: Likewise. * gshadow/fgetsgent.c: Likewise. * gshadow/sgetsgent.c: Likewise. * iconv/gconv_conf.c: Likewise. * iconv/gconv_db.c: Likewise. * iconv/gconv_dl.c: Likewise. * iconv/gconv_int.h: Likewise. * iconv/gconv_trans.c: Likewise. * include/link.h: Likewise. * inet/getnameinfo.c: Likewise. * inet/getnetgrent.c: Likewise. * inet/getnetgrent_r.c: Likewise. * intl/bindtextdom.c: Likewise. * intl/dcigettext.c: Likewise. * intl/finddomain.c: Likewise. * intl/gettextP.h: Likewise. * intl/loadmsgcat.c: Likewise. * intl/localealias.c: Likewise. * intl/textdomain.c: Likewise. * libidn/idn-stub.c: Likewise. * libio/libioP.h: Likewise. * locale/duplocale.c: Likewise. * locale/freelocale.c: Likewise. * locale/newlocale.c: Likewise. * locale/setlocale.c: Likewise. * login/getutent_r.c: Likewise. * login/getutid_r.c: Likewise. * login/getutline_r.c: Likewise. * login/utmp-private.h: Likewise. * login/utmpname.c: Likewise. * malloc/mtrace.c: Likewise. * misc/efgcvt.c: Likewise. * misc/error.c: Likewise. * misc/fstab.c: Likewise. * misc/getpass.c: Likewise. * misc/mntent.c: Likewise. * misc/syslog.c: Likewise. * nis/nis_call.c: Likewise. * nis/nis_callback.c: Likewise. * nis/nss-default.c: Likewise. * nis/nss_compat/compat-grp.c: Likewise. * nis/nss_compat/compat-initgroups.c: Likewise. * nis/nss_compat/compat-pwd.c: Likewise. * nis/nss_compat/compat-spwd.c: Likewise. * nis/nss_nis/nis-alias.c: Likewise. * nis/nss_nis/nis-ethers.c: Likewise. * nis/nss_nis/nis-grp.c: Likewise. * nis/nss_nis/nis-hosts.c: Likewise. * nis/nss_nis/nis-network.c: Likewise. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-pwd.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-service.c: Likewise. * nis/nss_nis/nis-spwd.c: Likewise. * nis/nss_nisplus/nisplus-alias.c: Likewise. * nis/nss_nisplus/nisplus-ethers.c: Likewise. * nis/nss_nisplus/nisplus-grp.c: Likewise. * nis/nss_nisplus/nisplus-hosts.c: Likewise. * nis/nss_nisplus/nisplus-initgroups.c: Likewise. * nis/nss_nisplus/nisplus-network.c: Likewise. * nis/nss_nisplus/nisplus-proto.c: Likewise. * nis/nss_nisplus/nisplus-pwd.c: Likewise. * nis/nss_nisplus/nisplus-rpc.c: Likewise. * nis/nss_nisplus/nisplus-service.c: Likewise. * nis/nss_nisplus/nisplus-spwd.c: Likewise. * nis/ypclnt.c: Likewise. * nptl/libc_pthread_init.c: Likewise. * nss/getXXbyYY.c: Likewise. * nss/getXXent.c: Likewise. * nss/getXXent_r.c: Likewise. * nss/nss_db/db-XXX.c: Likewise. * nss/nss_db/db-netgrp.c: Likewise. * nss/nss_db/nss_db.h: Likewise. * nss/nss_files/files-XXX.c: Likewise. * nss/nss_files/files-alias.c: Likewise. * nss/nsswitch.c: Likewise. * posix/regex_internal.h: Likewise. * posix/wordexp.c: Likewise. * pwd/fgetpwent.c: Likewise. * resolv/res_hconf.c: Likewise. * resolv/res_libc.c: Likewise. * shadow/fgetspent.c: Likewise. * shadow/lckpwdf.c: Likewise. * shadow/sgetspent.c: Likewise. * socket/opensock.c: Likewise. * stdio-common/reg-modifier.c: Likewise. * stdio-common/reg-printf.c: Likewise. * stdio-common/reg-type.c: Likewise. * stdio-common/vfprintf.c: Likewise. * stdio-common/vfscanf.c: Likewise. * stdlib/abort.c: Likewise. * stdlib/cxa_atexit.c: Likewise. * stdlib/fmtmsg.c: Likewise. * stdlib/random.c: Likewise. * stdlib/setenv.c: Likewise. * string/strsignal.c: Likewise. * sunrpc/auth_none.c: Likewise. * sunrpc/bindrsvprt.c: Likewise. * sunrpc/create_xid.c: Likewise. * sunrpc/key_call.c: Likewise. * sunrpc/rpc_thread.c: Likewise. * sysdeps/arm/backtrace.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/generic/stdio-lock.h: Likewise. * sysdeps/generic/unwind-dw2-fde.c: Likewise. * sysdeps/i386/backtrace.c: Likewise. * sysdeps/ieee754/ldbl-opt/nldbl-compat.c: Likewise. * sysdeps/m68k/backtrace.c: Likewise. * sysdeps/mach/hurd/cthreads.c: Likewise. * sysdeps/mach/hurd/dirstream.h: Likewise. * sysdeps/mach/hurd/malloc-machine.h: Likewise. * sysdeps/nptl/malloc-machine.h: Likewise. * sysdeps/nptl/stdio-lock.h: Likewise. * sysdeps/posix/dirstream.h: Likewise. * sysdeps/posix/getaddrinfo.c: Likewise. * sysdeps/posix/system.c: Likewise. * sysdeps/pthread/aio_suspend.c: Likewise. * sysdeps/s390/s390-32/backtrace.c: Likewise. * sysdeps/s390/s390-64/backtrace.c: Likewise. * sysdeps/unix/sysv/linux/check_pf.c: Likewise. * sysdeps/unix/sysv/linux/if_index.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c: Likewise. * sysdeps/unix/sysv/linux/shm-directory.c: Likewise. * sysdeps/unix/sysv/linux/system.c: Likewise. * sysdeps/x86_64/backtrace.c: Likewise. * time/alt_digit.c: Likewise. * time/era.c: Likewise. * time/tzset.c: Likewise. * wcsmbs/wcsmbsload.c: Likewise. * nptl/tst-initializers1.c (do_test): Refer to <libc-lock.h> instead of <bits/libc-lock.h> in comment.
2015-09-03Mark elf/tst-protected1[ab] as XFAIL.Roland McGrath
2015-08-19Fix dynamic linker issue with bind-nowPetar Jovanovic
Fix the bind-now case when DT_REL and DT_JMPREL sections are separate and there is a gap between them. [BZ #14341] * elf/dynamic-link.h (elf_machine_lazy_rel): Properly handle the case when there is a gap between DT_REL and DT_JMPREL sections. * sysdeps/x86_64/Makefile (tests): Add tst-split-dynreloc. (LDFLAGS-tst-split-dynreloc): New. (tst-split-dynreloc-ENV): Likewise. * sysdeps/x86_64/tst-split-dynreloc.c: New file. * sysdeps/x86_64/tst-split-dynreloc.lds: Likewise.
2015-08-19Fix -Wundef warnings in elf/tst-execstack.c.Joseph Myers
To remove -Wno-error=undef, we need to fix the remaining cases where there are -Wundef warnings in the testsuite. One of those places is in elf/tst-execstack.c. tst-execstack.c tests USE_PTHREADS with #if. nptl/tst-execstack.c defines USE_PTHREADS to 1 before including ../elf/tst-execstack.c, while elf/tst-execstack.c, when compiled directly, leaves it undefined. This patch adds a setting of CPPFLAGS-tst-execstack.c to elf/Makefile. An alternative approach would be to rename tst-execstack.c to tst-execstack-main.c and have two different tst-execstack.c files include it, each with an appropriate USE_PTHREADS #define. Tested for x86_64. * elf/Makefile [$(have-z-execstack) = yes] (CPPFLAGS-tst-execstack.c): New variable.
2015-08-11Clear DF_1_NODELETE flag only for failed to load library.Maxim Ostapenko
https://sourceware.org/bugzilla/show_bug.cgi?id=18778 If dlopen fails to load an object that has triggered loading libpthread it causes ld.so to unload libpthread because its DF_1_NODELETE flags has been forcefully cleared. The next call to __rtdl_unlock_lock_recursive will crash since pthread_mutex_unlock no longer exists. This patch moves l->l_flags_1 &= ~DF_1_NODELETE out of loop through all loaded libraries and performs the action only on inconsistent one. [BZ #18778] * elf/Makefile (tests): Add Add tst-nodelete2. (modules-names): Add tst-nodelete2mod. (tst-nodelete2mod.so-no-z-defs): New. ($(objpfx)tst-nodelete2): Likewise. ($(objpfx)tst-nodelete2.out): Likewise. (LDFLAGS-tst-nodelete2): Likewise. * elf/dl-close.c (_dl_close_worker): Move DF_1_NODELETE clearing out of loop through all loaded libraries. * elf/tst-nodelete2.c: New file. * elf/tst-nodelete2mod.c: Likewise.
2015-08-06Modify several tests to use test-skeleton.cArjun Shankar
These tests were skipped by the use-test-skeleton conversion done in commit 29955b5d because they did not have an `int main (void)' declaration. Instead their `main' functions were declared with arguments (i.e. argc, argv) even though they didn't use them. Remove these arguments and include the test skeleton in these tests.
2015-07-23Also use l_tls_dtor_count to decide on object unload (BZ #18657)Siddhesh Poyarekar
When an TLS destructor is registered, we set the DF_1_NODELETE flag to signal that the object should not be destroyed. We then clear the DF_1_NODELETE flag when all destructors are called, which is wrong - the flag could have been set by other means too. This patch replaces this use of the flag by using l_tls_dtor_count directly to determine whether it is safe to unload the object. This change has the added advantage of eliminating the lock taking when calling the destructors, which could result in a deadlock. The patch also fixes the test case tst-tls-atexit - it was making an invalid dlclose call, which would just return an error silently. I have also added a detailed note on concurrency which also aims to justify why I chose the semantics I chose for accesses to l_tls_dtor_count. Thanks to Torvald for his help in getting me started on this and (literally) teaching my how to approach the problem. Change verified on x86_64; the test suite does not show any regressions due to the patch. ChangeLog: [BZ #18657] * elf/dl-close.c (_dl_close_worker): Don't unload DSO if there are pending TLS destructor calls. * include/link.h (struct link_map): Add concurrency note for L_TLS_DTOR_COUNT. * stdlib/cxa_thread_atexit_impl.c (__cxa_thread_atexit_impl): Don't touch the link map flag. Atomically increment l_tls_dtor_count. (__call_tls_dtors): Atomically decrement l_tls_dtor_count. Avoid taking the load lock and don't touch the link map flag. * stdlib/tst-tls-atexit-nodelete.c: New test case. * stdlib/Makefile (tests): Use it. * stdlib/tst-tls-atexit.c (do_test): dlopen tst-tls-atexit-lib.so again before dlclose. Add conditionals to allow tst-tls-atexit-nodelete test case to use it.
2015-07-16hppa/ia64: _dl_symbol_address: add PLT bypass for rtldMike Frysinger
This symbol is defined in the ldso, and is used both there and libc.so. There is no hidden symbol for it though which leads to relocations in the ldso and the elf/check-localplt test failing. Add a hidden def for rtld to fix all of that. This function/file is only used by hppa & ia64, so no testing is needed for other arches.
2015-07-16Add comment to clarify how the test can failSiddhesh Poyarekar
2015-07-16Set NODELETE flag when opening already open objects with RTLD_NODELETESiddhesh Poyarekar
The DF_1_NODELETE flag is set too late when opening a DSO, due to which, if a DSO is already open, subsequently opening it with RTLD_NODELETE fails to set the DF_1_NODELETE flag. This patch fixes this by setting the flag immediately after bumping the opencount. Verified on x86_64. [BZ #18676] * elf/tst-nodelete-opened.c: New test case. * elf/tst-nodelete-opened-lib.c: New test case module. * elf/Makefile (tests, modules-names): Use them. * elf/dl-open.c (dl_open_worker): Set DF_1_NODELETE flag early.
2015-07-15Modify several tests to use test-skeleton.cArjun Shankar
These tests were skipped by the use-test-skeleton conversion done in commit 29955b5d because they were reused in other tests via the #include directive, and so deemed worth an inspection before they were modified. This has now been done. ChangeLog: 2015-07-09 Arjun Shankar <arjun.is@lostca.se> * elf/tst-leaks1.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * localedata/tst-langinfo.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * math/test-fpucw.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * math/test-tgmath.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * math/test-tgmath2.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * setjmp/tst-setjmp.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * stdio-common/tst-sscanf.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c. * sysdeps/x86_64/tst-audit6.c (main): Converted to ... (do_test): ... this. (TEST_FUNCTION): New macro. Include test-skeleton.c.