mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-30 19:55:11 +00:00
Fix for PR14264 cause by commit r167237 which did not take into account a
possible buffer change with a .macro directive. rdar://12637628 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167408 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7895353b75
commit
32c1a82a6b
@ -154,6 +154,7 @@ private:
|
|||||||
StringRef CppHashFilename;
|
StringRef CppHashFilename;
|
||||||
int64_t CppHashLineNumber;
|
int64_t CppHashLineNumber;
|
||||||
SMLoc CppHashLoc;
|
SMLoc CppHashLoc;
|
||||||
|
int CppHashBuf;
|
||||||
|
|
||||||
/// AssemblerDialect. ~OU means unset value and use value provided by MAI.
|
/// AssemblerDialect. ~OU means unset value and use value provided by MAI.
|
||||||
unsigned AssemblerDialect;
|
unsigned AssemblerDialect;
|
||||||
@ -1403,7 +1404,7 @@ bool AsmParser::ParseStatement(ParseStatementInfo &Info) {
|
|||||||
getStreamer().EmitDwarfFileDirective(
|
getStreamer().EmitDwarfFileDirective(
|
||||||
getContext().nextGenDwarfFileNumber(), StringRef(), CppHashFilename);
|
getContext().nextGenDwarfFileNumber(), StringRef(), CppHashFilename);
|
||||||
|
|
||||||
unsigned CppHashLocLineNo = SrcMgr.FindLineNumber(CppHashLoc, CurBuffer);
|
unsigned CppHashLocLineNo = SrcMgr.FindLineNumber(CppHashLoc,CppHashBuf);
|
||||||
Line = CppHashLineNumber - 1 + (Line - CppHashLocLineNo);
|
Line = CppHashLineNumber - 1 + (Line - CppHashLocLineNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1465,6 +1466,7 @@ bool AsmParser::ParseCppHashLineFilenameComment(const SMLoc &L) {
|
|||||||
CppHashLoc = L;
|
CppHashLoc = L;
|
||||||
CppHashFilename = Filename;
|
CppHashFilename = Filename;
|
||||||
CppHashLineNumber = LineNumber;
|
CppHashLineNumber = LineNumber;
|
||||||
|
CppHashBuf = CurBuffer;
|
||||||
|
|
||||||
// Ignore any trailing characters, they're just comment.
|
// Ignore any trailing characters, they're just comment.
|
||||||
EatToEndOfLine();
|
EatToEndOfLine();
|
||||||
|
17
test/MC/MachO/gen-dwarf-macro-cpp.s
Normal file
17
test/MC/MachO/gen-dwarf-macro-cpp.s
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// RUN: llvm-mc -g -triple i386-apple-darwin10 %s -filetype=obj -o %t
|
||||||
|
// RUN: llvm-dwarfdump %t | FileCheck %s
|
||||||
|
|
||||||
|
# 1 "foo.S" 2
|
||||||
|
.macro switcher
|
||||||
|
ljmp *0x38(%ecx)
|
||||||
|
.endmacro
|
||||||
|
switcher NaClSwitchNoSSE, 0
|
||||||
|
|
||||||
|
// PR14264 was a crash in the code caused by the .macro not handled correctly
|
||||||
|
// rdar://12637628
|
||||||
|
|
||||||
|
// We check that the source name "foo.S" is picked up
|
||||||
|
// CHECK: Dir Mod Time File Len File Name
|
||||||
|
// CHECK: ---- ---------- ---------- ---------------------------
|
||||||
|
// CHECK: file_names[ 1] 1 0x00000000 0x00000000 gen-dwarf-macro-cpp.s
|
||||||
|
// CHECK: file_names[ 2] 0 0x00000000 0x00000000 foo.S
|
Loading…
Reference in New Issue
Block a user