summaryrefslogtreecommitdiff
path: root/src/ldso/microblaze
AgeCommit message (Collapse)AuthorLines
2015-04-14use hidden visibility for call from dlsym to internal __dlsymRich Felker-1/+2
2015-04-13dynamic linker bootstrap overhaulRich Felker-28/+0
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.
2014-06-20rename dynamic linker entry point from _start to _dlstartRich Felker-2/+2
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.
2013-12-14fix dynamic linker entry point for microblazeRich Felker-3/+4
the ABI allows the callee to clobber stack slots that correspond to arguments passed in registers, so the caller must adjust the stack pointer to reserve space appropriately. prior to this fix, the argv array was possibly clobbered by dynamic linker code before passing control to the main program.
2012-10-17fix microblaze asm relocations for shared libcRich Felker-3/+3
only @PLT relocations are considered functions for purposes of -Bsymbolic-functions, so always use @PLT. it should not hurt in the static-linked case.
2012-09-29microblaze portRich Felker-0/+32
based on initial work by rdp, with heavy modifications. some features including threads are untested because qemu app-level emulation seems to be broken and I do not have a proper system image for testing.