|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base netbsd-9-3-RELEASE cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base netbsd-9-1-RELEASE phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
|
| 1.9 |
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.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base
|
| 1.8 |
04-Jun-2005 |
lukem |
branches: 1.8.82; 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.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.7 |
21-Feb-2004 |
skrll |
Move common LDFLAGS into Makefile from arch/*/Makefile.inc
|
| 1.6 |
20-Feb-2004 |
skrll |
Whitespace.
|
|
Revision tags: fvdl_fs64_base
|
| 1.5 |
24-Sep-2002 |
mycroft |
Remove vestiges of VARPSZ.
|
| 1.4 |
11-Sep-2002 |
mycroft |
Do self-relocation similar to sparc.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.3 |
20-Dec-2001 |
thorpej |
branches: 1.3.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.2 |
14-Dec-2001 |
thorpej |
Don't put compiler options into CPPFLAGS.
|
| 1.1 |
13-Jul-2000 |
eeh |
branches: 1.1.2; Added support for the SPARC v9 ABI.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.72 |
03-Aug-2024 |
riastradh |
ld.elf_so(1): Nix trailing whitespace.
No functional change intended.
|
| 1.71 |
23-Jul-2024 |
uwe |
ld.elf_so: Cite reference for SPARC ELF relocations
PR lib/58455: Missing references for processor-specific ELF relocation semantics
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.70 |
04-Jun-2023 |
joerg |
branches: 1.70.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.
|
|
Revision tags: netbsd-10-base netbsd-9-3-RELEASE cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base netbsd-9-1-RELEASE phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
|
| 1.69 |
03-Apr-2018 |
joerg |
branches: 1.69.4; 1.69.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.
|
|
Revision tags: pgoyette-compat-0330
|
| 1.68 |
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.
|
|
Revision tags: pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.67 |
25-Dec-2017 |
joerg |
branches: 1.67.2; Since GNU ld doesn't honor the PLT entry reservation, also compensate for JMP_IREL relocations at the start of the PLT.
|
| 1.66 |
06-Nov-2017 |
joerg |
init/fini for the main program is handled by crt0.o, so ifunc handling is skipped right now as it iterates the same list. Don't repeat that mistake and explicitly take care of it in the dynamic linker.
|
| 1.65 |
12-Aug-2017 |
joerg |
Add sparc/sparc64 support for irelative relocations.
|
| 1.64 |
10-Aug-2017 |
joerg |
Add IRELATIVE support for ARM, X86 and PowerPC.
|
| 1.63 |
24-Jul-2017 |
martin |
Fix thinko in previous: even if the address is an unsigned value and we have verified the range before, we still need to mask the bit pattern to the target instruction field.
|
| 1.62 |
23-Jul-2017 |
martin |
Simplify and fix the offset calculation when doing a %pc relative branch from the PLT slot to the target.
|
|
Revision tags: perseant-stdc-iso10646-base
|
| 1.61 |
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.60 |
15-Jun-2017 |
joerg |
Fix indentation.
|
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914
|
| 1.59 |
29-Aug-2016 |
martin |
branches: 1.59.6; Despite the 10 in the name, the OLO10 relocation targets a 13 bit field, the offset (O) providing the additional data.
|
|
Revision tags: pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.58 |
20-Jun-2016 |
martin |
Fix a few bounds and instruction sequences generated in the PLT; exercised by ASLR and verified to work with the aslr fixed random debug sysctls.
|
| 1.57 |
25-Aug-2014 |
joerg |
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.
|
|
Revision tags: netbsd-7-0-2-RELEASE netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base tls-maxphys-base
|
| 1.56 |
02-Apr-2014 |
martin |
branches: 1.56.4; The table of masks applied for each relocation type was wrong for some relocs with 64bit targets, like GLOB_DAT. Change some instruction patterns used for PLT slots, so -current objdump -d shows what the comment says. Fix encoding of %lox() in PLT slots "close" to -1. Enhance debug output slightly.
|
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
| 1.55 |
03-Oct-2013 |
martin |
The R_SPARC_L44 relocation type is documented to be truncating and calculated as "(S + A) & 0xfff" - so while it (usually) sets a "imm13" field in the opcode, only 12 bits of the calculated value can be used.
|
| 1.54 |
23-Sep-2013 |
martin |
Missing , in table initializer
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.53 |
22-Jul-2012 |
martin |
branches: 1.53.2; Add special handling needed for OLO10 relocations. First part of fixing PR port-sparc64/46724.
|
|
Revision tags: yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base
|
| 1.52 |
30-Mar-2011 |
martin |
branches: 1.52.4; 1.52.6; Add support for 64 bit TLS relocations.
|
| 1.51 |
25-Mar-2011 |
joerg |
Add basic locking to ld.elf_so.
|
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base matt-mips64-premerge-20101231
|
| 1.50 |
24-Sep-2010 |
skrll |
Comment reformat.
|
| 1.49 |
24-Sep-2010 |
skrll |
Wrap long line.
|
| 1.48 |
24-Sep-2010 |
skrll |
Whitespace.
|
| 1.47 |
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.46 |
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@
|
|
Revision tags: matt-premerge-20091211
|
| 1.45 |
22-May-2009 |
martin |
Use the new Elf_SOff (signed offset) type to fix a few signed/unsigned problems.
|
|
Revision tags: jym-xensuspend-nbase jym-xensuspend-base
|
| 1.44 |
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
|
|
Revision tags: netbsd-5-1-5-RELEASE netbsd-5-1-4-RELEASE netbsd-5-1-3-RELEASE netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
|
| 1.43 |
24-Jul-2008 |
matt |
branches: 1.43.4; 1.43.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.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
|
| 1.42 |
28-Apr-2008 |
martin |
branches: 1.42.2; Remove clause 3 and 4 from TNF licenses
|
|
Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking cube-autoconf-base matt-armv6-base matt-mips64-base hpcarm-cleanup-base
|
| 1.41 |
23-Feb-2007 |
matt |
branches: 1.41.10; Remove MD COMBRELOC support since it's now MI. Enable COMBRELOC for all arches
|
| 1.40 |
15-Feb-2007 |
martin |
Add COMBRELOC support
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base
|
| 1.39 |
10-May-2006 |
mrg |
quell GCC 4.1 uninitialised variable warnings.
XXX: we should audit the tree for which old ones are no longer needed after getting the older compilers out of the tree..
|
| 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
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
|
| 1.35 |
05-Jan-2005 |
martin |
Add LD_BIND_NOW support for sparc64.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.34 |
24-Jul-2003 |
skrll |
ANSIfy and de-__P().
|
| 1.33 |
23-May-2003 |
petrov |
Fix alignment problem in debug output. Happens only under RTLD_DEBUG_RELOC.
|
|
Revision tags: fvdl_fs64_base
|
| 1.32 |
18-Oct-2002 |
thorpej |
_rtld_bind(): Don't use "rela" until after we've (potentially) adjusted it.
|
| 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 |
Remove vestigal comments about _rtld_bind_start_0() -- it works now.
|
| 1.29 |
26-Sep-2002 |
mycroft |
Make room for the argument save area in _rtld_start(). The PLT stub already made room from _rtld_bind_start(), but add a comment explaining the instruction it uses.
|
| 1.28 |
25-Sep-2002 |
mycroft |
Add a comment explaining some of the magick.
|
| 1.27 |
25-Sep-2002 |
mycroft |
Fix a bug that caused PLT entries to effectively not be patched. Also, fix more bugs in the large-PLT case -- my test program works now.
|
| 1.26 |
25-Sep-2002 |
mycroft |
Swap registers %o0 and %o1 in the binder stub to say one instruction.
Fix an obvious bug in the 64-bit PLT fixup: the SLLX was by 12 bits, when it should be 32.
Fix what *appear* to be two bugs in the >32768 PLT entry stub: * One division was wrong (/14 rather than /24). * We need to subtract 1048576 (to make the offset relative to the beginning of the upper section), not add it. This path is still untested, and buggy.
|
| 1.25 |
25-Sep-2002 |
mycroft |
_rtld_bind_start_0_stub() is not actually used.
|
| 1.24 |
25-Sep-2002 |
mycroft |
Push a multiple from _rtld_bind_start_[01]() to _rtld_bind().
|
| 1.23 |
25-Sep-2002 |
mycroft |
Push the _rtld_bind() interface into MD code -- it's just a trivial wrapper anyway.
|
| 1.22 |
24-Sep-2002 |
mycroft |
%ld -> %p
|
| 1.21 |
12-Sep-2002 |
mycroft |
Nuke -DRTLD_RELOCATE_SELF and `dodebug' from orbit.
|
| 1.20 |
12-Sep-2002 |
mycroft |
Prototype different functions.
|
| 1.19 |
12-Sep-2002 |
mycroft |
_rtld_bind_start() is not used in MI code, so declare it in the MD code.
|
| 1.18 |
11-Sep-2002 |
mycroft |
Do self-relocation similar to sparc.
|
| 1.17 |
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.16 |
06-Sep-2002 |
mycroft |
Make the reloc tables const.
|
| 1.15 |
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.14 |
06-Sep-2002 |
mycroft |
Re-poison a lot of consts, now that the mark shite is gone.
|
| 1.13 |
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.12 |
06-Sep-2002 |
mycroft |
Repair a slight biff I made earlier -- do not exit the loop in _rtld_relocate_nonplt_objects() early.
|
| 1.11 |
05-Sep-2002 |
mycroft |
Partially fix up some debug printf()s that don't need to use defobj.
|
| 1.10 |
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.9 |
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.8 |
05-Sep-2002 |
mycroft |
Split _rtld_relocate_nonplt_object() into separate MD files.
|
| 1.7 |
05-Sep-2002 |
junyoung |
Remove unused arguments of _rtld_find_symdef().
|
| 1.6 |
05-Sep-2002 |
mycroft |
Make _rtld_setup_pltgot() a consistent interface on all platforms.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.5 |
25-Apr-2001 |
kleink |
branches: 1.5.2; Sync with <sys/exec_elf.h> rev. 1.45: ElfNN_RelA -> ElfNN_Rela.
|
| 1.4 |
16-Sep-2000 |
eeh |
Wrong register in machine code description.
|
| 1.3 |
26-Jul-2000 |
mycroft |
branches: 1.3.2; Catch up with type changes. Also: * Apply DT_PLTRELSZ to (one of) pltrel or pltrela *after* we've finished parsing the headers, so we know which one. * Fix sparc64 bogons. (It works now!)
|
| 1.2 |
18-Jul-2000 |
eeh |
Fix some issues with SPARC V9 ELF binaries.
|
| 1.1 |
13-Jul-2000 |
eeh |
Added support for the SPARC v9 ABI.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.18 |
03-Aug-2024 |
riastradh |
ld.elf_so(1): Nix trailing whitespace.
No functional change intended.
|
|
Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base netbsd-9-3-RELEASE cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base netbsd-9-1-RELEASE phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
|
| 1.17 |
28-Apr-2008 |
martin |
branches: 1.17.74; Remove clause 3 and 4 from TNF licenses
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.16 |
01-Mar-2003 |
mycroft |
branches: 1.16.30; Update copyright.
|
| 1.15 |
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.
|
|
Revision tags: fvdl_fs64_base
|
| 1.14 |
26-Sep-2002 |
mycroft |
Remove vestigal comments about _rtld_bind_start_0() -- it works now.
|
| 1.13 |
26-Sep-2002 |
mycroft |
Make room for the argument save area in _rtld_start(). The PLT stub already made room from _rtld_bind_start(), but add a comment explaining the instruction it uses.
|
| 1.12 |
25-Sep-2002 |
mycroft |
Fix a bug that caused PLT entries to effectively not be patched. Also, fix more bugs in the large-PLT case -- my test program works now.
|
| 1.11 |
25-Sep-2002 |
mycroft |
Swap registers %o0 and %o1 in the binder stub to say one instruction.
Fix an obvious bug in the 64-bit PLT fixup: the SLLX was by 12 bits, when it should be 32.
Fix what *appear* to be two bugs in the >32768 PLT entry stub: * One division was wrong (/14 rather than /24). * We need to subtract 1048576 (to make the offset relative to the beginning of the upper section), not add it. This path is still untested, and buggy.
|
| 1.10 |
25-Sep-2002 |
mycroft |
Push a multiple from _rtld_bind_start_[01]() to _rtld_bind().
|
| 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 self-relocation similar to sparc.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.6 |
06-May-2002 |
thorpej |
branches: 1.6.2; Add .register directives to appease newer gas.
|
| 1.5 |
14-Aug-2001 |
eeh |
Correct some comments.
|
| 1.4 |
14-Aug-2001 |
eeh |
Get rid of some debug code that should no longer be needed.
|
| 1.3 |
25-Apr-2001 |
kleink |
Sync with <sys/exec_elf.h> rev. 1.45: ElfNN_RelA -> ElfNN_Rela.
|
| 1.2 |
18-Jul-2000 |
eeh |
branches: 1.2.2; Fix some issues with SPARC V9 ELF binaries.
|
| 1.1 |
13-Jul-2000 |
eeh |
Added support for the SPARC v9 ABI.
|