| History log of /src/libexec/ld.elf_so/arch/powerpc |
| Revision | Date | Author | Comments |
| 1.17 | 09-Apr-2023 |
chs | ld.elf_so powerpc: remove bogus ldscript
This ldscript is not needed and actually makes things worse by putting everything in one LOAD section, which then needs to have rwx permission. Remove it so that we get two LOAD sections with better permissions. Fixes PR 57323.
|
| 1.16 | 03-Apr-2018 |
joerg | branches: 1.16.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.15 | 15-Aug-2014 |
matt | branches: 1.15.14; Use -fPIC since powerpc64 is always compiled as -fPIC and -fpic would cause __PIC__ to change.
|
| 1.14 | 13-Aug-2014 |
joerg | Build position independent on PPC64, too.
|
| 1.13 | 06-Mar-2014 |
matt | powerpc64 changes
|
| 1.12 | 26-Oct-2011 |
chs | branches: 1.12.2; 1.12.8; avoid linker warnings with the new binutils by not forcing ld.elf_so to be soft-float. the floating-point usage in ld.elf_so is only because of stdarg functions like printf(), and gcc 4.5 is good about not actually executing the FP instructions in such functions unless FP values are passed to them, which ld.elf_so doesn't do.
|
| 1.11 | 22-Oct-2009 |
skrll | Fix start symbol for newer binutils.
|
| 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 | 24-Sep-2002 |
mycroft | -I${.CURDIR} is done at the top-level, so there's no need to do it here.
|
| 1.5 | 20-Dec-2001 |
thorpej | branches: 1.5.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.4 | 14-Dec-2001 |
thorpej | Don't put compiler options into CPPFLAGS.
|
| 1.3 | 18-Apr-1999 |
ws | Add code to use the kernel provided page size. Enable this on the powerpc only for now.
|
| 1.2 | 16-Jan-1999 |
christos | PR/6824: Erik Bertelsen: Missed arch directory in recent move.
|
| 1.1 | 24-Nov-1998 |
tsubai | Add powerpc support.
|
| 1.5.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.12.8.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.12.2.1 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.15.14.1 | 07-Apr-2018 |
pgoyette | Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
|
| 1.16.12.1 | 04-Aug-2023 |
martin | Pull up following revision(s) (requested by riastradh in ticket #306):
libexec/ld.elf_so/arch/powerpc/Makefile.inc: revision 1.17 libexec/ld.elf_so/arch/powerpc/ld.so.script: file removal
ld.elf_so powerpc: remove bogus ldscript
This ldscript is not needed and actually makes things worse by putting everything in one LOAD section, which then needs to have rwx permission.
Remove it so that we get two LOAD sections with better permissions. Fixes PR 57323.
|
| 1.5 | 09-Apr-2023 |
chs | ld.elf_so powerpc: remove bogus ldscript
This ldscript is not needed and actually makes things worse by putting everything in one LOAD section, which then needs to have rwx permission. Remove it so that we get two LOAD sections with better permissions. Fixes PR 57323.
|
| 1.4 | 07-Mar-2014 |
matt | branches: 1.4.36; Change OUTPUT to powerpc:common to make powerpc64 ld happy
|
| 1.3 | 09-Sep-2002 |
mycroft | branches: 1.3.54; 1.3.60; Sync with current binutils.
|
| 1.2 | 26-Mar-2000 |
mycroft | branches: 1.2.6; Don't try to get libc_pic from the libc compile directory. If we're doing a build, libc has already been installed.
|
| 1.1 | 24-Nov-1998 |
tsubai | Add powerpc support.
|
| 1.2.6.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.3.60.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.3.54.1 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.4.36.1 | 04-Aug-2023 |
martin | Pull up following revision(s) (requested by riastradh in ticket #306):
libexec/ld.elf_so/arch/powerpc/Makefile.inc: revision 1.17 libexec/ld.elf_so/arch/powerpc/ld.so.script: file removal
ld.elf_so powerpc: remove bogus ldscript
This ldscript is not needed and actually makes things worse by putting everything in one LOAD section, which then needs to have rwx permission.
Remove it so that we get two LOAD sections with better permissions. Fixes PR 57323.
|
| 1.66 | 30-Nov-2024 |
christos | Create a new header lwp_private.h to contain _lwp_getprivate_fast, _lwp_gettcb_fast, _lwp_settcb and remove them from mcontext.h, so that: 1. we don't need special hacks to hide them 2. we can include <lwp.h> where needed to get the necessary prototypes without redefining them locally.
|
| 1.65 | 03-Aug-2024 |
riastradh | ld.elf_so(1): Nix trailing whitespace.
No functional change intended.
|
| 1.64 | 23-Jul-2024 |
uwe | ld.elf_so: Cite reference for PowerPC ELF relocations
PR lib/58455: Missing references for processor-specific ELF relocation semantics
|
| 1.63 | 04-Jun-2023 |
joerg | branches: 1.63.2; 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.62 | 06-Jul-2022 |
martin | branches: 1.62.2; Fix copy & pasto: DTPREL relocations do not need to allocate a static TLS index. Patch from joerg@
|
| 1.61 | 24-May-2020 |
macallan | new binutils/gcc started emitting R_PPC_UADDR32 reloc entries, so for now treat them like R_PPC_ADDR32 XXX these relocs have been observed in the xf86-video-radeon driver, but only in the AtomBios support code, which is unused on PowerPC. This allows the driver to load but it's not clear if the affected parts would actually function.
|
| 1.60 | 08-Dec-2019 |
uwe | Use existing lo() and hi() macros. Same object code is generated.
|
| 1.59 | 08-Dec-2019 |
uwe | Resolve ADDR16_LO, ADDR16_HI, and ADDR16_HA relocs.
Recent GNU ld does not resolve them statically if the reloc is in a writable section and the symbol is not already referenced from text.
|
| 1.58 | 30-Dec-2018 |
christos | branches: 1.58.2; - fix wrong reloc name in assert - fix uninitialized
|
| 1.57 | 03-Apr-2018 |
joerg | branches: 1.57.2; 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.56 | 09-Mar-2018 |
joerg | Like Sparc, PowerPC can use IRELATIVE relocations in non-PLT sections.
|
| 1.55 | 10-Aug-2017 |
joerg | branches: 1.55.2; Add IRELATIVE support for ARM, X86 and PowerPC.
|
| 1.54 | 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.53 | 25-Aug-2014 |
joerg | branches: 1.53.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.52 | 28-Jul-2014 |
matt | branches: 1.52.2; Fix parenthesis on __ha macro
|
| 1.51 | 06-Mar-2014 |
matt | branches: 1.51.2; More PPC64 changes. Nothing to do for lazy bindings. Record DT_PPC64_GLINK and make _rtld_bind return it. When resolving a JMP_SLOT, copy the source function descriptor into the PLTGOT
|
| 1.50 | 06-Mar-2014 |
matt | Make ELF64 aware.
|
| 1.49 | 25-Mar-2011 |
joerg | branches: 1.49.4; 1.49.10; Add basic locking to ld.elf_so.
|
| 1.48 | 12-Mar-2011 |
matt | Add TLS support for PowerPC. If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of __lwp_getprivate_fast or lwp_setprivate.
|
| 1.47 | 10-Feb-2011 |
matt | Fix problem with bss-plt objects which a reloc index, not offset. (secure-plt uses an offset (index*sizeof(rela), bss-plt uses an index) secure-plt will now take the offset and divide by 12 for an index.
|
| 1.46 | 16-Jan-2011 |
matt | branches: 1.46.2; Add secure-plt support for powerpc to ld.elf_so. As part of this, we have to stop calling into the GOT/_DYNAMIC since they are no longer executable.
|
| 1.45 | 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.44 | 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.43 | 29-Aug-2009 |
jmmv | Remove trailing \n in calls to _rtld_error: a newline is automatically added by a call to the function.
|
| 1.42 | 24-May-2009 |
he | Apply fix borrowed from i386: Fix const issue (cast const pointers to "const uint8_t *" instead of "caddr_t").
|
| 1.41 | 24-Jul-2008 |
matt | branches: 1.41.4; 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 | 23-May-2006 |
mrg | branches: 1.40.20; in _rtld_bind() initialise new_value for GCC4.
|
| 1.39 | 27-Sep-2005 |
chs | ok, the change from rev 1.33 was unnecessary after all, only the second part of the previous revision was needed. put the logic for the initial icache invalidation of the PLT back the way it was, but in a way that makes clearer what's going on, and add some comments explaining it.
|
| 1.38 | 26-Sep-2005 |
chs | fix two problems with icache invalidation of the PLT: - restore revision 1.33, it was correct. - fix pointer arithmetic in other calls to __syncicache().
|
| 1.37 | 20-Aug-2005 |
skrll | Add __RCSID.
|
| 1.36 | 28-Jul-2005 |
skrll | Support immediate PLT binding on powerpc. Thanks to Simon Burge for testing.
I can see the finish line...
|
| 1.35 | 24-Jul-2003 |
skrll | branches: 1.35.6; ANSIfy and de-__P().
|
| 1.34 | 21-Feb-2003 |
mycroft | Revert previous change.
|
| 1.33 | 11-Jan-2003 |
matt | Fix bug where only 2/3 of the PLT was being synched with the icache. PLT entries are 12 bytes. Add a #define for that and replace the explicit values with the PLT_ENTRY_SIZE. This bug can cause random SIGILL signals to happen.
|
| 1.32 | 05-Oct-2002 |
mycroft | Minor cleanup.
|
| 1.31 | 26-Sep-2002 |
mycroft | Remove the `self' args to _rtld_relocate_objects() and _rtld_relocate_nonplt_objects().
|
| 1.30 | 26-Sep-2002 |
mycroft | Update a comment.
|
| 1.29 | 26-Sep-2002 |
mycroft | Add a rdbg() in _rtld_bind().
|
| 1.28 | 25-Sep-2002 |
mycroft | Make this work with PLTs larger than 8192 entries (64KB). Not tested exhaustively, but it works in some simple cases.
|
| 1.27 | 25-Sep-2002 |
mycroft | Push the _rtld_bind() interface into MD code -- it's just a trivial wrapper anyway.
|
| 1.26 | 24-Sep-2002 |
mycroft | Ignore JMP_SLOT relocs when doing non-PLT relocations. The relalim trimming hack doesn't always work, because ld(1) sometimes puts the sections in the wrong order.
|
| 1.25 | 12-Sep-2002 |
mycroft | Remove one more `dodebug' argument.
|
| 1.24 | 12-Sep-2002 |
mycroft | Nuke -DRTLD_RELOCATE_SELF and `dodebug' from orbit.
|
| 1.23 | 12-Sep-2002 |
mycroft | _rtld_bind_start() is not used in MI code, so declare it in the MD code.
|
| 1.22 | 11-Sep-2002 |
mycroft | Implement _rtld_relocate_nonplt_self() here.
|
| 1.21 | 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.20 | 06-Sep-2002 |
mycroft | Introduce a new flag, `isdynamic', which is used to remember whether the executable was of type ET_DYN. Use this instead of `mainprog' to determine whether we need to do base-relative fixups of the PLT. (This allows loading non-relocatable objects, should we desire to do that at some point...)
|
| 1.19 | 06-Sep-2002 |
mycroft | More const poisoning. Now the entire _rtld_bind() path useds a const Obj_Entry.
|
| 1.18 | 06-Sep-2002 |
mycroft | Re-poison a lot of consts, now that the mark shite is gone.
|
| 1.17 | 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.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 | 10-Sep-2001 |
mycroft | branches: 1.10.2; Reorganize PowerPC cold a little. The return value from _rtld_bind_pltgot() was ambiguous in the case of a weak symbol that was not defined. This caused RTLD_NOW to fail badly with shared libraries linked against the new crtbegin.o.
|
| 1.9 | 25-Apr-2001 |
kleink | Sync with <sys/exec_elf.h> rev. 1.45: ElfNN_RelA -> ElfNN_Rela.
|
| 1.8 | 07-Nov-1999 |
mycroft | branches: 1.8.4; More fallout.
|
| 1.7 | 07-Nov-1999 |
mycroft | Fix fallout from MD ld.elf_so changes.
|
| 1.6 | 28-Oct-1999 |
tsubai | Revert to rev. 1.4. This file didn't need to change.
|
| 1.5 | 25-Oct-1999 |
kleink | Update to match new SVR4-style definition names in <sys/exec_elf.h>.
|
| 1.4 | 17-Apr-1999 |
ws | branches: 1.4.2; Modify syncicache on PowerPC from an inline to a real function. Support different cache line sizes with the same object code in userland. While here, move the function to implementation name space.
|
| 1.3 | 05-Mar-1999 |
tsubai | Make this compile.
|
| 1.2 | 01-Mar-1999 |
christos | KNF
|
| 1.1 | 24-Nov-1998 |
tsubai | Add powerpc support.
|
| 1.4.2.1 | 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
| 1.8.4.2 | 09-Dec-2001 |
he | Pull up revision 1.10 (requested by skrll): Add init/fini section support in crtbegin and crtend, and introduce support for DWARF2 exception handling. Fixes PR#12865, PR#13488, PR#13489, and PR#13491. Also fix ld.elf_so to deal appropriately.
|
| 1.8.4.1 | 01-May-2001 |
he | Pull up revision 1.9 (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.35.6.2 | 01-Oct-2005 |
tron | Pull up following revision(s) (requested by chs in ticket #834): libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.39 ok, the change from rev 1.33 was unnecessary after all, only the second part of the previous revision was needed. put the logic for the initial icache invalidation of the PLT back the way it was, but in a way that makes clearer what's going on, and add some comments explaining it.
|
| 1.35.6.1 | 01-Oct-2005 |
tron | Pull up following revision(s) (requested by chs in ticket #834): libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.38 fix two problems with icache invalidation of the PLT: - restore revision 1.33, it was correct. - fix pointer arithmetic in other calls to __syncicache().
|
| 1.40.20.1 | 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
| 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.46.2.1 | 17-Feb-2011 |
bouyer | Sync with HEAD
|
| 1.49.10.1 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.49.4.1 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.51.2.1 | 10-Aug-2014 |
tls | Rebase.
|
| 1.52.2.1 | 06-Mar-2016 |
martin | Catch up to -current, via patch, requested by christos in ticket #1126:
|
| 1.53.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.55.2.3 | 18-Jan-2019 |
pgoyette | Synch with HEAD
|
| 1.55.2.2 | 07-Apr-2018 |
pgoyette | Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
|
| 1.55.2.1 | 15-Mar-2018 |
pgoyette | Synch with HEAD
|
| 1.57.2.2 | 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
| 1.57.2.1 | 10-Jun-2019 |
christos | Sync with HEAD
|
| 1.58.2.3 | 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.2 | 18-Sep-2022 |
msaitoh | Pull up following revision(s) (requested by martin in ticket #1531): libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.62 Fix copy & pasto: DTPREL relocations do not need to allocate a static TLS index. Patch from joerg@
|
| 1.58.2.1 | 09-Dec-2019 |
martin | Pull up following revision(s) (requested by uwe in ticket #535):
libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.60 libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.59
Resolve ADDR16_LO, ADDR16_HI, and ADDR16_HA relocs.
Recent GNU ld does not resolve them statically if the reloc is in a writable section and the symbol is not already referenced from text.
Use existing lo() and hi() macros. Same object code is generated.
|
| 1.62.2.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.63.2.1 | 02-Aug-2025 |
perseant | Sync with HEAD
|
| 1.17 | 26-Sep-2011 |
mrg | match END() with a relevant ENTRY*(). gas 2.21 complains about the non-constant-ness of the symbol otherwise.
|
| 1.16 | 04-Mar-2011 |
matt | Don't rely on >32bit math.
|
| 1.15 | 10-Feb-2011 |
matt | Fix problem with bss-plt objects which a reloc index, not offset. (secure-plt uses an offset (index*sizeof(rela), bss-plt uses an index) secure-plt will now take the offset and divide by 12 for an index.
|
| 1.14 | 16-Jan-2011 |
matt | branches: 1.14.2; Add secure-plt support for powerpc to ld.elf_so. As part of this, we have to stop calling into the GOT/_DYNAMIC since they are no longer executable.
|
| 1.13 | 04-Dec-2002 |
thorpej | Bintuils-current initializes the GOT entries to 0 (instead of the base-relative offsets that were placed there previously), so we must use a different mechanism to compute our reloc base.
Patch from Charles Hannum.
|
| 1.12 | 31-Oct-2002 |
matt | Convert to register prefixes.
|
| 1.11 | 05-Oct-2002 |
mycroft | Minor cleanup.
|
| 1.10 | 25-Sep-2002 |
mycroft | Push the _rtld_bind() interface into MD code -- it's just a trivial wrapper anyway.
|
| 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 | Implement _rtld_relocate_nonplt_self() here.
|
| 1.6 | 10-Sep-2002 |
mycroft | Remove unneeded cruft from _rtld_start.
|
| 1.5 | 10-Sep-2002 |
mycroft | Shorten the startup sequence by a few instructions.
|
| 1.4 | 26-Sep-2001 |
mycroft | branches: 1.4.2; In the `I can't believe it's been broken all this time' department: _rtld_bind_start must save and restore the condition codes. Varargs functions (like, say, printf()) depend on the state of cr1 to determine whether they need to store floating point registers in the save area. Without this, the first call to any particular varargs function will fail if floating point values were passed.
|
| 1.3 | 21-May-1999 |
tsubai | branches: 1.3.8; syncicache is needed...
|
| 1.2 | 18-Apr-1999 |
ws | Add code to use the kernel provided page size. Enable this on the powerpc only for now.
|
| 1.1 | 24-Nov-1998 |
tsubai | Add powerpc support.
|
| 1.3.8.1 | 09-Dec-2001 |
he | Pull up revision 1.4 (requested by skrll): Add init/fini section support in crtbegin and crtend, and introduce support for DWARF2 exception handling. Fixes PR#12865, PR#13488, PR#13489, and PR#13491. Also fix ld.elf_so to deal appropriately.
|
| 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.14.2.2 | 05-Mar-2011 |
bouyer | Sync with HEAD
|
| 1.14.2.1 | 17-Feb-2011 |
bouyer | Sync with HEAD
|
| 1.2 | 06-Mar-2014 |
matt | branches: 1.2.4; 1.2.8; More PPC64 changes. Nothing to do for lazy bindings. Record DT_PPC64_GLINK and make _rtld_bind return it. When resolving a JMP_SLOT, copy the source function descriptor into the PLTGOT
|
| 1.1 | 06-Mar-2014 |
matt | Startup file for powerpc64. (too many difference with ppc32 to do #ifdef dance)
|
| 1.2.8.2 | 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
| 1.2.8.1 | 06-Mar-2014 |
tls | file rtld_start64.S was added on branch tls-maxphys on 2014-08-20 00:02:22 +0000
|
| 1.2.4.2 | 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
| 1.2.4.1 | 06-Mar-2014 |
yamt | file rtld_start64.S was added on branch yamt-pagecache on 2014-05-22 11:37:14 +0000
|