History log of /src/libexec/ld.elf_so/arch/sparc |
Revision | Date | Author | Comments |
1.15 | 03-Apr-2018 |
joerg | Rework ifunc support to address a number of short comings: - Move to a shared _rtld_call_ifunc for rel and rela architectures - Architectures using rel format must patch IRELATIVE non-PLT relocations like RELATIVE in additition to the later ifunc handling - Consistently record the delta to the end of the relocation group for non-PLT IRELATIVE relocations
Hidden ifunc is now supported on all ifunc platforms, even when using -fno-plt. The combination of -fno-plt and relro is broken due to incorrect GNU ld output though.
|
1.14 | 13-Dec-2009 |
mrg | branches: 1.14.44; simplify the logic for compat ld.elf_so and move it here. we now can find the libc objdir for multiple compat ld.elf_so's, too.
|
1.13 | 13-Dec-2009 |
mrg | rename LD32DIR to MLIBDIR.
|
1.12 | 06-Jan-2009 |
mrg | move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can grab these values via reach-over more easily.
|
1.11 | 26-Oct-2008 |
mrg | branches: 1.11.2; if LD32DIR is defined: - look in src/compat/lib/libc for libc_pic. - define RTLD_ARCH_SUBDIR to "i386" or "sparc" for amd64 and sparc64 builds, respectively if RTLD_ARCH_SUBDIR is defined, add this path before RTLD_DEFAULT_LIBRARY_PATH in the default search path.
|
1.10 | 04-Jun-2005 |
lukem | Explicitly prefix ld(1) options in LDFLAGS with "-Wl," rather than using the ${LDFLAGS:@F@-Wl,$F@} make substitution because that breaks if LDFLAGS is already set.
|
1.9 | 21-Feb-2004 |
skrll | Move common LDFLAGS into Makefile from arch/*/Makefile.inc
|
1.8 | 20-Feb-2004 |
skrll | Whitespace.
|
1.7 | 24-Sep-2002 |
mycroft | Remove vestiges of VARPSZ.
|
1.6 | 11-Sep-2002 |
mycroft | This ld script is no longer necessary.
|
1.5 | 09-Sep-2002 |
mycroft | Nuke RTLD_RELOCATE_SELF for SPARC.
|
1.4 | 20-Dec-2001 |
thorpej | branches: 1.4.2; Grumble. Put compiler options back into CPPFLAGS for now, since they're needed to build .S files with the correct PIC options.
XXX Really needs cleanup in <bsd.*.mk> to do this properly.
|
1.3 | 14-Dec-2001 |
thorpej | Don't put compiler options into CPPFLAGS.
|
1.2 | 22-Jun-1999 |
christos | We need to compile with -DVARPSZ, because the sparc has a variable page size depending on arch. Make it an error to compile without it. This caused -lposix linked programs to fail.
|
1.1 | 24-Feb-1999 |
christos | Work in progress (does not work yet).
|
1.4.2.1 | 28-May-2004 |
tron | Apply patch (request by skrll in ticket #1702): Bring "ld.elf_so" (mostly) in sync with NetBSD-current: - MI and MD (e.g. under NetBSD-alpha) performance improvements - RTLD_SELF, RTLD_NEXT, RTLD_DEFAULT support - much better structured code - closes PR bin/25464
|
1.11.2.2 | 06-Jan-2011 |
riz | Apply patch (requested by mrg in ticket #1499):
src/compat version 2. this allows building any number of alternate library / program target ABIs. rather than duplicating the list of subdirs and Makefiles to build, it re-traverses the necessary ones. details: - add support for MAKEDIRTARGETENV to share/mk - renames LD32DIR to MLIBDIR - fixes library builds for some subdirs (more was built than needed) - fixes /bin & /sbin apps in compat mode - reduces complexity in src/compat and the rest of the tree - updates ldd netbsd32 support
|
1.11.2.1 | 16-Jan-2009 |
bouyer | branches: 1.11.2.1.4; Pull up following revision(s) (requested by mrg in ticket #265): libexec/ld.elf_so/headers.c: revision 1.27 rescue/list: revision 1.35 libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1 usr.bin/ldd/Makefile.elf: revision 1.1 usr.bin/ldd/Makefile.elf: revision 1.2 usr.bin/ldd/ldd_aout/ldd.c: file removal usr.bin/ldd/Makefile.elf: revision 1.3 libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12 usr.bin/ldd/dummy.c: revision 1.1 gnu/usr.bin/binutils/ld/Makefile: revision 1.28 usr.bin/ldd/elf32/Makefile: revision 1.1 usr.bin/ldd/elf32/Makefile: revision 1.2 usr.bin/ldd/ldd.c: revision 1.3 usr.bin/ldd/elf32/Makefile: revision 1.3 usr.bin/ldd/ldd_elf/Makefile: file removal usr.bin/ldd/ldd.h: revision 1.1 usr.bin/ldd/ldd.c: revision 1.4 usr.bin/ldd/ldd_aout.c: revision 1.1 usr.bin/ldd/Makefile: revision 1.8 usr.bin/ldd/Makefile: revision 1.9 usr.bin/ldd/ldd_elfxx.c: revision 1.1 libexec/ld.elf_so/map_object.c: revision 1.37 usr.bin/ldd/ldd_aout/Makefile: file removal usr.bin/ldd/elf64/Makefile: revision 1.1 rescue/Makefile: revision 1.22 libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1 usr.bin/ldd/ldd_elf/ldd.c: file removal usr.bin/ldd/elf64/Makefile: revision 1.2 usr.bin/ldd/elf64/Makefile: revision 1.3 usr.bin/ldd/aout/Makefile: revision 1.1 libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12 rescue/list.ldd: revision 1.1 usr.bin/ldd/ldd_elf/README: file removal usr.bin/ldd/Makefile.common: revision 1.1 move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can grab these values via reach-over more easily. some fixes for PR#40170: - set NATIVE=yes in the environment for genscripts.sh - set LIB_PATH to /usr/lib/{sparc,i386} for those scripts - set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh - get rid of building an a.out-happy ldd (but keep supporting a.out binaries for the ELF version.) - convert a.out, elf32 and elf64 support into convience libraries and link them right ones in. if elf_ldd() fails on 64 bit platforms, try elf32_ldd() before aout_ldd(). now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199, and it seems that all the issues from README are gone too. add some (uintptr_t) to some casts, so these compile with ELFSIZE=32 *and _LP64. necessary for 32/64 bit combo ldd support. - rework this a bunch to make it work inside /rescue/ldd. - fix alpha build. make sure we set LIBISPRIVATE. fixes build issues reported by moof. make sure we set LIBISPRIVATE. fixes build issues reported by moof.
|
1.11.2.1.4.1 | 14-Dec-2009 |
mrg | merge from -current: >rename LD32DIR to MLIBDIR.
>- adjust the logic for compat ldd: add an elf32_compat module and arrange > for mips64 to build this with MLIBDIR set to o32 >- make mips64 ldd call elf32_compat_ldd as well >- make mips64 elf64 set MLIBDIR to 64 >- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away > soon anyway) > >tested on amd64 and sparc64, and an earlier version tested on mips64.
>if BSD_MK_COMPAT_FILE is defined, .include it.
>simplify the logic for compat ld.elf_so and move it here. we now can >find the libc objdir for multiple compat ld.elf_so's, too.
|
1.14.44.1 | 07-Apr-2018 |
pgoyette | Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
|
1.2 | 13-Dec-2009 |
mrg | simplify the logic for compat ld.elf_so and move it here. we now can find the libc objdir for multiple compat ld.elf_so's, too.
|
1.1 | 06-Jan-2009 |
mrg | branches: 1.1.2; move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can grab these values via reach-over more easily.
|
1.1.2.3 | 06-Jan-2011 |
riz | Apply patch (requested by mrg in ticket #1499):
src/compat version 2. this allows building any number of alternate library / program target ABIs. rather than duplicating the list of subdirs and Makefiles to build, it re-traverses the necessary ones. details: - add support for MAKEDIRTARGETENV to share/mk - renames LD32DIR to MLIBDIR - fixes library builds for some subdirs (more was built than needed) - fixes /bin & /sbin apps in compat mode - reduces complexity in src/compat and the rest of the tree - updates ldd netbsd32 support
|
1.1.2.2 | 16-Jan-2009 |
bouyer | branches: 1.1.2.2.4; Pull up following revision(s) (requested by mrg in ticket #265): libexec/ld.elf_so/headers.c: revision 1.27 rescue/list: revision 1.35 libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1 usr.bin/ldd/Makefile.elf: revision 1.1 usr.bin/ldd/Makefile.elf: revision 1.2 usr.bin/ldd/ldd_aout/ldd.c: file removal usr.bin/ldd/Makefile.elf: revision 1.3 libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12 usr.bin/ldd/dummy.c: revision 1.1 gnu/usr.bin/binutils/ld/Makefile: revision 1.28 usr.bin/ldd/elf32/Makefile: revision 1.1 usr.bin/ldd/elf32/Makefile: revision 1.2 usr.bin/ldd/ldd.c: revision 1.3 usr.bin/ldd/elf32/Makefile: revision 1.3 usr.bin/ldd/ldd_elf/Makefile: file removal usr.bin/ldd/ldd.h: revision 1.1 usr.bin/ldd/ldd.c: revision 1.4 usr.bin/ldd/ldd_aout.c: revision 1.1 usr.bin/ldd/Makefile: revision 1.8 usr.bin/ldd/Makefile: revision 1.9 usr.bin/ldd/ldd_elfxx.c: revision 1.1 libexec/ld.elf_so/map_object.c: revision 1.37 usr.bin/ldd/ldd_aout/Makefile: file removal usr.bin/ldd/elf64/Makefile: revision 1.1 rescue/Makefile: revision 1.22 libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1 usr.bin/ldd/ldd_elf/ldd.c: file removal usr.bin/ldd/elf64/Makefile: revision 1.2 usr.bin/ldd/elf64/Makefile: revision 1.3 usr.bin/ldd/aout/Makefile: revision 1.1 libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12 rescue/list.ldd: revision 1.1 usr.bin/ldd/ldd_elf/README: file removal usr.bin/ldd/Makefile.common: revision 1.1 move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can grab these values via reach-over more easily. some fixes for PR#40170: - set NATIVE=yes in the environment for genscripts.sh - set LIB_PATH to /usr/lib/{sparc,i386} for those scripts - set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh - get rid of building an a.out-happy ldd (but keep supporting a.out binaries for the ELF version.) - convert a.out, elf32 and elf64 support into convience libraries and link them right ones in. if elf_ldd() fails on 64 bit platforms, try elf32_ldd() before aout_ldd(). now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199, and it seems that all the issues from README are gone too. add some (uintptr_t) to some casts, so these compile with ELFSIZE=32 *and _LP64. necessary for 32/64 bit combo ldd support. - rework this a bunch to make it work inside /rescue/ldd. - fix alpha build. make sure we set LIBISPRIVATE. fixes build issues reported by moof. make sure we set LIBISPRIVATE. fixes build issues reported by moof.
|
1.1.2.1 | 06-Jan-2009 |
bouyer | file Makefile.ld32 was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
|
1.1.2.2.4.1 | 14-Dec-2009 |
mrg | merge from -current: >rename LD32DIR to MLIBDIR.
>- adjust the logic for compat ldd: add an elf32_compat module and arrange > for mips64 to build this with MLIBDIR set to o32 >- make mips64 ldd call elf32_compat_ldd as well >- make mips64 elf64 set MLIBDIR to 64 >- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away > soon anyway) > >tested on amd64 and sparc64, and an earlier version tested on mips64.
>if BSD_MK_COMPAT_FILE is defined, .include it.
>simplify the logic for compat ld.elf_so and move it here. we now can >find the libc objdir for multiple compat ld.elf_so's, too.
|
1.2 | 11-Sep-2002 |
mycroft | This ld script is no longer necessary.
|
1.1 | 09-Sep-2002 |
mycroft | Nuke RTLD_RELOCATE_SELF for SPARC.
|
1.60 | 03-Aug-2024 |
riastradh | ld.elf_so(1): Nix trailing whitespace.
No functional change intended.
|
1.59 | 23-Jul-2024 |
uwe | ld.elf_so: Cite reference for SPARC ELF relocations
PR lib/58455: Missing references for processor-specific ELF relocation semantics
|
1.58 | 24-Sep-2023 |
martin | branches: 1.58.2; Fix debug code
|
1.57 | 04-Jun-2023 |
joerg | Fix interactions of initial-exec TLS model and dlopen
(1) If an initial-exec relocation was used for a non-local symbol (i.e. the definition of the symbol is in a different DSO), the computation of the static TLS offset used the wrong DSO. This would effectively mean the wrong address was computed (PR toolchain/50277, PR pkg/57445).
Fix this by forcing the computation of the correct DSO (the one defining the symbol).
This code uses __UNCONST to avoid the vast interface changes for this special case.
(2) If symbols from a DSO loaded via dlopen are used with both global-dynamic/local-dynamic and initial-exec relocations AND a initial-exec relocation was resolved first in a thread, a split brain situation could exist where the dynamic relocations would use one memory block (separate allocation) and the initial-exec relocations the static per-thread TLS space.
(3) If the initial-exec relocation in (2) is seen after any thread has already used a GD/LD allocation, bail out. Since IE relocations are used only in the GOT, this will prevent the dlopen. This is a bit more aggressive than necessary, but a full blown reference counting doesn't seem to be justified.
|
1.56 | 02-Jun-2023 |
andvar | follow the steps of Andrew Doran (ad) commit and fix more s/loose/lose/ typos. also s/beyound/beyond/ and few others along the way, mainly in comments.
|
1.55 | 03-Apr-2018 |
joerg | branches: 1.55.4; 1.55.12; Rework ifunc support to address a number of short comings: - Move to a shared _rtld_call_ifunc for rel and rela architectures - Architectures using rel format must patch IRELATIVE non-PLT relocations like RELATIVE in additition to the later ifunc handling - Consistently record the delta to the end of the relocation group for non-PLT IRELATIVE relocations
Hidden ifunc is now supported on all ifunc platforms, even when using -fno-plt. The combination of -fno-plt and relro is broken due to incorrect GNU ld output though.
|
1.54 | 29-Mar-2018 |
joerg | Move the complex logic for dynamically writing branches from ld.elf_so into a header for reuse in crt0.o for static ifunc support. Change the existing logic for sparc64 to use the Bicc variant of ba,a as it allows +-8MB displacement compared to the BPcc variant's +-1MB. Teach the sparc variant the same trick for using ba,a and not sethi+jmp when possible.
|
1.53 | 25-Mar-2018 |
joerg | Don't skip PLT processing for the main binary. It can still contain ifunc references.
|
1.52 | 12-Aug-2017 |
joerg | branches: 1.52.2; Add sparc/sparc64 support for irelative relocations.
|
1.51 | 10-Aug-2017 |
joerg | Add IRELATIVE support for ARM, X86 and PowerPC.
|
1.50 | 19-Jun-2017 |
joerg | Replace COMBREL with just-in-time check in _rtld_relocate_nonplt_objects.
The COMBREL logic predates thread-safety of the dynamic linker and breaks the use of shared locks for the common symbol lookup case. It is unlikely to provide any benefit for lazy binding or PLT lookups, so provide equivalent functionality in the non-PLT relocation handling loop by checking if the symbol used by the current relocation is the same as the one used during the last lookup. No inter-object cachine is done as it is also unlikely to be benefical.
Testing with Firefox startup on AMD64 shows a small performance gain by the new method.
|
1.49 | 15-Jun-2017 |
joerg | Fix indentation.
|
1.48 | 25-Aug-2014 |
joerg | branches: 1.48.8; Add basic support for indirect functions. It allows providing a public function symbol with an implementation choosen at run time. Refactor calls to functions by address in ld.elf_so to create temporary function descriptors on the stack, if the address is not leaked outside.
Limitations: - no support for initialising static storage with function pointers - no support for unnamed resolver functions
Inspired by FreeBSD's r228435 by kib@freebsd.org.
|
1.47 | 31-Mar-2011 |
nakayama | branches: 1.47.22; Add missing comma.
|
1.46 | 30-Mar-2011 |
martin | Add support for TLS relocations
|
1.45 | 25-Mar-2011 |
joerg | Add basic locking to ld.elf_so.
|
1.44 | 06-Aug-2010 |
joerg | Reduce header pollution for mdreloc.c. Make Obj_Entry argument of _rtld_relocate_nonplt_objects non-const in preparation for TLS support.
|
1.43 | 13-Jan-2010 |
christos | PR/39240: Satoshi Suetake: Don't fail when attempting to resolve weak symbols when we are doing immediate binding, leave them alone and they will be dealt with later during lazy binding. From skrll@
|
1.42 | 16-Mar-2009 |
lukem | Fix const issues (cast const pointers to "const uint8_t *" instead of "caddr_t")
NOTE: change based on ../i386/mdreloc.c 1.27 XXX: not compile tested
|
1.41 | 24-Jul-2008 |
matt | branches: 1.41.4; 1.41.6; Refactor common code to _rtld_relocate_plt_object to i386 and arm so they act like the other versions. In _rtld_bind, if the result is 0, call _rtld_die. Initialize _rtld_sym_zero.st_value to -_rtld_objself.maprelocbase. Now when the symbol is resolved, st_value + maprelocbase will equal 0 and the above check in _rtld_bind will fire and a call to NULL will be avoided.
|
1.40 | 28-Apr-2008 |
martin | branches: 1.40.2; Remove clause 3 and 4 from TNF licenses
|
1.39 | 20-May-2006 |
mrg | branches: 1.39.18; in _rtld_bind() initialise result to appease GCC4.
|
1.38 | 24-Dec-2005 |
perry | Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
1.37 | 20-Aug-2005 |
skrll | Add __RCSID.
|
1.36 | 15-Aug-2005 |
skrll | KNF
|
1.35 | 09-Jan-2005 |
martin | Add LD_BIND_NOW support for sparc and remove some relocation types that are not supposed to happen in 32bit code. From Nick Hudson.
|
1.34 | 05-Jan-2005 |
martin | Add support for unaligned relocs on sparc, from PR 26858. Should also fix PR 25901 and PR 18296.
|
1.33 | 24-Jul-2003 |
skrll | branches: 1.33.4; ANSIfy and de-__P().
|
1.32 | 26-Sep-2002 |
mycroft | Remove the `self' args to _rtld_relocate_objects() and _rtld_relocate_nonplt_objects().
|
1.31 | 26-Sep-2002 |
mycroft | Remove a meaningless bit from a rdbg().
|
1.30 | 26-Sep-2002 |
mycroft | Make the stack frame 96 bytes, like GCC does.
|
1.29 | 26-Sep-2002 |
mycroft | Tweak the save instruction in the PLT stub rather than adding an instruction to the binder entry stub...
|
1.28 | 25-Sep-2002 |
mycroft | For consistency, use Elf_Word* to point to code, not Elf_Addr*.
|
1.27 | 25-Sep-2002 |
mycroft | Push the _rtld_bind() interface into MD code -- it's just a trivial wrapper anyway.
|
1.26 | 12-Sep-2002 |
mycroft | Nuke -DRTLD_RELOCATE_SELF and `dodebug' from orbit.
|
1.25 | 12-Sep-2002 |
mycroft | _rtld_bind_start() is not used in MI code, so declare it in the MD code.
|
1.24 | 11-Sep-2002 |
mycroft | Do the _rtld_relocate_nonplt_self() thing for SPARC.
|
1.23 | 09-Sep-2002 |
mycroft | Nuke RTLD_RELOCATE_SELF for SPARC.
|
1.22 | 06-Sep-2002 |
mycroft | Expand the comment about the R_TYPE(RELATIVE) special-case, as it's not quite obvious from the code. Also, just do it all the time, as an optimization.
|
1.21 | 06-Sep-2002 |
mycroft | Make the reloc tables const.
|
1.20 | 06-Sep-2002 |
mycroft | Pass down an additional flag to _rtld_relocate_nonplt_objects() which indicates whether we're relocating ld.elf_so itself. Use this in some places rather than hackish tests on `dodebug'. (The Alpha and HPPA `dodebug' tests were actually noops, because RTLD_RELOCATE_SELF is not set, and therefore dodebug is always true.)
|
1.19 | 06-Sep-2002 |
mycroft | Re-poison a lot of consts, now that the mark shite is gone.
|
1.18 | 06-Sep-2002 |
mycroft | Split _rtld_relocate_plt_object() into two MD functions: * _rtld_relocate_plt_lazy() fixes up all the relocs pointing to the PLT. (On most platforms it just does a simple base-relative fixup; on SPARC it does nothing.) * _rtld_relocate_plt_object() does immediate binding for a PLT entry. The basic gist is that this saves a bit of time on SPARC (where the iteration through the pltrela table was gratuitous), and a little less time on all other platforms. A whole lot of #ifdef'ed crap is moved out of reloc.c, too.
NOT tested on: hppa sh x86_64
|
1.17 | 06-Sep-2002 |
mycroft | Repair a slight biff I made earlier -- do not exit the loop in _rtld_relocate_nonplt_objects() early.
|
1.16 | 05-Sep-2002 |
mycroft | Partially fix up some debug printf()s that don't need to use defobj.
|
1.15 | 05-Sep-2002 |
mycroft | A few things: * Pass a symbol number to _rtld_find_symdef(), not a r_info. * Don't try to do a symbol lookup when we find an unsupported relocation; instead get the symbol name from the referencing object's strtab. * Add preliminary support for `-z combreloc'-style startup optimization on i386, `#ifdef COMBRELOC'.
|
1.14 | 05-Sep-2002 |
mycroft | Rename _rtld_relocate_nonplt_object() to _rtld_relocate_nonplt_objects(), and push the outer loop into it. This actually shaves a couple % off startup time at least on PCs.
|
1.13 | 05-Sep-2002 |
mycroft | Split _rtld_relocate_nonplt_object() into separate MD files.
|
1.12 | 05-Sep-2002 |
junyoung | Remove unused arguments of _rtld_find_symdef().
|
1.11 | 05-Sep-2002 |
mycroft | Make _rtld_setup_pltgot() a consistent interface on all platforms.
|
1.10 | 25-Apr-2001 |
kleink | branches: 1.10.2; Sync with <sys/exec_elf.h> rev. 1.45: ElfNN_RelA -> ElfNN_Rela.
|
1.9 | 07-Nov-1999 |
mycroft | branches: 1.9.4; Make this more likely to compile with ld.elf_so changes. (But this is untested.)
|
1.8 | 01-Mar-1999 |
christos | branches: 1.8.6; fix rdbg macro args.
|
1.7 | 01-Mar-1999 |
christos | KNF
|
1.6 | 27-Feb-1999 |
pk | * Make changing the PLT slot entry (lazy function binding) thread-safe. * Insert `iflush' instructions for the patched words in PLT entries.
|
1.5 | 27-Feb-1999 |
pk | Add comment on the necessity of having to look at implicit memory addends even though the sparc architecture uses `Elf_Rela' structures exclusively.
|
1.4 | 27-Feb-1999 |
pk | Target bitmask for RELOC_RELATIVE should be a full word. Also for RELOC_RELATIVEs, add in the memory contents in addition to r_addend.
|
1.3 | 26-Feb-1999 |
christos | Relative relocations should use addend.
|
1.2 | 26-Feb-1999 |
pk | Take care of `load address relative' relocations. Ignore JMP_SLOTs in non-plt relocations.
|
1.1 | 24-Feb-1999 |
christos | Work in progress (does not work yet).
|
1.8.6.1 | 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
1.9.4.1 | 01-May-2001 |
he | Pull up revision 1.10 (requested by kleink): Rename ElfNN_RelA to ElfNN_Rela, which is what SVR4 ABIs and the rest of the world uses. Fixes PR#12274.
|
1.10.2.1 | 28-May-2004 |
tron | Apply patch (request by skrll in ticket #1702): Bring "ld.elf_so" (mostly) in sync with NetBSD-current: - MI and MD (e.g. under NetBSD-alpha) performance improvements - RTLD_SELF, RTLD_NEXT, RTLD_DEFAULT support - much better structured code - closes PR bin/25464
|
1.33.4.1 | 16-Apr-2005 |
tron | Pull up revision 1.34 (requested by skrll in ticket #1090): Add support for unaligned relocs on sparc, from PR 26858. Should also fix PR 25901 and PR 18296.
|
1.39.18.1 | 18-May-2008 |
yamt | sync with head.
|
1.40.2.1 | 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
1.41.6.1 | 13-May-2009 |
jym | Sync with HEAD.
Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
|
1.41.4.1 | 17-Mar-2012 |
bouyer | Pull up following revision(s) via patch (requested by skrll in ticket #1724): rescue/list.ldd: revision 1.4 lib/libc/dlfcn/dlfcn_elf.c: revision 1.7 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.57 distrib/sets/lists/comp/mi: revision 1.1512 share/man/man3/Makefile: revision 1.56 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.58 usr.bin/ldd/ldd.c: revision 1.15 libexec/ld.elf_so/rtld.h: revision 1.84 share/man/man3/dl_iterate_phdr.3: revision 1.1 libexec/ld.elf_so/rtld.c: revision 1.129 libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.44 libexec/ld.elf_so/rtld.h: revision 1.89 libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.36 libexec/ld.elf_so/map_object.c: revision 1.41 libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.37 libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.46 include/link_elf.h: revision 1.10 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.29 libexec/ld.elf_so/arch/vax/mdreloc.c: revision 1.26 libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.34 libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.31 libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.35 libexec/ld.elf_so/Makefile: revision 1.94 libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.32 libexec/ld.elf_so/Makefile: revision 1.95 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.31 libexec/ld.elf_so/Makefile: revision 1.96 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.32 libexec/ld.elf_so/reloc.c: revision 1.98 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.33 sys/sys/exec_elf.h: revision 1.106 libexec/ld.elf_so/rtld.c: revision 1.130 libexec/ld.elf_so/load.c: revision 1.37 libexec/ld.elf_so/rtld.c: revision 1.131 libexec/ld.elf_so/load.c: revision 1.38 libexec/ld.elf_so/rtld.h: revision 1.90 libexec/ld.elf_so/headers.c: revision 1.36 libexec/ld.elf_so/rtld.h: revision 1.95 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.30 libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.25 libexec/ld.elf_so/symbol.c: revision 1.50 libexec/ld.elf_so/symbol.c: revision 1.51 libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.43 libexec/ld.elf_so/symbol.c: revision 1.52 libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.27 libexec/ld.elf_so/symbol.c: revision 1.54 PR/39240: Satoshi Suetake: Don't fail when attempting to resolve weak symbols when we are doing immediate binding, leave them alone and they will be dealt with later during lazy binding. From skrll@ Implement negative cache checks for symbol lookups. Uses the Donelist idea from FreeBSD. Use alloca(3) instead of local xmalloc for creating our DoneLists. This allows threaded programs to use us a little better, PR lib/43005. Implement dl_iterate_phdr. Somewhat taken from FreeBSD. Manual page from OpenBSD.
|
1.47.22.1 | 06-Mar-2016 |
martin | Catch up to -current, via patch, requested by christos in ticket #1126:
|
1.48.8.1 | 04-Jul-2017 |
martin | Pull up following revision(s) (requested by joerg in ticket #64): libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.40 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.41 libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.44 libexec/ld.elf_so/arch/riscv/mdreloc.c: revision 1.3 libexec/ld.elf_so/arch/aarch64/mdreloc.c: revision 1.3 libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.60 libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.32 libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.61 libexec/ld.elf_so/arch/or1k/mdreloc.c: revision 1.2 libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.50 libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.33 libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.34 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.39 libexec/ld.elf_so/symbol.c: revision 1.68 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.66 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.67 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.68 libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.42 libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.54 libexec/ld.elf_so/Makefile: revision 1.137 libexec/ld.elf_so/arch/vax/mdreloc.c: revision 1.32 libexec/ld.elf_so/rtld.h: revision 1.127 libexec/ld.elf_so/arch/vax/mdreloc.c: revision 1.33 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.38 libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.42 libexec/ld.elf_so/map_object.c: revision 1.58 libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.49 Replace COMBREL with just-in-time check in _rtld_relocate_nonplt_objects. The COMBREL logic predates thread-safety of the dynamic linker and breaks the use of shared locks for the common symbol lookup case. It is unlikely to provide any benefit for lazy binding or PLT lookups, so provide equivalent functionality in the non-PLT relocation handling loop by checking if the symbol used by the current relocation is the same as the one used during the last lookup. No inter-object cachine is done as it is also unlikely to be benefical. Testing with Firefox startup on AMD64 shows a small performance gain by the new method. Drop symbol number from default branch diagnostic, it isn't set at this point and most likely not valid either. Expand symnum, GCC's uninitialized used tracking is too imprecise. Fix C&P bug. Deal with more MIPS hacks overriding def. Add last_symnum, move up def and defobj. Add back symnum, fix debug print. Replace last use of r_type. Fix indentation. Fix indentation.
|
1.52.2.2 | 07-Apr-2018 |
pgoyette | Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
|
1.52.2.1 | 30-Mar-2018 |
pgoyette | Resolve conflicts between branch and HEAD
|
1.55.12.1 | 01-Aug-2023 |
martin | Pull up following revision(s) (requested by riastradh in ticket #297):
distrib/sets/lists/tests/shl.mi: revision 1.14 distrib/sets/lists/tests/shl.mi: revision 1.15 distrib/sets/lists/tests/shl.mi: revision 1.16 tests/libexec/ld.elf_so/helper_def_static/h_def_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_def_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_def_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile: revision 1.2 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.75 distrib/sets/lists/tests/mi: revision 1.1265 libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.36 libexec/ld.elf_so/rtld.c: revision 1.214 tests/libexec/ld.elf_so/helper_onlydef_static/Makefile: revision 1.1 distrib/sets/lists/debug/mi: revision 1.400 tests/libexec/ld.elf_so/helper_onlydef_static/Makefile: revision 1.2 distrib/sets/lists/debug/mi: revision 1.401 distrib/sets/lists/debug/mi: revision 1.402 tests/libexec/ld.elf_so/helper_dso2/Makefile: revision 1.2 distrib/sets/lists/debug/mi: revision 1.403 tests/libexec/ld.elf_so/helper_symver_dso0/Makefile: revision 1.2 libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.48 distrib/sets/lists/debug/mi: revision 1.406 tests/libexec/ld.elf_so/helper_use_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_use_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_ifunc_dso/Makefile: revision 1.2 libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.70 libexec/ld.elf_so/arch/aarch64/mdreloc.c: revision 1.18 tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/Makefile: revision 1.13 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.46 libexec/ld.elf_so/rtld.h: revision 1.146 tests/libexec/ld.elf_so/Makefile: revision 1.14 distrib/sets/lists/debug/shl.mi: revision 1.306 tests/libexec/ld.elf_so/Makefile: revision 1.15 tests/libexec/ld.elf_so/helper_abuse_static/Makefile: revision 1.1 distrib/sets/lists/debug/shl.mi: revision 1.307 tests/libexec/ld.elf_so/Makefile: revision 1.16 tests/libexec/ld.elf_so/helper_abuse_static/Makefile: revision 1.2 distrib/sets/lists/debug/shl.mi: revision 1.308 tests/libexec/ld.elf_so/Makefile: revision 1.17 distrib/sets/lists/debug/shl.mi: revision 1.309 tests/libexec/ld.elf_so/Makefile: revision 1.18 tests/libexec/ld.elf_so/Makefile: revision 1.19 libexec/ld.elf_so/tls.c: revision 1.16 libexec/ld.elf_so/tls.c: revision 1.17 libexec/ld.elf_so/tls.c: revision 1.18 libexec/ld.elf_so/tls.c: revision 1.19 tests/libexec/ld.elf_so/helper_onlydef_static/h_onlydef_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_use_static/h_use_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_use_static/h_use_static.c: revision 1.2 tests/libexec/ld.elf_so/helper_def_static/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_def_static/Makefile: revision 1.2 libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.50 distrib/sets/lists/debug/shl.mi: revision 1.310 libexec/ld.elf_so/README.TLS: revision 1.6 distrib/sets/lists/debug/shl.mi: revision 1.311 distrib/sets/lists/debug/shl.mi: revision 1.314 tests/libexec/ld.elf_so/helper_dso3/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_symver_dso1/Makefile: revision 1.4 libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.63 tests/libexec/ld.elf_so/helper_def_dynamic/h_def_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlydef/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_onlydef/Makefile: revision 1.2 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.10 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.11 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.12 libexec/ld.elf_so/map_object.c: revision 1.66 tests/libexec/ld.elf_so/helper.mk: revision 1.1 libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.57 libexec/ld.elf_so/map_object.c: revision 1.67 tests/libexec/ld.elf_so/helper_onlydef/h_onlydef.c: revision 1.1 tests/libexec/ld.elf_so/helper_symver_dso2/Makefile: revision 1.4 tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.3 tests/libexec/ld.elf_so/helper_use_dynamic/h_use_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_abuse_static/h_abuse_static.c: revision 1.1 libexec/ld.elf_so/arch/riscv/mdreloc.c: revision 1.9 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.1 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.2 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.3 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.4 tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.5 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.6 libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.34 tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.7 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.42 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.8 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.43 libexec/ld.elf_so/arch/or1k/mdreloc.c: revision 1.4 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.9 tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_abuse_dynamic/h_abuse_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlyctor_dynamic/h_onlyctor_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_static/h_onlyuse_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_dynamic/h_onlyuse_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_dso1/Makefile: revision 1.2 distrib/sets/lists/tests/shl.mi: revision 1.12 distrib/sets/lists/tests/shl.mi: revision 1.13 libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.44 (all via patch)
ld.elf_so: New test for extern initial-exec TLS, PR toolchain/50277.
ld.elf_so: Fix extern TLS test to match PR toolchain/50277. Now it's actually testing the problem. ld.elf_so: Nix inadvertently committed private test program. ld.elf_so: Fix set lists for MKDEBUG=yes builds with t_tls_extern.
ld.elf_so: Sprinkle tls debug messages.
ld.elf_so: Make tls alloc debug messages more detailed and greppable.
ld.elf_so: Test variations on PR toolchain/50277.
ld.elf_so: Test extern dynamic TLS too.
ld.elf_so: Factor out logic in TLS tests to make writing more easier. No functional change intended.
ld.elf_so: Test TLS abuse of static def, dynamic use and vice versa.
ld.elf_so: Shorter test names. No functional non-cosmetic change intended.
ld.elf_so: Separately test eager and lazy resolution of def tls ptr. eager: before loading use library lazy: after loading use library
Add recent ld.elf_so test helpers debug info ld.elf_so: Add new files to debug/shl.mi.
ld.elf_so: tls_extern dynamic_defabuse_eager must xfail differently. If a symbol has already been resolved as dynamic TLS, any library that tries to use it as static TLS cannot be dlopened.
ld.elf_so: Test another edge case of mismatched TLS models. One library defines a symbol and _doesn't_ use it, so it has no indication of whether the symbol is for static TLS or dynamic TLS, and then two other libraries use it in different ways.
ld.elf_so: Test dynamic-then-static abuse via ctor.
ld.elf_so: Fix missing tab in debug/shl.mi in last change.
Fix interactions of initial-exec TLS model and dlopen (1) If an initial-exec relocation was used for a non-local symbol (i.e. the definition of the symbol is in a different DSO), the computation of the static TLS offset used the wrong DSO. This would effectively mean the wrong address was computed (PR toolchain/50277, PR pkg/57445). Fix this by forcing the computation of the correct DSO (the one defining the symbol). This code uses __UNCONST to avoid the vast interface changes for this special case. (2) If symbols from a DSO loaded via dlopen are used with both global-dynamic/local-dynamic and initial-exec relocations AND a initial-exec relocation was resolved first in a thread, a split brain situation could exist where the dynamic relocations would use one memory block (separate allocation) and the initial-exec relocations the static per-thread TLS space. (3) If the initial-exec relocation in (2) is seen after any thread has already used a GD/LD allocation, bail out. Since IE relocations are used only in the GOT, this will prevent the dlopen. This is a bit more aggressive than necessary, but a full blown reference counting doesn't seem to be justified. Avoid using uninitialized variable "symnum" when building with DEBUG enabled by borrowing the rdbg_symname() macro from arch/x86_64. ld.elf_so: Sprinkle more debug messages on dlopen and error. PR pkg/57445 Fix MKDEBUGLIB build by adding these installed files to the debug set list. XXX One could argue that these files are not of any use, so why install them? I don't have a good argument either way, and this is (for now) a simple work-around for PR bin/57455 Please feel free to commit a different fix to avoid installing these files at all. Fix markup of libh_ MKDEBUGLIB=yes only files TLS variant I archs need to fudge the offset by the size of the TCB. tests/libexec/ld.elf_so: Fix helper library makefiles. 1. Consolidate logic into a single helper.mk to reduce duplication. 2. Set NO* variables, not MK* variables which are reserved for user. 3. Avoid eager X!= in favour of lazy ${X:sh}. 4. Mark _g.a set list entries obsolete. Never should've been built! PR misc/57462
|
1.55.4.1 | 04-Aug-2023 |
martin | Pull up following revision(s), all via patch, (requested by riastradh in ticket #1699):
distrib/sets/lists/tests/shl.mi: revision 1.14 distrib/sets/lists/tests/shl.mi: revision 1.15 distrib/sets/lists/tests/shl.mi: revision 1.16 tests/libexec/ld.elf_so/helper_def_static/h_def_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_def_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_def_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_static/Makefile: revision 1.2 libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.75 distrib/sets/lists/tests/mi: revision 1.1265 libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.36 libexec/ld.elf_so/rtld.c: revision 1.214 tests/libexec/ld.elf_so/helper_onlydef_static/Makefile: revision 1.1 distrib/sets/lists/debug/mi: revision 1.400 tests/libexec/ld.elf_so/helper_onlydef_static/Makefile: revision 1.2 distrib/sets/lists/debug/mi: revision 1.401 distrib/sets/lists/debug/mi: revision 1.402 tests/libexec/ld.elf_so/helper_dso2/Makefile: revision 1.2 distrib/sets/lists/debug/mi: revision 1.403 tests/libexec/ld.elf_so/helper_symver_dso0/Makefile: revision 1.2 libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.48 distrib/sets/lists/debug/mi: revision 1.406 tests/libexec/ld.elf_so/helper_use_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_use_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_ifunc_dso/Makefile: revision 1.2 libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.70 libexec/ld.elf_so/arch/aarch64/mdreloc.c: revision 1.18 tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_abuse_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/Makefile: revision 1.13 libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.46 libexec/ld.elf_so/rtld.h: revision 1.146 tests/libexec/ld.elf_so/Makefile: revision 1.14 distrib/sets/lists/debug/shl.mi: revision 1.306 tests/libexec/ld.elf_so/Makefile: revision 1.15 tests/libexec/ld.elf_so/helper_abuse_static/Makefile: revision 1.1 distrib/sets/lists/debug/shl.mi: revision 1.307 tests/libexec/ld.elf_so/Makefile: revision 1.16 tests/libexec/ld.elf_so/helper_abuse_static/Makefile: revision 1.2 distrib/sets/lists/debug/shl.mi: revision 1.308 tests/libexec/ld.elf_so/Makefile: revision 1.17 distrib/sets/lists/debug/shl.mi: revision 1.309 tests/libexec/ld.elf_so/Makefile: revision 1.18 tests/libexec/ld.elf_so/Makefile: revision 1.19 libexec/ld.elf_so/tls.c: revision 1.16 libexec/ld.elf_so/tls.c: revision 1.17 libexec/ld.elf_so/tls.c: revision 1.18 libexec/ld.elf_so/tls.c: revision 1.19 tests/libexec/ld.elf_so/helper_onlydef_static/h_onlydef_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_use_static/h_use_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_use_static/h_use_static.c: revision 1.2 tests/libexec/ld.elf_so/helper_def_static/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_def_static/Makefile: revision 1.2 libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.50 distrib/sets/lists/debug/shl.mi: revision 1.310 libexec/ld.elf_so/README.TLS: revision 1.6 distrib/sets/lists/debug/shl.mi: revision 1.311 distrib/sets/lists/debug/shl.mi: revision 1.314 tests/libexec/ld.elf_so/helper_dso3/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_symver_dso1/Makefile: revision 1.4 libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.63 tests/libexec/ld.elf_so/helper_def_dynamic/h_def_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlydef/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_onlydef/Makefile: revision 1.2 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.10 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.11 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.12 libexec/ld.elf_so/map_object.c: revision 1.66 tests/libexec/ld.elf_so/helper.mk: revision 1.1 libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.57 libexec/ld.elf_so/map_object.c: revision 1.67 tests/libexec/ld.elf_so/helper_onlydef/h_onlydef.c: revision 1.1 tests/libexec/ld.elf_so/helper_symver_dso2/Makefile: revision 1.4 tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_use_static/Makefile: revision 1.3 tests/libexec/ld.elf_so/helper_use_dynamic/h_use_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_abuse_static/h_abuse_static.c: revision 1.1 libexec/ld.elf_so/arch/riscv/mdreloc.c: revision 1.9 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.1 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.2 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.3 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.4 tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.5 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.6 libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.34 tests/libexec/ld.elf_so/helper_onlyctor_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.7 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.42 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.8 libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.43 libexec/ld.elf_so/arch/or1k/mdreloc.c: revision 1.4 tests/libexec/ld.elf_so/t_tls_extern.c: revision 1.9 tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_dynamic/Makefile: revision 1.2 tests/libexec/ld.elf_so/helper_abuse_dynamic/h_abuse_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlyctor_dynamic/h_onlyctor_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_static/h_onlyuse_static.c: revision 1.1 tests/libexec/ld.elf_so/helper_onlyuse_dynamic/h_onlyuse_dynamic.c: revision 1.1 tests/libexec/ld.elf_so/helper_dso1/Makefile: revision 1.2 distrib/sets/lists/tests/shl.mi: revision 1.12 distrib/sets/lists/tests/shl.mi: revision 1.13 libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.44
ld.elf_so: New test for extern initial-exec TLS, PR toolchain/50277.
ld.elf_so: Fix extern TLS test to match PR toolchain/50277. Now it's actually testing the problem. ld.elf_so: Nix inadvertently committed private test program. ld.elf_so: Fix set lists for MKDEBUG=yes builds with t_tls_extern.
ld.elf_so: Sprinkle tls debug messages.
ld.elf_so: Make tls alloc debug messages more detailed and greppable.
ld.elf_so: Test variations on PR toolchain/50277.
ld.elf_so: Test extern dynamic TLS too.
ld.elf_so: Factor out logic in TLS tests to make writing more easier. No functional change intended.
ld.elf_so: Test TLS abuse of static def, dynamic use and vice versa.
ld.elf_so: Shorter test names. No functional non-cosmetic change intended.
ld.elf_so: Separately test eager and lazy resolution of def tls ptr. eager: before loading use library lazy: after loading use library
Add recent ld.elf_so test helpers debug info ld.elf_so: Add new files to debug/shl.mi.
ld.elf_so: tls_extern dynamic_defabuse_eager must xfail differently. If a symbol has already been resolved as dynamic TLS, any library that tries to use it as static TLS cannot be dlopened.
ld.elf_so: Test another edge case of mismatched TLS models. One library defines a symbol and _doesn't_ use it, so it has no indication of whether the symbol is for static TLS or dynamic TLS, and then two other libraries use it in different ways.
ld.elf_so: Test dynamic-then-static abuse via ctor.
ld.elf_so: Fix missing tab in debug/shl.mi in last change.
Fix interactions of initial-exec TLS model and dlopen
(1) If an initial-exec relocation was used for a non-local symbol (i.e. the definition of the symbol is in a different DSO), the computation of the static TLS offset used the wrong DSO.
This would effectively mean the wrong address was computed (PR toolchain/50277, PR pkg/57445). Fix this by forcing the computation of the correct DSO (the one defining the symbol). This code uses __UNCONST to avoid the vast interface changes for this special case.
(2) If symbols from a DSO loaded via dlopen are used with both global-dynamic/local-dynamic and initial-exec relocations AND a initial-exec relocation was resolved first in a thread, a split brain situation could exist where the dynamic relocations would use one memory block (separate allocation) and the initial-exec relocations the static per-thread TLS space.
(3) If the initial-exec relocation in (2) is seen after any thread has already used a GD/LD allocation, bail out. Since IE relocations are used only in the GOT, this will prevent the dlopen. This is a bit more aggressive than necessary, but a full blown reference counting doesn't seem to be justified. Avoid using uninitialized variable "symnum" when building with DEBUG enabled by borrowing the rdbg_symname() macro from arch/x86_64. ld.elf_so: Sprinkle more debug messages on dlopen and error.
PR pkg/57445
Fix MKDEBUGLIB build by adding these installed files to the debug set list.
One could argue that these files are not of any use, so why install them? I don't have a good argument either way, and this is (for now) a simple work-around for PR bin/57455 Please feel free to commit a different fix to avoid installing these files at all.
Fix markup of libh_ MKDEBUGLIB=yes only files
TLS variant I archs need to fudge the offset by the size of the TCB. tests/libexec/ld.elf_so: Fix helper library makefiles. 1. Consolidate logic into a single helper.mk to reduce duplication. 2. Set NO* variables, not MK* variables which are reserved for user. 3. Avoid eager X!= in favour of lazy ${X:sh}. 4. Mark _g.a set list entries obsolete. Never should've been built! PR misc/57462
|
1.58.2.1 | 02-Aug-2025 |
perseant | Sync with HEAD
|
1.16 | 28-Apr-2008 |
martin | Remove clause 3 and 4 from TNF licenses
|
1.15 | 01-Mar-2003 |
mycroft | branches: 1.15.30; Update copyright.
|
1.14 | 27-Feb-2003 |
mycroft | Adjust for the fact that the GOT is all 0s in new binutils -- do the trick of disassembling a call to _DYNAMIC to determine its real address, and using the first entry of the GOT as its base-relative address.
It's evil, but it works.
|
1.13 | 26-Sep-2002 |
mycroft | Make the stack frame 96 bytes, like GCC does.
|
1.12 | 26-Sep-2002 |
mycroft | Tweak the save instruction in the PLT stub rather than adding an instruction to the binder entry stub...
|
1.11 | 26-Sep-2002 |
mycroft | Allocate space for the argument space area in both _rtld_start() and _rtld_bind_start(). Not needed normally, but if we compile ld.elf_so with -g, it blows up without this.
|
1.10 | 25-Sep-2002 |
mycroft | There is no need to save and restore a second register window in the binder stub.
|
1.9 | 12-Sep-2002 |
mycroft | Update comments.
|
1.8 | 12-Sep-2002 |
mycroft | Pass the calculated relocation offset down to _rtld().
|
1.7 | 11-Sep-2002 |
mycroft | Do the _rtld_relocate_nonplt_self() thing for SPARC.
|
1.6 | 09-Sep-2002 |
mycroft | Indent branch delay instructions.
|
1.5 | 09-Sep-2002 |
mycroft | Nuke RTLD_RELOCATE_SELF for SPARC.
|
1.4 | 01-Mar-1999 |
christos | branches: 1.4.12; - Use c style comments. - & -> and - align 4 in both functions for consistency.
|
1.3 | 01-Mar-1999 |
kim | Make mkdep succeed (use matching quotes in comment).
|
1.2 | 26-Feb-1999 |
pk | Implement rtld_bind() stub. Fix startup code.
|
1.1 | 24-Feb-1999 |
christos | Work in progress (does not work yet).
|
1.4.12.1 | 28-May-2004 |
tron | Apply patch (request by skrll in ticket #1702): Bring "ld.elf_so" (mostly) in sync with NetBSD-current: - MI and MD (e.g. under NetBSD-alpha) performance improvements - RTLD_SELF, RTLD_NEXT, RTLD_DEFAULT support - much better structured code - closes PR bin/25464
|
1.15.30.1 | 18-May-2008 |
yamt | sync with head.
|