summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2013-08-28 17:50:59 +0000
committerKevin Enderby <enderby@apple.com>2013-08-28 17:50:59 +0000
commit3aeada287bf33c65b6f0a58d6ab529be61f7bd45 (patch)
tree39a903869ef9ec9b6ee9cfda445866990b0d4886 /llvm/include
parent0517e7516414a6e31e7d79aed7785ce2223f5a3d (diff)
downloadbcm5719-llvm-3aeada287bf33c65b6f0a58d6ab529be61f7bd45.tar.gz
bcm5719-llvm-3aeada287bf33c65b6f0a58d6ab529be61f7bd45.zip
The integrated darwin assembler can hang in an infinite loop (or get an assert
with a debug build) with this buggy .indirect_symbol directive usage: % cat test.s x: .indirect_symbol _y The assertion is because it is trying to get the symbol index for the symbol _y when it is writing out the indirect symbol table. This line of code in MachObjectWriter::WriteObject() : Write32(Asm.getSymbolData(*it->Symbol).getIndex()); And while there is a symbol _y it does not have any getSymbolData set which is only done in MachObjectWriter::BindIndirectSymbols() for pointer sections or stub sections. I added a check and an error in there to catch this in case something slips through. But to get a better error the parser should detect when a .indirect_symbol directive is used and it is not in a pointer section or stub section. To make that work I moved the handling of the indirect symbol out of the target independent AsmParser code into the DarwinAsmParser code that can check for the proper Mach-O section types. rdar://14825505 llvm-svn: 189497
Diffstat (limited to 'llvm/include')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud