diff options
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/File.h')
-rw-r--r-- | lld/lib/ReaderWriter/ELF/File.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lld/lib/ReaderWriter/ELF/File.h b/lld/lib/ReaderWriter/ELF/File.h index 450de6bae38..cbc2fff9895 100644 --- a/lld/lib/ReaderWriter/ELF/File.h +++ b/lld/lib/ReaderWriter/ELF/File.h @@ -576,8 +576,12 @@ private: if (!((rai.r_offset >= symbol->st_value) && (rai.r_offset < symbol->st_value + content.size()))) continue; + bool isMips64EL = _objFile->isMips64EL(); + Kind kind = (Kind) rai.getType(isMips64EL); + uint32_t symbolIndex = rai.getSymbol(isMips64EL); auto *ERef = new (_readerStorage) - ELFReference<ELFT>(&rai, rai.r_offset - symbol->st_value, nullptr); + ELFReference<ELFT>(&rai, rai.r_offset - symbol->st_value, nullptr, + kind, symbolIndex); _references.push_back(ERef); } @@ -586,8 +590,12 @@ private: for (auto &ri : rri->second) { if ((ri.r_offset >= symbol->st_value) && (ri.r_offset < symbol->st_value + content.size())) { + bool isMips64EL = _objFile->isMips64EL(); + Kind kind = (Kind) ri.getType(isMips64EL); + uint32_t symbolIndex = ri.getSymbol(isMips64EL); auto *ERef = new (_readerStorage) - ELFReference<ELFT>(&ri, ri.r_offset - symbol->st_value, nullptr); + ELFReference<ELFT>(&ri, ri.r_offset - symbol->st_value, nullptr, + kind, symbolIndex); // Read the addend from the section contents // TODO : We should move the way lld reads relocations totally from // ELFObjectFile |