From 03533724783d3c1bf9a88f814fcc3f42856b093b Mon Sep 17 00:00:00 2001 From: Colin LeMahieu Date: Wed, 18 Feb 2015 23:00:22 +0000 Subject: [PATCH] [Objdump] Fixing crash when printing symbols in ELF sections with special types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229759 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ELFObjectFile.h | 7 +++++-- test/tools/llvm-objdump/Inputs/proc-specific-section-elf | Bin 0 -> 836 bytes test/tools/llvm-objdump/proc-specific-section-elf.test | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 test/tools/llvm-objdump/Inputs/proc-specific-section-elf create mode 100644 test/tools/llvm-objdump/proc-specific-section-elf.test diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h index 125fdd17743..e7eba976fd4 100644 --- a/include/llvm/Object/ELFObjectFile.h +++ b/include/llvm/Object/ELFObjectFile.h @@ -314,8 +314,11 @@ std::error_code ELFObjectFile::getSymbolAddress(DataRefImpl Symb, ESym->getType() == ELF::STT_FUNC) Result &= ~1; - if (Header->e_type == ELF::ET_REL) - Result += EF.getSection(ESym)->sh_addr; + if (Header->e_type == ELF::ET_REL) { + const typename ELFFile::Elf_Shdr * Section = EF.getSection(ESym); + if (Section != nullptr) + Result += Section->sh_addr; + } return object_error::success; } diff --git a/test/tools/llvm-objdump/Inputs/proc-specific-section-elf b/test/tools/llvm-objdump/Inputs/proc-specific-section-elf new file mode 100644 index 0000000000000000000000000000000000000000..7c3d613cb87a230b9d8b70e269fe5905d074b3fc GIT binary patch literal 836 zcmah{O-sW-5S^G>wR%vg2p%K{3mzm`5d;wo6s3WB5Q+y;Fl|FyXc9@H)RW>b@!${f z2l!{a3-!J2Zd*?sn0;?{-pqc!UNkN(%MxRje9ANu`9|UaeyjxhQj#UbCW8ldCOz@w z*7|z$y>qEI!z_0yos!7)lV5Whjhic{9u9+U5<9g)5OO99fd=Ea`?-#ml%o#KNOl**~#tQN?GMs3u zlT2sqe=9I=ZgH%!WpOH2^~K50<=W)KYaiI literal 0 HcmV?d00001 diff --git a/test/tools/llvm-objdump/proc-specific-section-elf.test b/test/tools/llvm-objdump/proc-specific-section-elf.test new file mode 100644 index 00000000000..b3067d49af8 --- /dev/null +++ b/test/tools/llvm-objdump/proc-specific-section-elf.test @@ -0,0 +1,3 @@ +// RUN: llvm-objdump -t %p/Inputs/proc-specific-section-elf | FileCheck %s + +CHECK: 00000000 *UND* 00000000 print -- 2.11.0