aboutsummaryrefslogtreecommitdiff
path: root/binutils/testsuite
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2015-08-24 13:02:39 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2016-07-14 11:32:48 +0100
commite511c9b19faec4d21aef49d12224316dea3d51eb (patch)
tree8709243de73a47b67633070aca6293ba0e1949f2 /binutils/testsuite
parent7df94786e4723ba93d8982e55fc5e652b4b80142 (diff)
downloadgdb-e511c9b19faec4d21aef49d12224316dea3d51eb.zip
gdb-e511c9b19faec4d21aef49d12224316dea3d51eb.tar.gz
gdb-e511c9b19faec4d21aef49d12224316dea3d51eb.tar.bz2
objcopy/strip: Allow section patterns starting with '!'.
For symbol matching, prefixing a pattern with '!' will indicate a non-matching pattern, however, this is not the case for section patterns. As a result it is not possible to say "apply this action to all sections except ...". With this commit the objcopy and strip tools now support '!' prefix for section patterns, so we can say: objcopy --remove-section="*" --remove-section="!.text*" Which will remove all sections, except those matching the pattern '.text*'. binutils/ChangeLog: * objcopy.c (find_section_list): Handle section patterns starting with '!' being a non-matching pattern. * doc/binutils.texi (objcopy): Give example of using '!' with --remove-section and --only-section. (strip): Give example of using '!' with --remove-section. * testsuite/binutils-all/data-sections.s: New file. * testsuite/binutils-all/only-section-01.d: New file. * testsuite/binutils-all/remove-section-01.d: New file. * testsuite/binutils-all/objcopy.exp: Run new tests. * NEWS: Mention new feature.
Diffstat (limited to 'binutils/testsuite')
-rw-r--r--binutils/testsuite/binutils-all/data-sections.s17
-rw-r--r--binutils/testsuite/binutils-all/objcopy.exp3
-rw-r--r--binutils/testsuite/binutils-all/only-section-01.d9
-rw-r--r--binutils/testsuite/binutils-all/remove-section-01.d8
4 files changed, 37 insertions, 0 deletions
diff --git a/binutils/testsuite/binutils-all/data-sections.s b/binutils/testsuite/binutils-all/data-sections.s
new file mode 100644
index 0000000..0d6284c
--- /dev/null
+++ b/binutils/testsuite/binutils-all/data-sections.s
@@ -0,0 +1,17 @@
+ .section ".data.aa.01", "aw"
+ .word 0x1
+
+ .section ".data.aa.02", "aw"
+ .word 0x2
+
+ .section ".data.aa.03", "aw"
+ .word 0x3
+
+ .section ".data.bb.01", "aw"
+ .word 0x4
+
+ .section ".data.bb.02", "aw"
+ .word 0x5
+
+ .section ".data.bb.03", "aw"
+ .word 0x6
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index ccd4422..be8a7d2 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -1118,6 +1118,9 @@ if [is_elf_format] {
run_dump_test "exclude-1a"
run_dump_test "exclude-1b"
+
+ run_dump_test "only-section-01"
+ run_dump_test "remove-section-01"
}
run_dump_test "localize-hidden-2"
diff --git a/binutils/testsuite/binutils-all/only-section-01.d b/binutils/testsuite/binutils-all/only-section-01.d
new file mode 100644
index 0000000..0e71430
--- /dev/null
+++ b/binutils/testsuite/binutils-all/only-section-01.d
@@ -0,0 +1,9 @@
+#PROG: objcopy
+#source: data-sections.s
+#objcopy: --only-section=.data.aa.* --only-section=!.data.aa.02
+#readelf: -WS
+
+#...
+ \[ [0-9]+\] .data.aa.01.*
+ \[ [0-9]+\] .data.aa.03.*
+#...
diff --git a/binutils/testsuite/binutils-all/remove-section-01.d b/binutils/testsuite/binutils-all/remove-section-01.d
new file mode 100644
index 0000000..b2837b2
--- /dev/null
+++ b/binutils/testsuite/binutils-all/remove-section-01.d
@@ -0,0 +1,8 @@
+#PROG: objcopy
+#source: data-sections.s
+#objcopy: --remove-section=.data.aa.* --remove-section=!.data.aa.02
+#readelf: -WS
+
+#...
+ \[ [0-9]+\] \.data\.aa\.02.*
+#...