aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1996-11-26 16:43:03 +0000
committerIan Lance Taylor <ian@airs.com>1996-11-26 16:43:03 +0000
commit6c02f1a02cb0df4888b1363ed0e70c11d81bf74b (patch)
tree4ec5977653129fc29cc9def65080c7676c43e460 /bfd/elflink.h
parent8d67dc307736428ff556ae6fe4fe7546cbb4a3b1 (diff)
downloadgdb-6c02f1a02cb0df4888b1363ed0e70c11d81bf74b.zip
gdb-6c02f1a02cb0df4888b1363ed0e70c11d81bf74b.tar.gz
gdb-6c02f1a02cb0df4888b1363ed0e70c11d81bf74b.tar.bz2
* elf-bfd.h (struct elf_link_hash_entry): Add other field.
* elf.c (_bfd_elf_link_hash_newfunc): Initialize other field. (swap_out_syms): Set st_other from existing st_other field. * elflink.h (elf_link_add_object_symbols): Store st_other in hash table other field. (elf_link_output_extsym): Set the other field from the global hash table entry. * elf32-mips.c (enum reloc_type): Add R_MIPS16_26. (elf_mips16_jump_howto): New static variable. (mips16_jump_reloc): New static function. (bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS16_JMP. (mips_info_to_howto_rel): Handle R_MIPS16_26. (mips_elf_relocate_section): Handle R_MIPS16_26. Handle R_MIPS_26 to a mips16 symbol. * reloc.c (BFD_RELOC_MIPS16_JMP): Add to list of relocs. * bfd-in2.h, libbfd.h: Rebuild. * cpu-mips.c (arch_info_struct): Add mips:16 entry.
Diffstat (limited to 'bfd/elflink.h')
-rw-r--r--bfd/elflink.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/bfd/elflink.h b/bfd/elflink.h
index dcc5827..3c8c339 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -802,6 +802,10 @@ elf_link_add_object_symbols (abfd, info)
h->type = ELF_ST_TYPE (sym.st_info);
}
+ if (sym.st_other != 0
+ && (definition || h->other == 0))
+ h->other = sym.st_other;
+
/* Set a flag in the hash table entry indicating the type of
reference or definition we just found. Keep a count of
the number of dynamic symbols we find. A dynamic symbol
@@ -2576,7 +2580,7 @@ elf_link_output_extsym (h, data)
sym.st_value = 0;
sym.st_size = h->size;
- sym.st_other = 0;
+ sym.st_other = h->other;
if (h->root.type == bfd_link_hash_undefweak
|| h->root.type == bfd_link_hash_defweak)
sym.st_info = ELF_ST_INFO (STB_WEAK, h->type);