diff options
author | jasonliu <jasonliu.development@gmail.com> | 2019-12-04 16:22:57 +0000 |
---|---|---|
committer | jasonliu <jasonliu.development@gmail.com> | 2019-12-04 16:44:44 +0000 |
commit | 5422e81a89f50263fd111841090b96cd0d49120a (patch) | |
tree | 2fa3b8c6b1cccab1d7d9032bd062721d23cf8051 /llvm/lib/MC/XCOFFObjectWriter.cpp | |
parent | 3ada8d2a87a2e818ea5302f40dbb0319d95b1554 (diff) | |
download | bcm5719-llvm-5422e81a89f50263fd111841090b96cd0d49120a.tar.gz bcm5719-llvm-5422e81a89f50263fd111841090b96cd0d49120a.zip |
[XCOFF][AIX] Emit TOC entries for object file generation
Summary:
Implement emitTCEntry for PPCTargetXCOFFStreamer.
Add TC csects to TOCCsects for object file writing.
Note:
1. I did not include any raw data testing for this object file generation
because TC entries raw data will all be 0 without relocation implemented.
I will add raw data testing as part of relocation testing later.
2. I removed "Symbol->setFragment(F);" for common symbols because we
don't need it, and if we have it then we would hit assertions below:
Assertion `(SymbolContents == SymContentsUnset ||
SymbolContents == SymContentsOffset) &&
"Cannot get offset for a common/variable symbol"' failed.
3.Fixed incorrect TOC-base alignment.
Differential Revision: https://reviews.llvm.org/D70798
Diffstat (limited to 'llvm/lib/MC/XCOFFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/XCOFFObjectWriter.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp index ab0d9048ecf..773ca3a0909 100644 --- a/llvm/lib/MC/XCOFFObjectWriter.cpp +++ b/llvm/lib/MC/XCOFFObjectWriter.cpp @@ -275,6 +275,12 @@ CsectGroup &XCOFFObjectWriter::getCsectGroup(const MCSectionXCOFF *MCSec) { "We should have only one TOC-base, and it should be the first csect " "in this CsectGroup."); return TOCCsects; + case XCOFF::XMC_TC: + assert(XCOFF::XTY_SD == MCSec->getCSectType() && + "Only an initialized csect can contain TC entry."); + assert(!TOCCsects.empty() && + "We should at least have a TOC-base in this CsectGroup."); + return TOCCsects; default: report_fatal_error("Unhandled mapping of csect to section."); } |