From: Alan Modra Date: Sun, 25 Mar 2012 06:45:16 +0000 (+0000) Subject: ld/ X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b514e6a51fefb7dde379f595b76dd9113e132487;p=binutils-gdb.git ld/ * ldemul.c (before_allocation_default): Revert last change. ldlang.c (lang_add_section): Likewise. (strip_excluded_output_sections): Don't strip output sections with user input sections when emitrelocations, unless all are SEC_EXCLUDE. ld/testsuite/ * ld-powerpc/vxworks-relax.rd: Remove check on reloc section file offset and reloc symbol indices. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index 4b9d324ecde..f3b80950afd 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2012-03-25 Alan Modra + + * ldemul.c (before_allocation_default): Revert last change. + ldlang.c (lang_add_section): Likewise. + (strip_excluded_output_sections): Don't strip output sections with + user input sections when emitrelocations, unless all are SEC_EXCLUDE. + 2012-03-23 Alan Modra * ldemul.c (before_allocation_default): When emitrelocations, diff --git a/ld/ldemul.c b/ld/ldemul.c index 5e2fd82a0dd..85baeab3258 100644 --- a/ld/ldemul.c +++ b/ld/ldemul.c @@ -237,7 +237,7 @@ after_allocation_default (void) void before_allocation_default (void) { - if (!link_info.relocatable && !link_info.emitrelocations) + if (!link_info.relocatable) strip_excluded_output_sections (); } diff --git a/ld/ldlang.c b/ld/ldlang.c index 73e0179b016..b0c23cb4494 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -2380,7 +2380,6 @@ lang_add_section (lang_statement_list_type *ptr, section->output_section = output->bfd_section; if (!link_info.relocatable - && !link_info.emitrelocations && !stripped_excluded_sections) { asection *s = output->bfd_section->map_tail.s; @@ -3887,8 +3886,9 @@ strip_excluded_output_sections (void) asection *s; for (s = output_section->map_head.s; s != NULL; s = s->map_head.s) - if ((s->flags & SEC_LINKER_CREATED) != 0 - && (s->flags & SEC_EXCLUDE) == 0) + if ((s->flags & SEC_EXCLUDE) == 0 + && ((s->flags & SEC_LINKER_CREATED) != 0 + || link_info.emitrelocations)) { exclude = FALSE; break; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 42c04ffa130..dc8643beecf 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-03-25 Alan Modra + + * ld-powerpc/vxworks-relax.rd: Remove check on reloc section + file offset and reloc symbol indices. + 2012-03-21 Hans-Peter Nilsson PR ld/13813 diff --git a/ld/testsuite/ld-powerpc/vxworks-relax.rd b/ld/testsuite/ld-powerpc/vxworks-relax.rd index e28094c0c11..572c74ddf45 100644 --- a/ld/testsuite/ld-powerpc/vxworks-relax.rd +++ b/ld/testsuite/ld-powerpc/vxworks-relax.rd @@ -1,9 +1,9 @@ -Relocation section '.rela.text' at offset 0x4010150 contains 6 entries: +Relocation section '.rela.text' at offset .* contains 6 entries: Offset Info Type Sym.Value Sym. Name \+ Addend -00080012 00000106 R_PPC_ADDR16_HA 00080000 .text \+ 4000020 -00080016 00000104 R_PPC_ADDR16_LO 00080000 .text \+ 4000020 -00080006 00000106 R_PPC_ADDR16_HA 00080000 .text \+ 4000020 -0008000a 00000104 R_PPC_ADDR16_LO 00080000 .text \+ 4000020 -0408002a 00000306 R_PPC_ADDR16_HA 00080000 _start \+ 0 -0408002e 00000304 R_PPC_ADDR16_LO 00080000 _start \+ 0 +00080012 .* R_PPC_ADDR16_HA 00080000 .text \+ 4000020 +00080016 .* R_PPC_ADDR16_LO 00080000 .text \+ 4000020 +00080006 .* R_PPC_ADDR16_HA 00080000 .text \+ 4000020 +0008000a .* R_PPC_ADDR16_LO 00080000 .text \+ 4000020 +0408002a .* R_PPC_ADDR16_HA 00080000 _start \+ 0 +0408002e .* R_PPC_ADDR16_LO 00080000 _start \+ 0