[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