[PATCH] D59170: [lld] [ELF] Print a better error for an archive containing a non-ELF file.

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 8 17:28:27 PST 2019


efriedma created this revision.
efriedma added reviewers: ruiu, pcc.
Herald added subscribers: MaskRay, arichardson, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.

Hopefully gives a more readable error message for the most obvious mistake.


Repository:
  rLLD LLVM Linker

https://reviews.llvm.org/D59170

Files:
  ELF/InputFiles.cpp
  test/ELF/invalid/Inputs/not-elf.a
  test/ELF/invalid/invalid-elf.test


Index: test/ELF/invalid/invalid-elf.test
===================================================================
--- test/ELF/invalid/invalid-elf.test
+++ test/ELF/invalid/invalid-elf.test
@@ -1,6 +1,10 @@
 # REQUIRES: x86
 # RUN: llvm-mc %s -o %t -filetype=obj -triple x86_64-pc-linux
 
+# RUN: not ld.lld %t %p/Inputs/not-elf.a -o %t2 2>&1 | \
+# RUN:   FileCheck --check-prefix=NOT-ELF %s
+# NOT-ELF: test.o: expected ELF file in archive
+
 # RUN: not ld.lld %t %p/Inputs/data-encoding.a -o %t2 2>&1 | \
 # RUN:   FileCheck --check-prefix=INVALID-DATA-ENC %s
 # INVALID-DATA-ENC: test.o: invalid data encoding
Index: test/ELF/invalid/Inputs/not-elf.a
===================================================================
--- /dev/null
+++ test/ELF/invalid/Inputs/not-elf.a
@@ -0,0 +1,2 @@
+!<arch>
+test.o/         0           0     0     644     0         `
Index: ELF/InputFiles.cpp
===================================================================
--- ELF/InputFiles.cpp
+++ ELF/InputFiles.cpp
@@ -1193,6 +1193,8 @@
   unsigned char Endian;
   std::tie(Size, Endian) = getElfArchType(MB.getBuffer());
 
+  if (!MB.getBuffer().startswith(ElfMagic))
+    fatal(MB.getBufferIdentifier() + ": expected ELF file in archive");
   if (Endian != ELFDATA2LSB && Endian != ELFDATA2MSB)
     fatal(MB.getBufferIdentifier() + ": invalid data encoding");
   if (Size != ELFCLASS32 && Size != ELFCLASS64)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59170.189971.patch
Type: text/x-patch
Size: 1393 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190309/97406017/attachment.bin>


More information about the llvm-commits mailing list