<div dir="ltr">The missing .test file that goes with the .dwo file is added in 265457</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 5, 2016 at 1:16 PM, David Blaikie via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dblaikie<br>
Date: Tue Apr  5 15:16:38 2016<br>
New Revision: 265452<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=265452&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=265452&view=rev</a><br>
Log:<br>
llvm-dwp: Handle dwo files produced by GCC<br>
<br>
To start with, handle DW_FORM_string names. Follow up commit will handle<br>
the interesting quirk with type units I was originally aiming for here.<br>
<br>
Added:<br>
    llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/<br>
    llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/a.dwo<br>
Modified:<br>
    llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp<br>
<br>
Added: llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/a.dwo<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/a.dwo?rev=265452&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/a.dwo?rev=265452&view=auto</a><br>
==============================================================================<br>
Binary files llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/a.dwo (added) and llvm/trunk/test/tools/llvm-dwp/Inputs/gcc_type/a.dwo Tue Apr  5 15:16:38 2016 differ<br>
<br>
Modified: llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp?rev=265452&r1=265451&r2=265452&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp?rev=265452&r1=265451&r2=265452&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp (original)<br>
+++ llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp Tue Apr  5 15:16:38 2016<br>
@@ -126,8 +126,13 @@ struct CompileUnitIdentifiers {<br>
   const char *DWOName = "";<br>
 };<br>
<br>
-static const char *getIndexedString(uint32_t StrIndex, StringRef StrOffsets,<br>
+static const char *getIndexedString(uint32_t Form, DataExtractor InfoData,<br>
+                                    uint32_t &InfoOffset, StringRef StrOffsets,<br>
                                     StringRef Str) {<br>
+  if (Form == dwarf::DW_FORM_string)<br>
+    return InfoData.getCStr(&InfoOffset);<br>
+  assert(Form == dwarf::DW_FORM_GNU_str_index);<br>
+  auto StrIndex = InfoData.getULEB128(&InfoOffset);<br>
   DataExtractor StrOffsetsData(StrOffsets, true, 0);<br>
   uint32_t StrOffsetsOffset = 4 * StrIndex;<br>
   uint32_t StrOffset = StrOffsetsData.getU32(&StrOffsetsOffset);<br>
@@ -163,12 +168,11 @@ static CompileUnitIdentifiers getCUIdent<br>
          (Name != 0 || Form != 0)) {<br>
     switch (Name) {<br>
     case dwarf::DW_AT_name: {<br>
-      ID.Name = getIndexedString(InfoData.getULEB128(&Offset), StrOffsets, Str);<br>
+      ID.Name = getIndexedString(Form, InfoData, Offset, StrOffsets, Str);<br>
       break;<br>
     }<br>
     case dwarf::DW_AT_GNU_dwo_name: {<br>
-      ID.DWOName =<br>
-          getIndexedString(InfoData.getULEB128(&Offset), StrOffsets, Str);<br>
+      ID.DWOName = getIndexedString(Form, InfoData, Offset, StrOffsets, Str);<br>
       break;<br>
     }<br>
     case dwarf::DW_AT_GNU_dwo_id:<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>