diff options
author | Ed Maste <emaste@freebsd.org> | 2016-05-25 14:45:28 +0000 |
---|---|---|
committer | Ed Maste <emaste@freebsd.org> | 2016-05-25 14:45:28 +0000 |
commit | 594e06b879bfe9931aa1b75555367100072cfbd3 (patch) | |
tree | 12f1c39470d461252ff62ff39fa9e364cc13ef3c | |
parent | 5c33b91bbe169eb1605ba67ba1382a0524b6424a (diff) | |
download | bcm5719-llvm-594e06b879bfe9931aa1b75555367100072cfbd3.tar.gz bcm5719-llvm-594e06b879bfe9931aa1b75555367100072cfbd3.zip |
ELF: Handle empty CIE augmentation string
"A zero length string indicates that no augmentation data is present."
The FreeBSD/mips toolchain (GCC 4.2.1) generates .debug_frame sections
containing CIE records that have an empty augmentation string.
Differential Revision: http://reviews.llvm.org/D19928
llvm-svn: 270706
-rw-r--r-- | lld/ELF/EhFrame.cpp | 2 | ||||
-rw-r--r-- | lld/test/ELF/Inputs/no-augmentation.o | bin | 0 -> 3640 bytes | |||
-rw-r--r-- | lld/test/ELF/no-augmentation.test | 10 |
3 files changed, 11 insertions, 1 deletions
diff --git a/lld/ELF/EhFrame.cpp b/lld/ELF/EhFrame.cpp index 00a5faef546..b130ac1ca22 100644 --- a/lld/ELF/EhFrame.cpp +++ b/lld/ELF/EhFrame.cpp @@ -111,7 +111,7 @@ template <class ELFT> uint8_t getFdeEncoding(ArrayRef<uint8_t> D) { if (Version != 1 && Version != 3) fatal("FDE version 1 or 3 expected, but got " + Twine((unsigned)Version)); - const unsigned char *AugEnd = std::find(D.begin() + 1, D.end(), '\0'); + const unsigned char *AugEnd = std::find(D.begin(), D.end(), '\0'); if (AugEnd == D.end()) fatal("corrupted CIE"); StringRef Aug(reinterpret_cast<const char *>(D.begin()), AugEnd - D.begin()); diff --git a/lld/test/ELF/Inputs/no-augmentation.o b/lld/test/ELF/Inputs/no-augmentation.o Binary files differnew file mode 100644 index 00000000000..8b9ff5e5923 --- /dev/null +++ b/lld/test/ELF/Inputs/no-augmentation.o diff --git a/lld/test/ELF/no-augmentation.test b/lld/test/ELF/no-augmentation.test new file mode 100644 index 00000000000..4a2604aaef8 --- /dev/null +++ b/lld/test/ELF/no-augmentation.test @@ -0,0 +1,10 @@ +// RUN: llvm-mc -filetype=obj -triple=mips64-unknown-freebsd %s -o %t.o +// RUN: ld.lld --eh-frame-hdr %t.o %p/Inputs/no-augmentation.o -o %t \ +// RUN: | FileCheck -allow-empty %s + +// REQUIRES: mips + +// CHECK-NOT: corrupted or unsupported CIE information + +.global __start +__start: |