| Commit message (Expand) | Author | Age | Files | Lines |
| * | add __dlsym_time64 asm entry point for all legacy-32bit-time_t archs | Rich Felker | 2019-11-02 | 1 | -0/+3 |
| * | fix PLT call offset in sh dlsym asm•••the braf instruction's destination register is an offset from the
address of the braf instruction plus 4 (or equivalently, the address
of the next instruction after the delay slot). the code for dlsym was
incorrectly computing the offset to pass using the address of the
delay slot itself. in other places, a label was placed after the delay
slot, but I find this confusing. putting the label on the branch
instruction itself, and manually adding 4, makes it more clear which
branch the offset in the constant pool goes with.
| Rich Felker | 2015-04-17 | 1 | -3/+3 |
| * | fix sh build regressions in asm•••even hidden functions need @PLT symbol references; otherwise an
absolute address is produced instead of a PC-relative one.
| Rich Felker | 2015-04-17 | 1 | -1/+1 |
| * | use hidden visibility for call from dlsym to internal __dlsym | Rich Felker | 2015-04-14 | 1 | -1/+2 |
| * | dynamic linker bootstrap overhaul•••this overhaul further reduces the amount of arch-specific code needed
by the dynamic linker and removes a number of assumptions, including:
- that symbolic function references inside libc are bound at link time
via the linker option -Bsymbolic-functions.
- that libc functions used by the dynamic linker do not require
access to data symbols.
- that static/internal function calls and data accesses can be made
without performing any relocations, or that arch-specific startup
code handled any such relocations needed.
removing these assumptions paves the way for allowing libc.so itself
to be built with stack protector (among other things), and is achieved
by a three-stage bootstrap process:
1. relative relocations are processed with a flat function.
2. symbolic relocations are processed with no external calls/data.
3. main program and dependency libs are processed with a
fully-functional libc/ldso.
reduction in arch-specific code is achived through the following:
- crt_arch.h, used for generating crt1.o, now provides the entry point
for the dynamic linker too.
- asm is no longer responsible for skipping the beginning of argv[]
when ldso is invoked as a command.
- the functionality previously provided by __reloc_self for heavily
GOT-dependent RISC archs is now the arch-agnostic stage-1.
- arch-specific relocation type codes are mapped directly as macros
rather than via an inline translation function/switch statement.
| Rich Felker | 2015-04-13 | 1 | -26/+0 |
| * | rename dynamic linker entry point from _start to _dlstart•••the main motivation for this change is to aid in debugging. since the
main program's entry point is also named _start, it was difficult to
set breakpoints or quickly identify which _start execution stopped in.
| Rich Felker | 2014-06-20 | 1 | -3/+3 |
| * | rename superh port to "sh" for consistency•••linux, gcc, etc. all use "sh" as the name for the superh arch. there
was already some inconsistency internally in musl: the dynamic linker
was searching for "ld-musl-sh.path" as its path file despite its own
name being "ld-musl-superh.so.1". there was some sentiment in both
directions as to how to resolve the inconsistency, but overall "sh"
was favored.
| Rich Felker | 2014-02-27 | 2 | -0/+36 |