From def0c1f756562601829364e3fca4bd1f0407316e Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Thu, 7 Feb 2013 18:26:45 +0000 Subject: [PATCH] [Object][ELF] Fix crash on no dynamic section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174639 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ELF.h | 8 +++++--- test/Object/readobj.test | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 test/Object/readobj.test diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h index a84461020e3..4a5eebf0266 100644 --- a/include/llvm/Object/ELF.h +++ b/include/llvm/Object/ELF.h @@ -513,6 +513,8 @@ public: return Tmp; } + const char *get() const { return Current; } + private: const uint64_t EntitySize; const char *Current; @@ -2292,7 +2294,7 @@ library_iterator ELFObjectFile::begin_libraries_needed() const { } DataRefImpl DRI; - DRI.p = reinterpret_cast(&*i); + DRI.p = reinterpret_cast(i.get()); return library_iterator(LibraryRef(DRI, this)); } @@ -2312,7 +2314,7 @@ error_code ELFObjectFile::getLibraryNext(DataRefImpl Data, ; DataRefImpl DRI; - DRI.p = reinterpret_cast(&*i); + DRI.p = reinterpret_cast(i.get()); Result = LibraryRef(DRI, this); return object_error::success; } @@ -2343,7 +2345,7 @@ template library_iterator ELFObjectFile::end_libraries_needed() const { dyn_iterator e = end_dynamic_table(); DataRefImpl DRI; - DRI.p = reinterpret_cast(&*e); + DRI.p = reinterpret_cast(e.get()); return library_iterator(LibraryRef(DRI, this)); } diff --git a/test/Object/readobj.test b/test/Object/readobj.test new file mode 100644 index 00000000000..e29f40492d7 --- /dev/null +++ b/test/Object/readobj.test @@ -0,0 +1,2 @@ +// Don't crash while reading non-dynamic files. +RUN: llvm-readobj %p/Inputs/trivial-object-test.elf-x86-64 -- 2.34.1