From 4a5a81ac165c040935a8807a580db49d381dc443 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 2 May 2002 13:36:53 +0000 Subject: Patch from Steven J. Hill : I am very pleased to announce that the MIPS dynamic linker/loader for uClibc is now working. It works on big and little endian platforms. A few minor changes were needed to avoid breaking ldd, and since this makes some non-trivial changes, I have tested on x86, arm, and powerpc to be sure thoese arches didn't get broken. Excellent work Steven! --- ldso/ldso/mips/README | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'ldso/ldso/mips/README') diff --git a/ldso/ldso/mips/README b/ldso/ldso/mips/README index b54e25183..520a5eeb6 100644 --- a/ldso/ldso/mips/README +++ b/ldso/ldso/mips/README @@ -1,28 +1,29 @@ 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 -the code taken from the Linux kernel. +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 codes is taken from the function 'RTLD_START' in the -file 'sysdeps/mips/dl-machine.h'. +The code is taken from the function 'RTLD_START' in the file +'sysdeps/mips/dl-machine.h'. elfinterp.c ----------- -Contains '_dl_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 the file 'sysdeps/mips/dl-machine.h'. +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'. ld_syscalls.h ------------- -Contains all the macro function prototypes for the system calls -as well as the list of system calls supported. The macros were -taken from the Linux kernel source 2.4.17 found in the file -'include/asm-mips/unistd.h'. +Contains all the macro functions for the system calls as well +as the list of system calls supported. The functions were taken +from the Linux kernel source 2.4.17 and can be found in the +file 'include/asm-mips/unistd.h'. ld_sysdep.h ----------- @@ -31,13 +32,19 @@ 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 'sysdep/mips/dl-machine.h'. The other macro function +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 'sysdep/mips/dl-machine.h'. +'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 'sysdesp/mips/dl-machine.h'. +'_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. -- cgit v1.2.3