diff options
author | Jakub Jelinek <jakub@redhat.com> | 2001-11-28 19:15:14 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2001-11-28 19:15:14 +0000 |
commit | f7460f5f7689262ad24e7e28c9d6662169cd3549 (patch) | |
tree | b91781a60f2fdb2d19a13d770b42458fc58772ea /gas/write.c | |
parent | 607334a109d5de6cddbcec994bf142aa099cfe41 (diff) | |
download | gdb-f7460f5f7689262ad24e7e28c9d6662169cd3549.zip gdb-f7460f5f7689262ad24e7e28c9d6662169cd3549.tar.gz gdb-f7460f5f7689262ad24e7e28c9d6662169cd3549.tar.bz2 |
* elf64-alpha.c (ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED): Defined.
(elf64_alpha_relocate_section): Translate local_got_entries
for STT_SECTION symbol to SHF_MERGE section the first time
we see it.
* elfxx-ia64.c (struct elfNN_ia64_local_hash_entry): Add
sec_merge_done.
(get_local_sym_hash): New, extracted from get_dyn_sym_info.
(get_dyn_sym_info): Use it.
(elfNN_ia64_relocate_section): Translate local dyn entries
for STT_SECTION symbol to SHF_MERGE section the first time
we see it.
* write.c (adjust_reloc_syms): Mark SEC_MERGE symbols as used
in reloc if it has non-zero addend.
* config/tc-alpha.c (tc_gen_reloc): Reinstall SEC_MERGE check.
* config/tc-sparc.c (md_apply_fix3): Likewise.
Diffstat (limited to 'gas/write.c')
-rw-r--r-- | gas/write.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gas/write.c b/gas/write.c index 5397aa0..55db85a 100644 --- a/gas/write.c +++ b/gas/write.c @@ -873,6 +873,14 @@ adjust_reloc_syms (abfd, sec, xxx) symbol_mark_used_in_reloc (fixp->fx_addsy); goto done; } + + /* Never adjust a reloc against local symbol in a merge section + with non-zero addend. */ + if ((symsec->flags & SEC_MERGE) && fixp->fx_offset) + { + symbol_mark_used_in_reloc (fixp->fx_addsy); + goto done; + } #endif /* Is there some other reason we can't adjust this one? (E.g., |