8sa1-binutils-gdb/binutils/testsuite/binutils-all
Andrew Burgess d3e5f6c8f1 objcopy/strip: Add option --remove-relocations=SECTIONPATTERN
The objcopy and strip tools make use of the bfd library to manipulate
the state of the input file (to produce an output file).  Within the
input file (for ELF at least), relocations are held within a section,
and so, if the user wanted to remove the relocations, but keep the
section to which the relocations would have been applied, it is tempting
to think that specifying the name of a relocation section to objcopy's
--remove-section option might do what you want, for example:

   objcopy --remove-section=.rela.text input.elf output.elf

However, this does not work.  The reason is that when the input file is
loaded, relocations are not managed as sections, but are, instead,
loaded as data associated with the section to which the relocations
would be applied.  In our example above the relocations in '.rela.text'
are held as data on the section '.text' once 'input.elf' is loaded.

One task that objcopy and strip do is copy the relocations from the
input file to the output file if the section is also being copied from
the input file to the output file.

This commit adds a new command line option for objcopy and strip,
--remove-relocations, which can be used to remove the relocations, while
keeping the section that the relocations would have been applied to, for
example:

    objcopy --remove-relocations=.text input.elf output.elf

in this case the section '.text' will appear in both 'input.elf' and
'output.elf', but any relocations in 'input.elf' that apply to '.text'
will not be present in 'output.elf'.

I have also added a special case to the handling of --remove-section
that spots if a user tries to remove a relocation section (currently
this is done by spotting the '.rela.' or '.rel.' prefix) and forwards
the request to --remove-relocations.

As with --remove-section and --only-section the --remove-relocations
option supports the '!' prefix on the section-patterns it takes to allow
for sections to be specifically not matched.

There are tests for all the new functionality.

binutils/ChangeLog:

	* doc/binutils.texi (objcopy): Document 'remove-relocations'.
	(strip): Likewise.
	* objcopy.c (SECTION_CONTEXT_REMOVE_RELOCS): Define.
	(enum command_line_switch): Add 'OPTION_REMOVE_RELOCS'.
	(struct option strip_options): Add 'remove-relocations'.
	(struct option copy_options): Likewise.
	(copy_usage): Likewise.
	(strip_usage): Likewise.
	(handle_remove_relocations_option): New function.
	(discard_relocations): New function.
	(handle_remove_section_option): New function.
	(copy_relocations_in_section): Use discard_relocations.
	(strip_main): Use handle_remove_section_option for
	'remove-section', and handle 'remove-relocations' option.
	(copy_main): Likewise.
	* testsuite/binutils-all/objcopy.exp: Run new tests.
	* testsuite/binutils-all/remove-relocs-01.d: New file.
	* testsuite/binutils-all/remove-relocs-01.s: New file.
	* testsuite/binutils-all/remove-relocs-02.d: New file.
	* testsuite/binutils-all/remove-relocs-03.d: New file.
	* testsuite/binutils-all/remove-relocs-04.d: New file.
	* testsuite/binutils-all/remove-relocs-05.d: New file.
	* testsuite/binutils-all/remove-relocs-06.d: New file.
2016-07-14 11:34:10 +01:00
..
aarch64 Add support to AArch64 disassembler for verifying instructions. Add verifier for LDPSW. 2016-04-28 09:11:03 +01:00
arm Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
bfin Copyright update for binutils 2016-01-01 23:00:01 +10:30
hppa Copyright update for binutils 2016-01-01 23:00:01 +10:30
i386 Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
m68k Copyright update for binutils 2016-01-01 23:00:01 +10:30
mips MIPS/opcodes: Correct mixed MIPS16 and microMIPS disassembly 2016-05-18 13:07:24 +01:00
vax Copyright update for binutils 2016-01-01 23:00:01 +10:30
windres Copyright update for binutils 2016-01-01 23:00:01 +10:30
x86-64 Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
add-empty-section.d
add-section.d
add-symbol.d Run add-symbol test on mips 2015-10-22 12:49:17 +10:30
alias-2.def
alias.def
ar.exp Relax previous restriction on running binutils ar tests for Alpha targets, allowing the tests to be run for ELF variants. 2016-06-28 14:05:34 +01:00
bintest.s
common-1.s Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1a.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1b.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1c.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1d.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1e.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1f.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2.s Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2a.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2b.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2c.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2d.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2e.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2f.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
compress.exp Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
copy-1.d
copy-1.s
copy-2.d
copy-3.d Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
copy-4.d Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
copytest.s
data-sections.s objcopy/strip: Allow section patterns starting with '!'. 2016-07-14 11:32:48 +01:00
debug_str.d Fixes a problem with the BFD library running out of memory because it mistakenly 2014-04-30 17:04:04 +01:00
debug_str.s Fixes a problem with the BFD library running out of memory because it mistakenly 2014-04-30 17:04:04 +01:00
dlltool.exp Fix dlltool tests for ARM targets, which do not support the --leading-underscore option. 2016-01-20 14:52:33 +00:00
dumptest.s
dw2-1.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-1.W Don't change compressed input debug section names 2015-04-23 07:59:59 -07:00
dw2-2.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-3.rS Add SHF_COMPRESSED support to gas and objcopy 2015-04-08 07:54:09 -07:00
dw2-3.rt Add SHF_COMPRESSED support to gas and objcopy 2015-04-08 07:54:09 -07:00
dw2-3.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-3.W Updated to accept .debug_* sections 2015-07-10 08:14:59 -07:00
dw2-3gabi.W Don't change compressed input debug section names 2015-04-23 07:59:59 -07:00
dw2-compressed.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-decodedline-1.S Remove support for the (deprecated) openrisc and or32 configurations and replace 2014-04-22 15:57:47 +01:00
dw2-decodedline.S
dw2-empty.S
dw2-ranges.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-ranges.W objdump: Handle 32-bit base address in debug_ranges / debug_loc. 2015-11-30 13:28:26 +00:00
elfedit-1.d Also skip x86_64-*-nacl* 2015-05-12 12:47:27 -07:00
elfedit-2.d
elfedit-3.d
elfedit-4.d
elfedit-5.d Add EM_386/EM_IAMCU support to elfedit.c 2015-05-11 09:57:21 -07:00
elfedit.exp Copyright update for binutils 2016-01-01 23:00:01 +10:30
empty Allow zero length archive elements. 2016-03-07 17:29:25 +00:00
empty-file
empty.s
exclude-1.s
exclude-1a.d
exclude-1b.d
fastcall.def
group-2.s
group-3.s
group-4.s
group-5.d
group-5.s
group-6.d
group-6.s
group.s
libdw2-compressed.out Add a dw2-3.S test 2015-04-04 07:34:25 -07:00
libdw2-compressedgabi.out Don't add the zlib header to SHF_COMPRESSED section 2015-05-14 16:02:08 -07:00
libdw2.out Add a dw2-3.S test 2015-04-04 07:34:25 -07:00
link-order.s
localize-hidden-1.d Fix the evaluation of RL78 complex relocs, by making immediate values be computed relative to a new absolute symbol. 2015-07-24 16:44:27 +01:00
localize-hidden-1.s
localize-hidden-2.d
localize-hidden-2.s
needed-by-reloc.s
nm-1.s * binutils-all/nm.exp: --size-sort test: Add more ELF-like 2013-08-22 11:29:43 +00:00
nm-elf-1.s binutils/ 2013-08-19 15:08:52 +00:00
nm.exp Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
note-1.d
objcopy.exp objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
objdump.exp Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
objdump.s
objdump.W Don't change compressed input debug section names 2015-04-23 07:59:59 -07:00
objdump.WL
only-section-01.d objcopy/strip: Allow section patterns starting with '!'. 2016-07-14 11:32:48 +01:00
pr18374.s Fix PR18374 by making readelf and objdump ignore end-of-list markers in the .debug_loc section if there are relocations against them. 2015-05-15 11:24:33 +01:00
pr19020.in Don't use the output section size to copy input section 2015-09-29 13:31:57 -07:00
pr19020a.d Don't use the output section size to copy input section 2015-09-29 13:31:57 -07:00
pr19020b.d Don't use the output section size to copy input section 2015-09-29 13:31:57 -07:00
pr19547.c Clear HAS_RELOC if there are no relocations 2016-02-02 03:30:48 -08:00
readelf.exp MIPS objcopy --rename-section fix 2016-06-24 23:26:29 +09:30
readelf.h
readelf.n PR binutils/15191 2013-02-26 16:59:52 +00:00
readelf.pr18374 Fix PR18374 by making readelf and objdump ignore end-of-list markers in the .debug_loc section if there are relocations against them. 2015-05-15 11:24:33 +01:00
readelf.r Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
readelf.r-64
readelf.s Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
readelf.s-64 Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
readelf.ss readelf -s test: Skip extra symbols produced by MSP430 assembler. 2014-03-17 11:00:32 +00:00
readelf.ss-64 Fix the binutils readelf.ss test for the AArch64 target. 2015-04-02 15:28:02 +01:00
readelf.ss-mips MIPS testsuite cleanup - part 1 2014-09-06 17:58:37 +01:00
readelf.ss-tmips [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
readelf.wa Display null bytes in DWARF debug info 2012-08-02 13:42:59 +00:00
readelf.z Add --decompress option to readelf to decompress sections before they are dumped. 2015-05-15 17:16:31 +01:00
remove-relocs-01.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-01.s objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-02.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-03.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-04.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-05.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-06.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-section-01.d objcopy/strip: Allow section patterns starting with '!'. 2016-07-14 11:32:48 +01:00
size.exp Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
strip-1.d
strip-2.d
strip-3.d [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
strip-4.d
strip-5.d
strip-6.d
strip-7.d
strip-8.d
strip-9.d
strip-10.d My patch to the binutils strip-10.d test was wrong. The osabi field should always be set to 2014-01-29 14:01:54 +00:00
strip-11.d Fix the evaluation of RL78 complex relocs, by making immediate values be computed relative to a new absolute symbol. 2015-07-24 16:44:27 +01:00
strip-12.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
strip-12.s Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-1.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-2.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-3.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-4.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols.s objcopy: Improve wildcard matching for symbols with '!' prefix. 2015-08-07 11:41:40 +02:00
testprog.c Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
testranges-ia64.d
testranges-ia64.s
testranges.d
testranges.s
unique.s
unknown.s
update-1.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-2.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-3.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-4.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-section.exp MIPS objcopy --rename-section fix 2016-06-24 23:26:29 +09:30
version.def
version.s
z.s Add --decompress option to readelf to decompress sections before they are dumped. 2015-05-15 17:16:31 +01:00