diff options
author | Kaz Kojima <kkojima@rr.iij4u.or.jp> | 2003-10-14 22:43:10 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@rr.iij4u.or.jp> | 2003-10-14 22:43:10 +0000 |
commit | 9bf7216d00061b535246359942c3a99531a9e41b (patch) | |
tree | a78e4e05886404239bb6d24acc8ee5532821df90 | |
parent | b614a7028d7381e4ec589c60aa7edab0d1d60ada (diff) | |
download | gdb-9bf7216d00061b535246359942c3a99531a9e41b.zip gdb-9bf7216d00061b535246359942c3a99531a9e41b.tar.gz gdb-9bf7216d00061b535246359942c3a99531a9e41b.tar.bz2 |
* elf-bfd.h (struct elf_backend_data): New function pointer member
elf_backend_merge_symbol_attribute.
* elflink.h (elf_link_add_object_symbols): Adjust call to
elf_backend_merge_symbol_attribute if the backend defined it.
* elfxx-target.h (elf_backend_merge_symbol_attribute): New macro.
(elfNN_bed): Add that to the initializer.
-rw-r--r-- | bfd/ChangeLog | 9 | ||||
-rw-r--r-- | bfd/elf-bfd.h | 5 | ||||
-rw-r--r-- | bfd/elflink.h | 4 | ||||
-rw-r--r-- | bfd/elfxx-target.h | 4 |
4 files changed, 22 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 235bc66..d41c0a6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2003-10-14 Kaz Kojima <kkojima@rr.iij4u.or.jp> + + * elf-bfd.h (struct elf_backend_data): New function pointer member + elf_backend_merge_symbol_attribute. + * elflink.h (elf_link_add_object_symbols): Adjust call to + elf_backend_merge_symbol_attribute if the backend defined it. + * elfxx-target.h (elf_backend_merge_symbol_attribute): New macro. + (elfNN_bed): Add that to the initializer. + 2003-10-14 Bob Wilson <bob.wilson@acm.org> * elf32-xtensa.c (get_is_linkonce_section): Delete. diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 9903694..bf73762 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -813,6 +813,11 @@ struct elf_backend_data void (*elf_backend_hide_symbol) (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean); + /* Merge the backend specific symbol attribute. */ + void (*elf_backend_merge_symbol_attribute) + (struct elf_link_hash_entry *, const Elf_Internal_Sym *, bfd_boolean, + bfd_boolean); + /* Emit relocations. Overrides default routine for emitting relocs, except during a relocatable link, or if all relocs are being emitted. */ bfd_boolean (*elf_backend_emit_relocs) diff --git a/bfd/elflink.h b/bfd/elflink.h index bd94cbf..71fdbaa 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -1261,6 +1261,10 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) /* If st_other has a processor-specific meaning, specific code might be needed here. We never merge the visibility attribute with the one from a dynamic object. */ + if (bed->elf_backend_merge_symbol_attribute) + (*bed->elf_backend_merge_symbol_attribute) (h, isym, definition, + dynamic); + if (isym->st_other != 0 && !dynamic) { unsigned char hvis, symvis, other, nvis; diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index 544f8f3..2d1e5e2 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -361,6 +361,9 @@ #ifndef elf_backend_hide_symbol #define elf_backend_hide_symbol _bfd_elf_link_hash_hide_symbol #endif +#ifndef elf_backend_merge_symbol_attribute +#define elf_backend_merge_symbol_attribute NULL +#endif #ifndef elf_backend_emit_relocs #define elf_backend_emit_relocs NULL #endif @@ -483,6 +486,7 @@ static const struct elf_backend_data elfNN_bed = elf_backend_output_arch_syms, elf_backend_copy_indirect_symbol, elf_backend_hide_symbol, + elf_backend_merge_symbol_attribute, elf_backend_emit_relocs, elf_backend_count_relocs, elf_backend_grok_prstatus, |