summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2015-10-09 00:15:08 +0000
committerReid Kleckner <rnk@google.com>2015-10-09 00:15:08 +0000
commit21427ada3e0b6d07330abc0460e984b15c97e171 (patch)
tree30fd88d820cc43b0573f1d75a1af79c0846d4588 /llvm
parente94fef7b3d2efbdbd22098e4ead372033bf731ab (diff)
downloadbcm5719-llvm-21427ada3e0b6d07330abc0460e984b15c97e171.tar.gz
bcm5719-llvm-21427ada3e0b6d07330abc0460e984b15c97e171.zip
Address review comments, remove error case and return 0 instead as required by tests
llvm-svn: 249785
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Object/COFF.h2
-rw-r--r--llvm/lib/Object/COFFObjectFile.cpp15
-rw-r--r--llvm/test/tools/llvm-symbolizer/Inputs/coff-dwarf.input2
-rw-r--r--llvm/test/tools/llvm-symbolizer/coff-dwarf.test8
-rw-r--r--llvm/test/tools/llvm-symbolizer/pdb/Inputs/test.exe.input8
-rw-r--r--llvm/test/tools/llvm-symbolizer/pdb/pdb.test25
-rw-r--r--llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp3
7 files changed, 33 insertions, 30 deletions
diff --git a/llvm/include/llvm/Object/COFF.h b/llvm/include/llvm/Object/COFF.h
index ba846dd7d8b..1b0e2e36bd5 100644
--- a/llvm/include/llvm/Object/COFF.h
+++ b/llvm/include/llvm/Object/COFF.h
@@ -773,7 +773,7 @@ public:
std::error_code getSectionContents(const coff_section *Sec,
ArrayRef<uint8_t> &Res) const;
- ErrorOr<uint64_t> getImageBase() const;
+ uint64_t getImageBase() const;
std::error_code getVaPtr(uint64_t VA, uintptr_t &Res) const;
std::error_code getRvaPtr(uint32_t Rva, uintptr_t &Res) const;
std::error_code getHintName(uint32_t Rva, uint16_t &Hint,
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp
index efb3ea04083..1f2111759a0 100644
--- a/llvm/lib/Object/COFFObjectFile.cpp
+++ b/llvm/lib/Object/COFFObjectFile.cpp
@@ -174,7 +174,7 @@ ErrorOr<uint64_t> COFFObjectFile::getSymbolAddress(DataRefImpl Ref) const {
// The section VirtualAddress does not include ImageBase, and we want to
// return virtual addresses.
- Result += getImageBase().get();
+ Result += getImageBase();
return Result;
}
@@ -271,7 +271,7 @@ uint64_t COFFObjectFile::getSectionAddress(DataRefImpl Ref) const {
// The section VirtualAddress does not include ImageBase, and we want to
// return virtual addresses.
- Result += getImageBase().get();
+ Result += getImageBase();
return Result;
}
@@ -418,17 +418,18 @@ std::error_code COFFObjectFile::initSymbolTablePtr() {
return std::error_code();
}
-ErrorOr<uint64_t> COFFObjectFile::getImageBase() const {
+uint64_t COFFObjectFile::getImageBase() const {
if (PE32Header)
- return uint64_t(PE32Header->ImageBase);
+ return PE32Header->ImageBase;
else if (PE32PlusHeader)
- return uint64_t(PE32PlusHeader->ImageBase);
- return object_error::parse_failed;
+ return PE32PlusHeader->ImageBase;
+ // This actually comes up in practice.
+ return 0;
}
// Returns the file offset for the given VA.
std::error_code COFFObjectFile::getVaPtr(uint64_t Addr, uintptr_t &Res) const {
- uint64_t ImageBase = getImageBase().get();
+ uint64_t ImageBase = getImageBase();
uint64_t Rva = Addr - ImageBase;
assert(Rva <= UINT32_MAX);
return getRvaPtr((uint32_t)Rva, Res);
diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/coff-dwarf.input b/llvm/test/tools/llvm-symbolizer/Inputs/coff-dwarf.input
deleted file mode 100644
index 6f6cd2eedb5..00000000000
--- a/llvm/test/tools/llvm-symbolizer/Inputs/coff-dwarf.input
+++ /dev/null
@@ -1,2 +0,0 @@
-0x5009
-0x5038
diff --git a/llvm/test/tools/llvm-symbolizer/coff-dwarf.test b/llvm/test/tools/llvm-symbolizer/coff-dwarf.test
index 5daf6b04a33..53e3b602cae 100644
--- a/llvm/test/tools/llvm-symbolizer/coff-dwarf.test
+++ b/llvm/test/tools/llvm-symbolizer/coff-dwarf.test
@@ -1,5 +1,9 @@
-RUN: llvm-symbolizer --inlining --relative-address -obj="%p/Inputs/coff-dwarf.exe" \
-RUN: < %p/Inputs/coff-dwarf.input | FileCheck %s
+RUN: grep '^ADDR:' %s | sed -s 's/ADDR: //' \
+RUN: | llvm-symbolizer --inlining --relative-address -obj="%p/Inputs/coff-dwarf.exe" \
+RUN: | FileCheck %s
+
+ADDR: 0x5009
+ADDR: 0x5038
CHECK: foo(void)
CHECK: coff-dwarf.cpp:7
diff --git a/llvm/test/tools/llvm-symbolizer/pdb/Inputs/test.exe.input b/llvm/test/tools/llvm-symbolizer/pdb/Inputs/test.exe.input
deleted file mode 100644
index f8344470150..00000000000
--- a/llvm/test/tools/llvm-symbolizer/pdb/Inputs/test.exe.input
+++ /dev/null
@@ -1,8 +0,0 @@
-0x401000
-0x401010
-0x401070
-0x401030
-0x401040
-0x401050
-0x401060
-0x500000
diff --git a/llvm/test/tools/llvm-symbolizer/pdb/pdb.test b/llvm/test/tools/llvm-symbolizer/pdb/pdb.test
index 228779e56a8..3f5dbc30218 100644
--- a/llvm/test/tools/llvm-symbolizer/pdb/pdb.test
+++ b/llvm/test/tools/llvm-symbolizer/pdb/pdb.test
@@ -1,18 +1,27 @@
-RUN: llvm-symbolizer -obj="%p/Inputs/test.exe" < "%p/Inputs/test.exe.input" | \
-RUN: FileCheck %s --check-prefix=CHECK
-RUN: llvm-symbolizer -obj="%p/Inputs/test.exe" < "%p/Inputs/test.exe.input" | \
-RUN: FileCheck %s --check-prefix=CHECK
-RUN: llvm-symbolizer -obj="%p/Inputs/test.exe" -demangle=false < \
-RUN: "%p/Inputs/test.exe.input" | FileCheck %s --check-prefix=CHECK-NO-DEMANGLE
+RUN: grep '^ADDR:' %s | sed -s 's/ADDR: //' \
+RUN: | llvm-symbolizer -obj="%p/Inputs/test.exe" \
+RUN: | FileCheck %s --check-prefix=CHECK
+RUN: grep '^ADDR:' %s | sed -s 's/ADDR: //' \
+RUN: | llvm-symbolizer -obj="%p/Inputs/test.exe" -demangle=false \
+RUN: | FileCheck %s --check-prefix=CHECK-NO-DEMANGLE
Subtract ImageBase from all the offsets and run the test again with
--relative-address.
-RUN: python -c 'import sys;print "\n".join([hex(int(x, 16) - 0x400000) for x in sys.stdin])' \
-RUN: < %p/Inputs/test.exe.input \
+RUN: grep '^ADDR:' %s | sed -s 's/ADDR: //' \
+RUN: | python -c 'import sys;print "\n".join([hex(int(x, 16) - 0x400000) for x in sys.stdin])' \
RUN: | llvm-symbolizer -obj="%p/Inputs/test.exe" -demangle=false --relative-address \
RUN: | FileCheck %s --check-prefix=CHECK-NO-DEMANGLE
+ADDR: 0x401000
+ADDR: 0x401010
+ADDR: 0x401070
+ADDR: 0x401030
+ADDR: 0x401040
+ADDR: 0x401050
+ADDR: 0x401060
+ADDR: 0x500000
+
CHECK: foo(void)
CHECK-NEXT: test.cpp:10
CHECK: main
diff --git a/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp b/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp
index cbfbdda08c9..996520b8430 100644
--- a/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp
+++ b/llvm/tools/llvm-symbolizer/LLVMSymbolize.cpp
@@ -128,8 +128,7 @@ bool ModuleInfo::isWin32Module() const {
uint64_t ModuleInfo::getModulePreferredBase() const {
if (auto *CoffObject = dyn_cast<COFFObjectFile>(Module))
- if (auto Base = CoffObject->getImageBase())
- return Base.get();
+ return CoffObject->getImageBase();
return 0;
}
OpenPOWER on IntegriCloud