Browse Source

Support objcopy --remove-section=.relaFOO

* objcopy.c (handle_remove_section_option): Don't require a dot
	after .rela and .rel to handle a possible relocation section.
	* testsuite/binutils-all/remove-relocs-07.s,
	* testsuite/binutils-all/remove-relocs-07.d,
	* testsuite/binutils-all/remove-relocs-08.d: New tests.
	* testsuite/binutils-all/remove-relocs-01.d,
	* testsuite/binutils-all/remove-relocs-04.d,
	* testsuite/binutils-all/remove-relocs-05.d,
	* testsuite/binutils-all/remove-relocs-06.d: Exclude mips64-openbsd.
users/ahayward/variable_sve2
Alan Modra 8 years ago
parent
commit
c12d9fa2af
  1. 12
      binutils/ChangeLog
  2. 15
      binutils/objcopy.c
  3. 1
      binutils/testsuite/binutils-all/remove-relocs-01.d
  4. 1
      binutils/testsuite/binutils-all/remove-relocs-04.d
  5. 1
      binutils/testsuite/binutils-all/remove-relocs-05.d
  6. 1
      binutils/testsuite/binutils-all/remove-relocs-06.d
  7. 6
      binutils/testsuite/binutils-all/remove-relocs-07.d
  8. 2
      binutils/testsuite/binutils-all/remove-relocs-07.s
  9. 6
      binutils/testsuite/binutils-all/remove-relocs-08.d

12
binutils/ChangeLog

@ -1,3 +1,15 @@
2018-09-17 Alan Modra <amodra@gmail.com>
* objcopy.c (handle_remove_section_option): Don't require a dot
after .rela and .rel to handle a possible relocation section.
* testsuite/binutils-all/remove-relocs-07.s,
* testsuite/binutils-all/remove-relocs-07.d,
* testsuite/binutils-all/remove-relocs-08.d: New tests.
* testsuite/binutils-all/remove-relocs-01.d,
* testsuite/binutils-all/remove-relocs-04.d,
* testsuite/binutils-all/remove-relocs-05.d,
* testsuite/binutils-all/remove-relocs-06.d: Exclude mips64-openbsd.
2018-09-17 Alan Modra <amodra@gmail.com>
* testsuite/lib/binutils-common.exp (is_som_format): New proc.

15
binutils/objcopy.c

@ -3943,18 +3943,21 @@ discard_relocations (bfd *ibfd ATTRIBUTE_UNUSED, asection *isection)
/* Wrapper for dealing with --remove-section (-R) command line arguments.
A special case is detected here, if the user asks to remove a relocation
section (one starting with ".rela." or ".rel.") then this removal must
section (one starting with ".rela" or ".rel") then this removal must
be done using a different technique in a relocatable object. */
static void
handle_remove_section_option (const char *section_pattern)
{
if (strncmp (section_pattern, ".rela.", 6) == 0)
handle_remove_relocations_option (section_pattern + 5);
else if (strncmp (section_pattern, ".rel.", 5) == 0)
handle_remove_relocations_option (section_pattern + 4);
find_section_list (section_pattern, TRUE, SECTION_CONTEXT_REMOVE);
if (strncmp (section_pattern, ".rel", 4) == 0)
{
section_pattern += 4;
if (*section_pattern == 'a')
section_pattern++;
if (*section_pattern)
handle_remove_relocations_option (section_pattern);
}
sections_removed = TRUE;
}

1
binutils/testsuite/binutils-all/remove-relocs-01.d

@ -2,6 +2,7 @@
#source: remove-relocs-01.s
#objcopy: --remove-relocations=.data.relocs.01
#readelf: -r
#notarget: "mips64*-*-openbsd*"
Relocation section '\.rela?\.data\.relocs\.02' at offset 0x[0-9a-f]+ contains 3 entries:
.*

1
binutils/testsuite/binutils-all/remove-relocs-04.d

@ -2,6 +2,7 @@
#source: remove-relocs-01.s
#objcopy: --remove-relocations=.data.relocs.0\[12\]
#readelf: -r
#notarget: "mips64*-*-openbsd*"
Relocation section '\.rela?\.data\.relocs\.03' at offset 0x[0-9a-f]+ contains 3 entries:
.*

1
binutils/testsuite/binutils-all/remove-relocs-05.d

@ -2,6 +2,7 @@
#source: remove-relocs-01.s
#objcopy: --remove-section=.rela.data.relocs.01 --remove-section=.rel.data.relocs.01
#readelf: -r
#notarget: "mips64*-*-openbsd*"
Relocation section '\.rela?\.data\.relocs\.02' at offset 0x[0-9a-f]+ contains 3 entries:
.*

1
binutils/testsuite/binutils-all/remove-relocs-06.d

@ -2,6 +2,7 @@
#source: remove-relocs-01.s
#objcopy: --remove-relocations=.data.relocs.* --remove-relocations=!.data.relocs.02
#readelf: -r
#notarget: "mips64*-*-openbsd*"
Relocation section '\.rela?\.data\.relocs\.02' at offset 0x[0-9a-f]+ contains 3 entries:
.*

6
binutils/testsuite/binutils-all/remove-relocs-07.d

@ -0,0 +1,6 @@
#PROG: objcopy
#source: remove-relocs-07.s
#objcopy: --remove-relocations=FOO
#readelf: -r
There are no relocations in this file\.

2
binutils/testsuite/binutils-all/remove-relocs-07.s

@ -0,0 +1,2 @@
.section "FOO","aw",%progbits
.dc.a x

6
binutils/testsuite/binutils-all/remove-relocs-08.d

@ -0,0 +1,6 @@
#PROG: objcopy
#source: remove-relocs-07.s
#objcopy: --remove-section=.relFOO --remove-section=.relaFOO
#readelf: -r
There are no relocations in this file\.
Loading…
Cancel
Save