From a77dc2cc26f789c3ee32ca4666750d27af07a6b9 Mon Sep 17 00:00:00 2001 From: Bob Wilson Date: Thu, 12 Oct 2006 21:56:19 +0000 Subject: bfd/ * elf32-xtensa.c (elf_xtensa_action_discarded): New. (elf_backend_action_discarded): Define. ld/ * emultempl/xtensaelf.em (is_inconsistent_linkonce_section): Check for linkonce XCC exception tables (".e" and ".h"). --- ld/ChangeLog | 5 +++++ ld/emultempl/xtensaelf.em | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) (limited to 'ld') diff --git a/ld/ChangeLog b/ld/ChangeLog index f2b8ea3..77d813c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2006-10-12 Bob Wilson + + * emultempl/xtensaelf.em (is_inconsistent_linkonce_section): Check + for linkonce XCC exception tables (".e" and ".h"). + 2006-10-11 Bob Wilson * emulparams/elf32xtensa.sh (TEXT_PLT): Enable. diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em index bbee546..cf3f774 100644 --- a/ld/emultempl/xtensaelf.em +++ b/ld/emultempl/xtensaelf.em @@ -1184,7 +1184,7 @@ input_section_linked (asection *sec) } -/* Strip out any linkonce literal sections or property tables where the +/* Strip out any linkonce property tables or XCC exception tables where the associated linkonce text is from a different object file. Normally, a matching set of linkonce sections is taken from the same object file, but sometimes the files are compiled differently so that some of the @@ -1199,17 +1199,22 @@ is_inconsistent_linkonce_section (asection *sec) { bfd *abfd = sec->owner; const char *sec_name = bfd_get_section_name (abfd, sec); - const char *name = 0; + const char *name; if ((bfd_get_section_flags (abfd, sec) & SEC_LINK_ONCE) == 0 || strncmp (sec_name, ".gnu.linkonce.", linkonce_len) != 0) return FALSE; - /* Check if this is an Xtensa property section. */ - if (CONST_STRNEQ (sec_name + linkonce_len, "p.")) - name = sec_name + linkonce_len + 2; - else if (CONST_STRNEQ (sec_name + linkonce_len, "prop.")) - name = strchr (sec_name + linkonce_len + 5, '.') + 1; + /* Check if this is an Xtensa property section or an exception table + for Tensilica's XCC compiler. */ + name = sec_name + linkonce_len; + if (CONST_STRNEQ (name, "prop.")) + name = strchr (name + 5, '.') + 1; + else if (name[1] == '.' + && (name[0] == 'p' || name[0] == 'e' || name[0] == 'h')) + name += 2; + else + name = 0; if (name) { -- cgit v1.1