[llvm] r257790 - [codeview] Dump CodeView inlinee lines subsection
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 14 13:38:48 PST 2016
Should've been fixed already: 257793
On Thu, Jan 14, 2016 at 1:29 PM, Mike Aizatsky <aizatsky at google.com> wrote:
> This change breaks the build:
> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/5209/steps/build%20stage%201/logs/stdio
>
> On Thu, Jan 14, 2016 at 11:24 AM Reid Kleckner via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: rnk
>> Date: Thu Jan 14 13:20:17 2016
>> New Revision: 257790
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=257790&view=rev
>> Log:
>> [codeview] Dump CodeView inlinee lines subsection
>>
>> Added:
>> llvm/trunk/test/tools/llvm-readobj/Inputs/codeview-inlining.obj.coff
>> llvm/trunk/test/tools/llvm-readobj/codeview-inlining.test
>> Modified:
>> llvm/trunk/include/llvm/DebugInfo/CodeView/Line.h
>> llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
>>
>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/Line.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/Line.h?rev=257790&r1=257789&r2=257790&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/Line.h (original)
>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/Line.h Thu Jan 14 13:20:17
>> 2016
>> @@ -10,11 +10,14 @@
>> #ifndef LLVM_DEBUGINFO_CODEVIEW_LINE_H
>> #define LLVM_DEBUGINFO_CODEVIEW_LINE_H
>>
>> +#include "llvm/Support/Endian.h"
>> #include <cinttypes>
>>
>> namespace llvm {
>> namespace codeview {
>>
>> +using llvm::support::ulittle32_t;
>> +
>> class LineInfo {
>> public:
>> static const uint32_t AlwaysStepIntoLineNumber = 0xfeefee;
>> @@ -118,7 +121,22 @@ public:
>>
>> bool isNeverStepInto() const { return LineInf.isNeverStepInto(); }
>> };
>> -}
>> -}
>> +
>> +enum class InlineeLinesSignature : uint32_t {
>> + Normal, // CV_INLINEE_SOURCE_LINE_SIGNATURE
>> + ExtraFiles // CV_INLINEE_SOURCE_LINE_SIGNATURE_EX
>> +};
>> +
>> +struct InlineeSourceLine {
>> + TypeIndex Inlinee; // ID of the function that was inlined.
>> + ulittle32_t FileID; // Offset into FileChecksums subsection.
>> + ulittle32_t SourceLineNum; // First line of inlined code.
>> + // If extra files present:
>> + // ulittle32_t ExtraFileCount;
>> + // ulittle32_t Files[];
>> +};
>> +
>> +} // namespace codeview
>> +} // namespace llvm
>>
>> #endif
>>
>> Added:
>> llvm/trunk/test/tools/llvm-readobj/Inputs/codeview-inlining.obj.coff
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/Inputs/codeview-inlining.obj.coff?rev=257790&view=auto
>>
>> ==============================================================================
>> Binary files
>> llvm/trunk/test/tools/llvm-readobj/Inputs/codeview-inlining.obj.coff
>> (added) and
>> llvm/trunk/test/tools/llvm-readobj/Inputs/codeview-inlining.obj.coff Thu
>> Jan 14 13:20:17 2016 differ
>>
>> Added: llvm/trunk/test/tools/llvm-readobj/codeview-inlining.test
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/codeview-inlining.test?rev=257790&view=auto
>>
>> ==============================================================================
>> --- llvm/trunk/test/tools/llvm-readobj/codeview-inlining.test (added)
>> +++ llvm/trunk/test/tools/llvm-readobj/codeview-inlining.test Thu Jan 14
>> 13:20:17 2016
>> @@ -0,0 +1,65 @@
>> +; The following two object files were generated using the following
>> command:
>> +; $ cl /d2Zi+ /Zc:inline /O2 /Z7 /c t.cpp
>> +; The contents of t.cpp follow:
>> +; static void bar() {
>> +; __asm nop
>> +; }
>> +; static void baz() {
>> +; __asm nop
>> +; }
>> +; static __forceinline void foo() {
>> +; __asm nop
>> +; #include "a.h"
>> +; #include "b.h"
>> +; __asm nop
>> +; goto forwards;
>> +;
>> +; backwards:
>> +; __asm nop
>> +; return;
>> +;
>> +; forwards:
>> +; __asm rep nop
>> +; goto backwards;
>> +; }
>> +; int main() {
>> +; bar();
>> +; baz();
>> +; foo();
>> +; }
>> +;
>> +; Both a.h and b.h contain "__asm nop".
>> +
>> +RUN: llvm-readobj -s -codeview -section-symbols
>> %p/Inputs/codeview-inlining.obj.coff | FileCheck %s
>> +
>> +; FIXME: If we were more clever, we could turn FileIDs into paths.
>> +
>> +; CHECK: SubSectionType: InlineeLines (0xF6)
>> +; CHECK-NEXT: SubSectionSize: 0x3C
>> +; CHECK-NEXT: InlineeSourceLine {
>> +; CHECK-NEXT: Inlinee: bar (0x1002)
>> +; CHECK-NEXT: FileID: 0x30
>> +; CHECK-NEXT: SourceLineNum: 2
>> +; CHECK-NEXT: ExtraFileCount: 0
>> +; CHECK-NEXT: ExtraFiles [
>> +; CHECK-NEXT: ]
>> +; CHECK-NEXT: }
>> +; CHECK-NEXT: InlineeSourceLine {
>> +; CHECK-NEXT: Inlinee: baz (0x1003)
>> +; CHECK-NEXT: FileID: 0x30
>> +; CHECK-NEXT: SourceLineNum: 5
>> +; CHECK-NEXT: ExtraFileCount: 0
>> +; CHECK-NEXT: ExtraFiles [
>> +; CHECK-NEXT: ]
>> +; CHECK-NEXT: }
>> +; The 'foo' inline site has extra files due to includes.
>> +; CHECK-NEXT: InlineeSourceLine {
>> +; CHECK-NEXT: Inlinee: foo (0x1004)
>> +; CHECK-NEXT: FileID: 0x0
>> +; CHECK-NEXT: SourceLineNum: 1
>> +; CHECK-NEXT: ExtraFileCount: 2
>> +; CHECK-NEXT: ExtraFiles [
>> +; CHECK-NEXT: FileID: 0x18
>> +; CHECK-NEXT: FileID: 0x30
>> +; CHECK-NEXT: ]
>> +; CHECK-NEXT: }
>>
>> Modified: llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/COFFDumper.cpp?rev=257790&r1=257789&r2=257790&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/tools/llvm-readobj/COFFDumper.cpp (original)
>> +++ llvm/trunk/tools/llvm-readobj/COFFDumper.cpp Thu Jan 14 13:20:17 2016
>> @@ -25,6 +25,7 @@
>> #include "llvm/ADT/StringExtras.h"
>> #include "llvm/ADT/StringSet.h"
>> #include "llvm/DebugInfo/CodeView/CodeView.h"
>> +#include "llvm/DebugInfo/CodeView/Line.h"
>> #include "llvm/DebugInfo/CodeView/TypeIndex.h"
>> #include "llvm/DebugInfo/CodeView/TypeRecord.h"
>> #include "llvm/DebugInfo/CodeView/SymbolRecord.h"
>> @@ -91,6 +92,8 @@ private:
>> const SectionRef &Section,
>> StringRef SectionContents);
>>
>> + void printCodeViewInlineeLines(StringRef Subsection);
>> +
>> void printMemberAttributes(MemberAttributes Attrs);
>>
>> void printRelocatedField(StringRef Label, const coff_section *Sec,
>> @@ -991,6 +994,11 @@ void COFFDumper::printCodeViewSymbolSect
>> case ModuleSubstreamKind::Symbols:
>> printCodeViewSymbolsSubsection(Contents, Section, SectionContents);
>> break;
>> +
>> + case ModuleSubstreamKind::InlineeLines:
>> + printCodeViewInlineeLines(Contents);
>> + break;
>> +
>> case ModuleSubstreamKind::Lines: {
>> // Holds a PC to file:line table. Some data to parse this
>> subsection is
>> // stored in the other subsections, so just check sanity and store
>> the
>> @@ -1685,6 +1693,34 @@ void COFFDumper::printCodeViewSymbolsSub
>> }
>> }
>>
>> +void COFFDumper::printCodeViewInlineeLines(StringRef Subsection) {
>> + StringRef Data = Subsection;
>> + uint32_t Signature;
>> + error(consumeUInt32(Data, Signature));
>> + bool HasExtraFiles = Signature ==
>> unsigned(InlineeLinesSignature::ExtraFiles);
>> +
>> + while (!Data.empty()) {
>> + const InlineeSourceLine *ISL;
>> + error(consumeObject(Data, ISL));
>> + DictScope S(W, "InlineeSourceLine");
>> + printTypeIndex("Inlinee", ISL->Inlinee);
>> + W.printHex("FileID", ISL->FileID);
>> + W.printNumber("SourceLineNum", ISL->SourceLineNum);
>> +
>> + if (HasExtraFiles) {
>> + uint32_t ExtraFileCount;
>> + error(consumeUInt32(Data, ExtraFileCount));
>> + W.printNumber("ExtraFileCount", ExtraFileCount);
>> + ListScope ExtraFiles(W, "ExtraFiles");
>> + for (unsigned I = 0; I < ExtraFileCount; ++I) {
>> + uint32_t FileID;
>> + error(consumeUInt32(Data, FileID));
>> + W.printHex("FileID", FileID);
>> + }
>> + }
>> + }
>> +}
>> +
>> StringRef getRemainingTypeBytes(const TypeRecordPrefix *Rec, const char
>> *Start) {
>> ptrdiff_t StartOffset = Start - reinterpret_cast<const char *>(Rec);
>> size_t RecSize = Rec->Len + 2;
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
> --
> Mike
> Sent from phone
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160114/a2d522ce/attachment.html>
More information about the llvm-commits
mailing list