This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
libc 2.3 doesn't compile on arm at the moment. These patches seem to fix the problem. p. 2002-07-12 Philip Blundell <philb@gnu.org> * sysdeps/arm/dl-machine.h (elf_machine_rel): Don't handle R_ARM_RELATIVE if RTLD_BOOTSTRAP and HAVE_Z_COMBRELOC. Only check for rtld map if neither RTLD_BOOTSTRAP nor HAVE_Z_COMBRELOC is defined. (elf_machine_rela): Remove unused variable. * sysdeps/unix/sysv/linux/arm/Makefile [subdir=elf] (sysdep-rtld-routines, sysdep_routines, sysdep-dl-routines): Don't define. Index: sysdeps/arm/dl-machine.h =================================================================== RCS file: /cvs/glibc/libc/sysdeps/arm/dl-machine.h,v retrieving revision 1.38 diff -u -r1.38 dl-machine.h --- sysdeps/arm/dl-machine.h 1 Mar 2002 09:43:35 -0000 1.38 +++ sysdeps/arm/dl-machine.h 12 Jul 2002 21:52:36 -0000 @@ -422,10 +422,20 @@ { const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); +#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC if (__builtin_expect (r_type == R_ARM_RELATIVE, 0)) { -# ifndef RTLD_BOOTSTRAP - if (map != &_dl_rtld_map) /* Already done in rtld itself. */ +# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC + /* This is defined in rtld.c, but nowhere in the static libc.a; + make the reference weak so static programs can still link. + This declaration cannot be done when compiling rtld.c + (i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the + common defn for _dl_rtld_map, which is incompatible with a + weak decl in the same file. */ +# ifndef SHARED + weak_extern (_dl_rtld_map); +# endif + if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */ # endif *reloc_addr += map->l_addr; } @@ -434,6 +444,7 @@ return; # endif else +#endif { const Elf32_Sym *const refsym = sym; Elf32_Addr value = RESOLVE (&sym, version, r_type); @@ -483,7 +494,7 @@ # ifndef SHARED weak_extern (_dl_rtld_map); # endif - if (map == &_dl_rtld_map) + if (map == &GL(dl_rtld_map)) /* Undo the relocation done here during bootstrapping. Now we will relocate it anew, possibly using a binding found in the user program or a loaded library @@ -541,7 +552,6 @@ return; else { - const Elf32_Sym *const refsym = sym; Elf32_Addr value = RESOLVE (&sym, version, r_type); if (sym) value += sym->st_value; Index: sysdeps/unix/sysv/linux/arm/Makefile =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/arm/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- sysdeps/unix/sysv/linux/arm/Makefile 24 Mar 2002 01:55:18 -0000 1.14 +++ sysdeps/unix/sysv/linux/arm/Makefile 12 Jul 2002 21:52:43 -0000 @@ -12,11 +12,3 @@ ifeq ($(subdir),resource) sysdep_routines += oldgetrlimit64 endif - -ifeq ($(subdir),elf) -# extra shared linker files to link into dl-allobjs.so and libc -sysdep-dl-routines += dl-procinfo -sysdep_routines += dl-procinfo -# extra shared linker files to link only into dl-allobjs.so -sysdep-rtld-routines += dl-procinfo -endif
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |