This is the mail archive of the
mailing list for the binutils project.
Re: Ping [Patch v2] bfd elfxx-ia64: share code between elf32 and elf64
- From: Aurelien Jarno <aurelien at aurel32 dot net>
- To: Tristan Gingold <gingold at adacore dot com>
- Cc: Nick Clifton <nickc at redhat dot com>, binutils Development <binutils at sourceware dot org>
- Date: Tue, 5 Jul 2011 20:29:07 +0200
- Subject: Re: Ping [Patch v2] bfd elfxx-ia64: share code between elf32 and elf64
- References: <EEEC6C47-1379-4F53-B7C9-C1C539E7A2AB@adacore.com> <BANLkTi=Ms6fs_HVZtR5fG4x2e-AKXD5W8g@mail.gmail.com> <1149AB82-D754-4792-98C1-C677ABE5E712@adacore.com> <BANLkTimmLDU-cB30T2+2rprBw6TV2zpXMw@mail.gmail.com> <9F58AE27-C095-4B50-B3D4-1DF60454A382@adacore.com> <6ACB9B6C-7640-473A-9047-7AFB4C789D49@adacore.com> <4DDBB7CD.firstname.lastname@example.org> <9C0F5E39-7514-4996-AA9B-26478EEAAD79@adacore.com> <4DDCADE9.email@example.com> <049A78A6-0E98-4631-BB9B-27A6B9527D37@adacore.com>
On Wed, May 25, 2011 at 02:02:49PM +0200, Tristan Gingold wrote:
> On May 25, 2011, at 9:21 AM, Nick Clifton wrote:
> > Hi Tristan,
> >> bfd/
> >> 2011-05-17 Tristan Gingold<firstname.lastname@example.org>
> >> * configure.in (bfd_elf32_ia64_big_vec, bfd_elf32_ia64_hpux_big_vec)
> >> (bfd_elf64_ia64_big_vec, bfd_elf64_ia64_hpux_big_vec)
> >> (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_vms_vec): Add elfxx-ia64.lo
> >> * Makefile.am (BFD64_BACKENDS): Add elfxx-ia64.lo
> >> (BFD64_BACKENDS_CFILES): Add elfxx-ia64.c
> >> (elf32-ia64.c): Created from elfnn-ia64.c
> >> (elf64-ia64.c): Likewise.
> >> * elfxx-ia64.h: New file.
> >> * elfxx-ia64.c: Split with elfnn-ia64.c. Keep only the following
> >> functions.Includes elfxx-ia64.h.
> >> (elfNN_ia64_reloc): Renames to ia64_elf_reloc. Adjust error message.
> >> (IA64_HOWTO): Adjust.
> >> (lookup_howto): Renames to ia64_elf_lookup_howto. Make it public.
> >> (elfNN_ia64_reloc_type_lookup): Renames to
> >> ia64_elf_reloc_type_lookup. Make it public. Adjust calls.
> >> (elfNN_ia64_reloc_name_lookup): Renames to
> >> ia64_elf_reloc_name_lookup. Make it public.
> >> (elfNN_ia64_relax_br): Renames to ia64_elf_relax_br. Make it public.
> >> (elfNN_ia64_relax_brl): Renames to ia64_elf_relax_brl. Make it
> >> public.
> >> (elfNN_ia64_relax_ldxmov): Renames to ia64_elf_relax_ldxmov.
> >> Move it and make it public. Move prototype to elfxx-ia64.h
> >> (elfNN_ia64_install_value): Renames to ia64_elf_install_value.
> >> Move prototype to elfxx-ia64.h
> >> * elfnn-ia64.c: New file, split from elfxx-ia64.c.
> >> (elfNN_ia64_info_to_howto): Adjust calls.
> >> (elfNN_ia64_relax_section): Adjust calls.
> >> (count_dyn_reloc): Fix typo.
> >> (elfNN_ia64_relocate_section): Adjust calls.
> >> (elfNN_ia64_finish_dynamic_symbol): Likewise.
> >> (bfd_elfNN_bfd_reloc_type_lookup)
> >> (bfd_elfNN_bfd_reloc_name_lookup): Adjust macros.
> > Approved - please apply.
> Thanks, committed.
This patch seems to break libc on ia64. ld-2.13.so produced with
binutils using this patch works when called as a standalone, but just
segfault when used with other binaries:
| $ ./ld.so
| Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
| You have invoked `ld.so', the helper program for shared library executables.
| This program usually lives in the file `/lib/ld.so', and special directives
| in executable files using ELF shared libraries tell the system's program
| loader to load the helper program from this file. This helper program loads
| the shared libraries needed by the program executable, prepares the program
| to run, and runs it. You may invoke this helper program directly from the
| command line to load and run an ELF executable file; this is like executing
| that file itself, but always uses this helper program from the file you
| specified, instead of the helper program file specified in the executable
| file you run. This is mostly of use for maintainers to test new versions
| of this helper program; chances are you did not intend to run this program.
| --list list all dependencies and how they are resolved
| --verify verify that given object really is a dynamically linked
| object we can handle
| --library-path PATH use given PATH instead of content of the environment
| variable LD_LIBRARY_PATH
| --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names
| in LIST
| --audit LIST use objects named in LIST as auditors
| $ ./ld.so /bin/ls
| Segmentation fault
I don't know what is the best way to proceed for debugging this issue. I
can provide you the correct and the broken ld.so if it can help.
Aurelien Jarno GPG: 1024D/F1BCDB73