Mike Frysinger f0d5c576f7 macro out the /10 operation so arches can have their own versions ... and create some default macros for do_rem/do_div_10 so we dont duplicate the samething in many arch header files 20 år sedan
..
README 7070940833 Rework file naming, aiming for at least a vague level of consistancy 22 år sedan
dl-debug.h ce9f1cf9c2 rip out all the duplicated debug code and move into a shared file 20 år sedan
dl-startup.h 0d2b685bb7 since just about everyone uses return _dl_elf_main for START() now, make it the default 20 år sedan
dl-syscalls.h 537494b031 move a bunch of arch-specific checks out of common files and into an arch specific header file to make porting/updates a lot easier 20 år sedan
dl-sysdep.h f0d5c576f7 macro out the /10 operation so arches can have their own versions ... and create some default macros for do_rem/do_div_10 so we dont duplicate the samething in many arch header files 20 år sedan
elfinterp.c 9a0d29dabe remove unneeded double reloc_type definition 20 år sedan
resolve.S 39624db737 Finish updating mips for the new ABI 21 år sedan

README

Almost all of the code present in these source files was taken
from GLIBC. In the descriptions below, all files mentioned are
with respect to the top level GLIBC source directory accept for
code taken from the Linux kernel.

boot1_arch.h
------------
Contains code to fix up the stack pointer so that the dynamic
linker can find argc, argv and Auxillary Vector Table (AVT).
The code is taken from the function 'RTLD_START' in the file
'sysdeps/mips/dl-machine.h'.

elfinterp.c
-----------
Contains the runtime resolver code taken from the function
'__dl_runtime_resolve' in 'sysdeps/mips/dl-machine.h'. Also
contains the function to perform relocations for objects
other than the linker itself. The code was taken from the
function 'elf_machine_rel' in 'sysdeps/mips/dl-machine.h'.

dl-syscalls.h
-------------
Used to contain all the macro functions for the system calls
as well as the list of system calls supported. We now include
but with the __set_errno macro defined empty
so we can use the same file for the linker as well as userspace.
Original code was taken from the Linux kernel source 2.4.17 and
can be found in the file 'include/asm-mips/unistd.h'.

dl-sysdep.h
-----------
Contains bootstrap code for the dynamic linker, magic numbers
for detecting MIPS target types and some macros. The macro
function 'PERFORM_BOOTSTRAP_GOT' is used to relocate the dynamic
linker's GOT so that function calls can be made. The code is
taken from the function 'ELF_MACHINE_BEFORE_RTLD_RELOC' in the
file 'sysdeps/mips/dl-machine.h'. The other macro function
'PERFORM_BOOTSTRAP_RELOC' is used to do the relocations for
the dynamic loader. The code is taken from the function
'elf_machine_rel' in the file 'sysdeps/mips/dl-machine.h'. The
final macro function is 'INIT_GOT' which initializes the GOT
for the application being dynamically linked and loaded. The
code is taken from the functions 'elf_machine_runtime_setup'
and 'elf_machine_got_rel' in 'sysdeps/mips/dl-machine.h'.

resolve.S
---------
Contains the low-level assembly code for the dynamic runtime
resolver. The code is taken from the assembly code function
'_dl_runtime_resolve' in the file 'sysdeps/mips/dl-machine.h'.
The code looks a bit different since we only need to pass the
symbol index and the old GP register.