summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorJames Henderson <jh7370@my.bristol.ac.uk>2019-05-08 13:28:58 +0000
committerJames Henderson <jh7370@my.bristol.ac.uk>2019-05-08 13:28:58 +0000
commit5a2b5ca7d2f675bf25f5d231dc144aa731c6b1d9 (patch)
treeaa4c80c22905d9eb52c774936f06406c15966502 /llvm/test
parent6de5576af7f4a6e5e42915b2ac8bb1ec1cb88baa (diff)
downloadbcm5719-llvm-5a2b5ca7d2f675bf25f5d231dc144aa731c6b1d9.tar.gz
bcm5719-llvm-5a2b5ca7d2f675bf25f5d231dc144aa731c6b1d9.zip
[llvm-objcopy] Improve error message for unrecognised archive member
Prior to this patch, llvm-objcopy's error messages for archives with unsupported members only mentioned the archive name, not the member name, making them unhelpful. This change improves it by approximately following GNU objcopy's error message syntax of "<archive name>(<member name>): <problem>". Reviewed by: grimar Differential Revision: https://reviews.llvm.org/D61674 llvm-svn: 360251
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/tools/llvm-objcopy/ELF/archive-unknown-members.test45
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/ELF/archive-unknown-members.test b/llvm/test/tools/llvm-objcopy/ELF/archive-unknown-members.test
new file mode 100644
index 00000000000..40c27157d31
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/ELF/archive-unknown-members.test
@@ -0,0 +1,45 @@
+## Show that llvm-objcopy and llvm-strip emit errors when attempting to modify
+## archives containing unrecognized files, and do not modify anything. We use
+## --strip-debug so that the section should be removed, and a difference
+## detectable, if the file were modified.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: rm -f %t.a
+# RUN: llvm-ar rc %t.a %t.o %s
+# RUN: cp %t.a %t1.a
+# RUN: cp %t.a %t2.a
+
+# RUN: not llvm-objcopy --strip-debug %t1.a 2>&1 | FileCheck %s -DARCHIVE=%t1.a
+# RUN: not llvm-strip --strip-debug %t2.a 2>&1 | FileCheck %s -DARCHIVE=%t2.a
+## Verify that the archive was not modified, if any member couldn't be recognised.
+# RUN: cmp %t.a %t1.a
+# RUN: cmp %t.a %t2.a
+
+# CHECK: error: '[[ARCHIVE]](archive-unknown-members.test)': The file was not recognized as a valid object file
+
+# RUN: rm -f %t.thin1.a %t.thin2.a
+# RUN: cp %t.o %t1.o
+# RUN: cp %t.o %t2.o
+# RUN: llvm-ar rcT %t.thin1.a %t1.o %s
+# RUN: llvm-ar rcT %t.thin2.a %t2.o %s
+
+# RUN: not llvm-objcopy --strip-debug %t.thin1.a 2>&1 \
+# RUN: | FileCheck %s --check-prefix=THIN -DARCHIVE=%t.thin1.a -DMEMBER=%s
+# RUN: not llvm-strip --strip-debug %t.thin2.a 2>&1 \
+# RUN: | FileCheck %s --check-prefix=THIN -DARCHIVE=%t.thin2.a -DMEMBER=%s
+## Verify that the first member was not modified, if a later member could not
+## be recognised.
+# RUN: cmp %t.o %t1.o
+# RUN: cmp %t.o %t2.o
+
+# THIN: error: '[[ARCHIVE]]([[MEMBER]])': The file was not recognized as a valid object file
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .debug_foo
+ Type: SHT_PROGBITS
OpenPOWER on IntegriCloud