summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Object/COFFObjectFile.cpp11
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp3
2 files changed, 11 insertions, 3 deletions
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp
index 43913e44857..2784f5c4440 100644
--- a/llvm/lib/Object/COFFObjectFile.cpp
+++ b/llvm/lib/Object/COFFObjectFile.cpp
@@ -253,8 +253,15 @@ error_code COFFObjectFile::getSymbolSection(DataRefImpl Ref,
}
error_code COFFObjectFile::getSymbolValue(DataRefImpl Ref,
- uint64_t &Val) const {
- report_fatal_error("getSymbolValue unimplemented in COFFObjectFile");
+ uint64_t &Result) const {
+ const coff_symbol *Symb = toSymb(Ref);
+
+ if (Symb->SectionNumber == COFF::IMAGE_SYM_UNDEFINED)
+ Result = UnknownAddressOrSize;
+ else
+ Result = Symb->Value;
+
+ return object_error::success;
}
void COFFObjectFile::moveSectionNext(DataRefImpl &Ref) const {
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index 6955ef090ae..df4e044e714 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -633,7 +633,8 @@ MachOObjectFile::getSymbolSection(DataRefImpl Symb,
error_code MachOObjectFile::getSymbolValue(DataRefImpl Symb,
uint64_t &Val) const {
- report_fatal_error("getSymbolValue unimplemented in MachOObjectFile");
+ // In MachO both relocatable and non-relocatable objects have addresses.
+ return getSymbolAddress(Symb, Val);
}
void MachOObjectFile::moveSectionNext(DataRefImpl &Sec) const {
OpenPOWER on IntegriCloud