diff options
author | Richard Henderson <rth@redhat.com> | 2002-02-15 21:26:05 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2002-02-15 21:26:05 +0000 |
commit | ccf00ab6a1bf897a53932aa904a804e539e66c31 (patch) | |
tree | 3edfabbbdbf5c33821d0ba96dc99ec6e1bd93abc | |
parent | 8bf7d691eb8662b118fa709a530e64ac9e17e85d (diff) | |
download | gdb-ccf00ab6a1bf897a53932aa904a804e539e66c31.zip gdb-ccf00ab6a1bf897a53932aa904a804e539e66c31.tar.gz gdb-ccf00ab6a1bf897a53932aa904a804e539e66c31.tar.bz2 |
* elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: A target
section with no got matches any got. Simplify error generaion.
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf64-alpha.c | 22 |
2 files changed, 13 insertions, 14 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8b43bff..3bdae37 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2002-02-15 Richard Henderson <rth@redhat.com> + + * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: A target + section with no got matches any got. Simplify error generaion. + 2002-02-15 Alan Modra <amodra@bigpond.net.au> Support arbitrary length fill patterns. diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c index d0d3251..53ac1e7 100644 --- a/bfd/elf64-alpha.c +++ b/bfd/elf64-alpha.c @@ -3581,24 +3581,18 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section, the instruction rather than the end. */ addend -= 4; - /* The source and destination gp must be the same. */ - if (h != NULL + /* The source and destination gp must be the same. Note that + the source will always have an assigned gp, since we forced + one in check_relocs, but that the destination may not, as + it might not have had any relocations at all. Also take + care not to crash if H is an undefined symbol. */ + if (h != NULL && sec != NULL + && alpha_elf_tdata (sec->owner)->gotobj && gotobj != alpha_elf_tdata (sec->owner)->gotobj) { - if (h != NULL) - name = h->root.root.root.string; - else - { - name = (bfd_elf_string_from_elf_section - (input_bfd, symtab_hdr->sh_link, sym->st_name)); - if (name == NULL) - name = _("<unknown>"); - else if (name[0] == 0) - name = bfd_section_name (input_bfd, sec); - } (*_bfd_error_handler) (_("%s: change in gp: BRSGP %s"), - bfd_archive_filename (input_bfd), name); + bfd_archive_filename (input_bfd), h->root.root.root.string); ret_val = false; } |