aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaz Kojima <kkojima@rr.iij4u.or.jp>2003-10-14 22:43:10 +0000
committerKaz Kojima <kkojima@rr.iij4u.or.jp>2003-10-14 22:43:10 +0000
commit9bf7216d00061b535246359942c3a99531a9e41b (patch)
treea78e4e05886404239bb6d24acc8ee5532821df90
parentb614a7028d7381e4ec589c60aa7edab0d1d60ada (diff)
downloadgdb-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/ChangeLog9
-rw-r--r--bfd/elf-bfd.h5
-rw-r--r--bfd/elflink.h4
-rw-r--r--bfd/elfxx-target.h4
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,