mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-23 01:25:32 +00:00
MC: Add support for BigObj
Teach WinCOFFObjectWriter how to write -mbig-obj style object files; these object files allow for more sections inside an object file. Our support for BigObj is notably different from binutils and cl: we implicitly upgrade object files to BigObj instead of asking the user to compile the same file *again* but with another flag. This matches up with how LLVM treats ELF variants. This was tested by forcing LLVM to always emit BigObj files and running the entire test suite. A specific test has also been added. I've lowered the maximum number of sections in a normal COFF file, VS "14" CTP 3 supports no more than 65279 sections. This is important otherwise we might not switch to BigObj quickly enough, leaving us with a COFF file that we couldn't link. yaml2obj support is all that remains to implement. Differential Revision: http://reviews.llvm.org/D5349 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217812 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -591,6 +591,8 @@ static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
|
||||
if (error(coff->getAuxSymbol<coff_aux_section_definition>(SI + 1, asd)))
|
||||
return;
|
||||
|
||||
int32_t AuxNumber = asd->getNumber(Symbol->isBigObj());
|
||||
|
||||
outs() << "AUX "
|
||||
<< format("scnlen 0x%x nreloc %d nlnno %d checksum 0x%x "
|
||||
, unsigned(asd->Length)
|
||||
@@ -598,7 +600,7 @@ static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
|
||||
, unsigned(asd->NumberOfLinenumbers)
|
||||
, unsigned(asd->CheckSum))
|
||||
<< format("assoc %d comdat %d\n"
|
||||
, unsigned(asd->Number)
|
||||
, unsigned(AuxNumber)
|
||||
, unsigned(asd->Selection));
|
||||
} else if (Symbol->isFileRecord()) {
|
||||
const char *FileName;
|
||||
|
Reference in New Issue
Block a user