1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 10:32:48 +02:00

[codeview] Revert inline line table change of r362264

Testing with debuggers shows that our previous behavior was correct.
The reason I thought MSVC did things differently is that MSVC prefers to
use the 0xB combined code offset and code length update opcode when
inline sites are discontiguous.

Keep the test changes, and update the llvm-pdbutil inline line table
dumper to account for this new interpretation of the opcodes.

llvm-svn: 362277
This commit is contained in:
Reid Kleckner 2019-05-31 22:55:03 +00:00
parent ca528ad2be
commit 713939cc13
5 changed files with 9 additions and 5 deletions

View File

@ -535,6 +535,7 @@ void CodeViewContext::encodeInlineLineTable(MCAsmLayout &Layout,
unsigned Length = computeLabelDiff(Layout, LastLabel, Loc.getLabel());
compressAnnotation(BinaryAnnotationsOpCode::ChangeCodeLength, Buffer);
compressAnnotation(Length, Buffer);
LastLabel = Loc.getLabel();
}
HaveOpenRange = false;
continue;

View File

@ -36,12 +36,11 @@
# ASM-NEXT: 2b: 0f 0b ud2
# End inline loc
# CODEVIEW: S_INLINESITE [size = 26]
# CODEVIEW: S_INLINESITE [size = 24]
# CODEVIEW-NEXT: inlinee = 0x1002 (f), parent = 0, end = 0
# CODEVIEW-NEXT: 0B2E code 0xE (+0xE) line 1 (+1)
# CODEVIEW-NEXT: 0409 code end 0x17 (+0x9)
# CODEVIEW-NEXT: 0602 line 2 (+1)
# CODEVIEW-NEXT: 0318 code 0x26 (+0x18)
# CODEVIEW-NEXT: 0B2F code 0x26 (+0xF) line 2 (+1)
# CODEVIEW-NEXT: 0407 code end 0x2D (+0x7)
.text

View File

@ -25,7 +25,7 @@
# CODEVIEW-NEXT: inlinee = 0x1002 (do_exit), parent = 0, end = 0
# CODEVIEW-NEXT: 0602 line 1 (+1)
# CODEVIEW-NEXT: 0409 code end 0x9 (+0x9)
# CODEVIEW-NEXT: 0B2A code 0xA (+0xA) line 2 (+1)
# CODEVIEW-NEXT: 0B21 code 0xA (+0x1) line 2 (+1)
# CODEVIEW-NEXT: 0B28 code 0x12 (+0x8) line 3 (+1)
# CODEVIEW-NEXT: 0400 code end 0x12 (+0x0)

View File

@ -36,7 +36,7 @@
# CODEVIEW-NEXT: inlinee = 0x1002 (do_exit), parent = 0, end = 0
# CODEVIEW-NEXT: 0602 line 1 (+1)
# CODEVIEW-NEXT: 0409 code end 0x9 (+0x9)
# CODEVIEW-NEXT: 0B2A code 0xA (+0xA) line 2 (+1)
# CODEVIEW-NEXT: 0B21 code 0xA (+0x1) line 2 (+1)
# CODEVIEW-NEXT: 0B28 code 0x12 (+0x8) line 3 (+1)
# CODEVIEW-NEXT: 0400 code end 0x12 (+0x0)

View File

@ -689,6 +689,10 @@ Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, InlineSiteSym &IS) {
break;
case BinaryAnnotationsOpCode::ChangeCodeLength:
formatCodeLength(Annot.U1);
// Apparently this annotation updates the code offset. It's hard to make
// MSVC produce this opcode, but clang uses it, and debuggers seem to use
// this interpretation.
CodeOffset += Annot.U1;
break;
case BinaryAnnotationsOpCode::ChangeCodeOffsetAndLineOffset:
formatCodeOffset(Annot.U1);