<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 22 Sep 2014, at 17:49, Aaron Ballman <<a href="mailto:aaron@aaronballman.com" class="">aaron@aaronballman.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">This commit is failing tests on Windows:<br class=""><a href="http://bb.pgr.jp/builders/ninja-clang-i686-msc17-R/builds/10591" class="">http://bb.pgr.jp/builders/ninja-clang-i686-msc17-R/builds/10591</a><br class=""></div></blockquote><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Thanks for the report. Is it normal that I didn’t get a mail from the bot notifying me of the failure?</div><br class=""><blockquote type="cite" class=""><div class="">It seems this is another case where our path separators are getting<br class="">mixed incorrectly. When I dump the debug info with paths, I am<br class="">getting:<br class=""><br class="">DW_AT_decl_file [DW_FORM_data1]     ("/work/llvm/vanilla/test/DebugInfo\test.c")<br class=""><br class="">I know nothing about DWARF debug info, but that's not a valid path on<br class="">Windows, and likely isn't what you'd want on a POSIX system either.<br class=""></div></blockquote><div class=""><br class=""></div><div class="">Well, it’s true that the path isn’t correct in either system, but that what you get when you dump the debug information of a POSIX generated test on windows. This is not without precedent, at least the symboliser tests have regexs to cope with this. I’ll commit a fix for the test shortly, and try to monitor the bot.</div><div class=""><br class=""></div><div class="">Thanks!</div><div class="">Fred</div><br class=""><blockquote type="cite" class=""><div class="">~Aaron<br class=""><br class="">On Mon, Sep 22, 2014 at 8:36 AM, Frederic Riss <<a href="mailto:friss@apple.com" class="">friss@apple.com</a>> wrote:<br class=""><blockquote type="cite" class="">Author: friss<br class="">Date: Mon Sep 22 07:36:04 2014<br class="">New Revision: 218246<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=218246&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=218246&view=rev</a><br class="">Log:<br class="">[dwarfdump] Dump full filenames as DW_AT_(decl|call)_file attribute values<br class=""><br class="">Reviewers: dblaikie samsonov<br class=""><br class="">Subscribers: llvm-commits<br class=""><br class="">Differential Revision: <a href="http://reviews.llvm.org/D5192" class="">http://reviews.llvm.org/D5192</a><br class=""><br class="">Modified:<br class="">    llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.cpp<br class="">    llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.h<br class="">    llvm/trunk/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll<br class="">    llvm/trunk/test/DebugInfo/namespace.ll<br class="">    llvm/trunk/test/MC/MachO/gen-dwarf.s<br class=""><br class="">Modified: llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.cpp?rev=218246&r1=218245&r2=218246&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.cpp?rev=218246&r1=218245&r2=218246&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.cpp (original)<br class="">+++ llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.cpp Mon Sep 22 07:36:04 2014<br class="">@@ -31,7 +31,7 @@ static const DWARFUnit *findUnitAndExtra<br class="">   return (Unit && DIE.extractFast(Unit, Offset)) ? Unit : nullptr;<br class=""> }<br class=""><br class="">-void DWARFDebugInfoEntryMinimal::dump(raw_ostream &OS, const DWARFUnit *u,<br class="">+void DWARFDebugInfoEntryMinimal::dump(raw_ostream &OS, DWARFUnit *u,<br class="">                                       unsigned recurseDepth,<br class="">                                       unsigned indent) const {<br class="">   DataExtractor debug_info_data = u->getDebugInfoExtractor();<br class="">@@ -74,7 +74,7 @@ void DWARFDebugInfoEntryMinimal::dump(ra<br class=""> }<br class=""><br class=""> void DWARFDebugInfoEntryMinimal::dumpAttribute(raw_ostream &OS,<br class="">-                                               const DWARFUnit *u,<br class="">+                                               DWARFUnit *u,<br class="">                                                uint32_t *offset_ptr,<br class="">                                                uint16_t attr, uint16_t form,<br class="">                                                unsigned indent) const {<br class="">@@ -99,7 +99,17 @@ void DWARFDebugInfoEntryMinimal::dumpAtt<br class="">   OS << "\t(";<br class=""><br class="">   const char *Name = nullptr;<br class="">-  if (Optional<uint64_t> Val = formValue.getAsUnsignedConstant())<br class="">+  std::string File;<br class="">+  if (attr == DW_AT_decl_file || attr == DW_AT_call_file) {<br class="">+    if (const auto *LT = u->getContext().getLineTableForUnit(u))<br class="">+      if (LT->getFileNameByIndex(<br class="">+             formValue.getAsUnsignedConstant().getValue(),<br class="">+             u->getCompilationDir(),<br class="">+             DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath, File)) {<br class="">+        File = '"' + File + '"';<br class="">+        Name = File.c_str();<br class="">+      }<br class="">+  } else if (Optional<uint64_t> Val = formValue.getAsUnsignedConstant())<br class="">     Name = AttributeValueString(attr, *Val);<br class=""><br class="">   if (Name) {<br class=""><br class="">Modified: llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.h<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.h?rev=218246&r1=218245&r2=218246&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.h?rev=218246&r1=218245&r2=218246&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.h (original)<br class="">+++ llvm/trunk/lib/DebugInfo/DWARFDebugInfoEntry.h Mon Sep 22 07:36:04 2014<br class="">@@ -38,9 +38,9 @@ public:<br class="">   DWARFDebugInfoEntryMinimal()<br class="">     : Offset(0), SiblingIdx(0), AbbrevDecl(nullptr) {}<br class=""><br class="">-  void dump(raw_ostream &OS, const DWARFUnit *u, unsigned recurseDepth,<br class="">+  void dump(raw_ostream &OS, DWARFUnit *u, unsigned recurseDepth,<br class="">             unsigned indent = 0) const;<br class="">-  void dumpAttribute(raw_ostream &OS, const DWARFUnit *u, uint32_t *offset_ptr,<br class="">+  void dumpAttribute(raw_ostream &OS, DWARFUnit *u, uint32_t *offset_ptr,<br class="">                      uint16_t attr, uint16_t form, unsigned indent = 0) const;<br class=""><br class="">   /// Extracts a debug info entry, which is a child of a given unit,<br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll?rev=218246&r1=218245&r2=218246&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll?rev=218246&r1=218245&r2=218246&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll Mon Sep 22 07:36:04 2014<br class="">@@ -40,7 +40,7 @@ declare void @llvm.dbg.declare(metadata,<br class=""> ; CHECK-NOT: DW_TAG<br class=""> ; CHECK: DW_AT_name [DW_FORM_strp]       ( .debug_str[0x{{[0-9a-f]*}}] = "GLB")<br class=""> ; CHECK-NOT: DW_TAG<br class="">-; CHECK: DW_AT_decl_file [DW_FORM_data1] (0x01)<br class="">+; CHECK: DW_AT_decl_file [DW_FORM_data1] ("/work/llvm/vanilla/test/DebugInfo/test.c")<br class=""> ; CHECK-NOT: DW_TAG<br class=""> ; CHECK: DW_AT_decl_line [DW_FORM_data1] (1)<br class=""><br class="">@@ -48,7 +48,7 @@ declare void @llvm.dbg.declare(metadata,<br class=""> ; CHECK-NOT: DW_TAG<br class=""> ; CHECK: DW_AT_name [DW_FORM_strp]   ( .debug_str[0x{{[0-9a-f]*}}] = "LOC")<br class=""> ; CHECK-NOT: DW_TAG<br class="">-; CHECK: DW_AT_decl_file [DW_FORM_data1]     (0x01)<br class="">+; CHECK: DW_AT_decl_file [DW_FORM_data1]     ("/work/llvm/vanilla/test/DebugInfo/test.c")<br class=""> ; CHECK-NOT: DW_TAG<br class=""> ; CHECK: DW_AT_decl_line [DW_FORM_data1]     (4)<br class=""><br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/namespace.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/namespace.ll?rev=218246&r1=218245&r2=218246&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/namespace.ll?rev=218246&r1=218245&r2=218246&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/namespace.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/namespace.ll Mon Sep 22 07:36:04 2014<br class="">@@ -5,12 +5,12 @@<br class=""> ; CHECK: debug_info contents<br class=""> ; CHECK: [[NS1:0x[0-9a-f]*]]:{{ *}}DW_TAG_namespace<br class=""> ; CHECK-NEXT: DW_AT_name{{.*}} = "A"<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F1:[0-9]]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1:".*debug-info-namespace.cpp"]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(3)<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: [[NS2:0x[0-9a-f]*]]:{{ *}}DW_TAG_namespace<br class=""> ; CHECK-NEXT: DW_AT_name{{.*}} = "B"<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2:[0-9]]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2:".*foo.cpp"]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(1)<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: [[I:0x[0-9a-f]*]]:{{ *}}DW_TAG_variable<br class="">@@ -39,7 +39,7 @@<br class=""> ; CHECK: DW_TAG_imported_module<br class=""> ; This is a bug, it should be in F2 but it inherits the file from its<br class=""> ; enclosing scope<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F1]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(8)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS2]]})<br class=""> ; CHECK: NULL<br class="">@@ -47,7 +47,7 @@<br class=""><br class=""> ; CHECK: DW_TAG_imported_module<br class=""> ; Same bug as above, this should be F2, not F1<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F1]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(11)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})<br class=""> ; CHECK-NOT: NULL<br class="">@@ -59,38 +59,38 @@<br class=""> ; CHECK: DW_AT_name{{.*}}= "func"<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_module<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(18)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_declaration<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(19)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FOO]]})<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_declaration<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(20)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[BAR]]})<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_declaration<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(21)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC1]]})<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_declaration<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(22)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[I]]})<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: [[X:0x[0-9a-f]*]]:{{ *}}DW_TAG_imported_declaration<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(24)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})<br class=""> ; CHECK-NEXT: DW_AT_name{{.*}}"X"<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_declaration<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(25)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[X]]})<br class=""> ; CHECK-NEXT: DW_AT_name{{.*}}"Y"<br class="">@@ -98,16 +98,13 @@<br class=""> ; CHECK: DW_TAG_lexical_block<br class=""> ; CHECK-NOT: NULL<br class=""> ; CHECK: DW_TAG_imported_module<br class="">-; CHECK-NEXT: DW_AT_decl_file{{.*}}(0x0[[F2]])<br class="">+; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])<br class=""> ; CHECK-NEXT: DW_AT_decl_line{{.*}}(15)<br class=""> ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS2]]})<br class=""> ; CHECK: NULL<br class=""> ; CHECK: NULL<br class=""> ; CHECK: NULL<br class=""><br class="">-; CHECK: file_names[  [[F1]]]{{.*}}debug-info-namespace.cpp<br class="">-; CHECK: file_names[  [[F2]]]{{.*}}foo.cpp<br class="">-<br class=""> ; IR generated from clang/test/CodeGenCXX/debug-info-namespace.cpp, file paths<br class=""> ; changed to protect the guilty. The C++ source code is:<br class=""> ; namespace A {<br class=""><br class="">Modified: llvm/trunk/test/MC/MachO/gen-dwarf.s<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/gen-dwarf.s?rev=218246&r1=218245&r2=218246&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/gen-dwarf.s?rev=218246&r1=218245&r2=218246&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/MC/MachO/gen-dwarf.s (original)<br class="">+++ llvm/trunk/test/MC/MachO/gen-dwarf.s Mon Sep 22 07:36:04 2014<br class="">@@ -50,7 +50,7 @@ _x:   .long 1<br class=""><br class=""> // CHECK:    DW_TAG_label [2] *<br class=""> // CHECK:      DW_AT_name [DW_FORM_string]     ("bar")<br class="">-// CHECK:      DW_AT_decl_file [DW_FORM_data4] (0x00000001)<br class="">+// CHECK:      DW_AT_decl_file [DW_FORM_data4] ([[FILE:".*gen-dwarf.s"]])<br class=""> // CHECK:      DW_AT_decl_line [DW_FORM_data4] (5)<br class=""> // CHECK:      DW_AT_low_pc [DW_FORM_addr]     (0x0000000000000000)<br class=""> // CHECK:      DW_AT_prototyped [DW_FORM_flag] (0x00)<br class="">@@ -61,7 +61,7 @@ _x:   .long 1<br class=""><br class=""> // CHECK:    DW_TAG_label [2] *<br class=""> // CHECK:      DW_AT_name [DW_FORM_string]     ("foo")<br class="">-// CHECK:      DW_AT_decl_file [DW_FORM_data4] (0x00000001)<br class="">+// CHECK:      DW_AT_decl_file [DW_FORM_data4] ([[FILE]])<br class=""> // CHECK:      DW_AT_decl_line [DW_FORM_data4] (9)<br class=""> // CHECK:      DW_AT_low_pc [DW_FORM_addr]     (0x0000000000000007)<br class=""> // CHECK:      DW_AT_prototyped [DW_FORM_flag] (0x00)<br class="">@@ -72,7 +72,7 @@ _x:   .long 1<br class=""><br class=""> // CHECK:    DW_TAG_label [2] *<br class=""> // CHECK:      DW_AT_name [DW_FORM_string]     ("baz")<br class="">-// CHECK:      DW_AT_decl_file [DW_FORM_data4] (0x00000001)<br class="">+// CHECK:      DW_AT_decl_file [DW_FORM_data4] ([[FILE]])<br class=""> // CHECK:      DW_AT_decl_line [DW_FORM_data4] (10)<br class=""> // CHECK:      DW_AT_low_pc [DW_FORM_addr]     (0x0000000000000007)<br class=""> // CHECK:      DW_AT_prototyped [DW_FORM_flag] (0x00)<br class=""><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@cs.uiuc.edu" class="">llvm-commits@cs.uiuc.edu</a><br class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class=""></blockquote></div></blockquote></div><br class=""></body></html>