[llvm-commits] [llvm] r167408 - in /llvm/trunk: lib/MC/MCParser/AsmParser.cpp test/MC/MachO/gen-dwarf-macro-cpp.s
Kevin Enderby
enderby at apple.com
Mon Nov 5 13:55:42 PST 2012
Author: enderby
Date: Mon Nov 5 15:55:41 2012
New Revision: 167408
URL: http://llvm.org/viewvc/llvm-project?rev=167408&view=rev
Log:
Fix for PR14264 cause by commit r167237 which did not take into account a
possible buffer change with a .macro directive.
rdar://12637628
Added:
llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s
Modified:
llvm/trunk/lib/MC/MCParser/AsmParser.cpp
Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=167408&r1=167407&r2=167408&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Mon Nov 5 15:55:41 2012
@@ -154,6 +154,7 @@
StringRef CppHashFilename;
int64_t CppHashLineNumber;
SMLoc CppHashLoc;
+ int CppHashBuf;
/// AssemblerDialect. ~OU means unset value and use value provided by MAI.
unsigned AssemblerDialect;
@@ -1403,7 +1404,7 @@
getStreamer().EmitDwarfFileDirective(
getContext().nextGenDwarfFileNumber(), StringRef(), CppHashFilename);
- unsigned CppHashLocLineNo = SrcMgr.FindLineNumber(CppHashLoc, CurBuffer);
+ unsigned CppHashLocLineNo = SrcMgr.FindLineNumber(CppHashLoc,CppHashBuf);
Line = CppHashLineNumber - 1 + (Line - CppHashLocLineNo);
}
@@ -1465,6 +1466,7 @@
CppHashLoc = L;
CppHashFilename = Filename;
CppHashLineNumber = LineNumber;
+ CppHashBuf = CurBuffer;
// Ignore any trailing characters, they're just comment.
EatToEndOfLine();
Added: llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s?rev=167408&view=auto
==============================================================================
--- llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s (added)
+++ llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s Mon Nov 5 15:55:41 2012
@@ -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
More information about the llvm-commits
mailing list