forked from OSchip/llvm-project
[dsymutil] Improve verbose output (NFC)
The verbose output for finding relocations assumed that we'd always dump the DIE after (which starts with a newline) and therefore didn't include one itself. However, this isn't always true, leading to garbled output. This patch adds a newline to the verbose output and adds a line that says that the DIE is being kept (which isn't obvious otherwise). It also adds a 0x prefix to the relocations. llvm-svn: 374123
This commit is contained in:
parent
5841e9af1d
commit
a3f794e9b4
|
@ -25,36 +25,44 @@ CHECK-NOT: TAG
|
|||
CHECK: AT_name {{.*}}basic3.c
|
||||
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0
|
||||
CHECK: Found valid debug map entry: _main 0x0000000000000000 => 0x0000000100000ea0
|
||||
CHECK-NEXT: Keeping subprogram DIE:
|
||||
CHECK-NEXT: DW_TAG_subprogram
|
||||
CHECK-NEXT: DW_AT_name{{.*}}"main"
|
||||
|
||||
CHECK: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001008
|
||||
CHECK: Found valid debug map entry: _private_int 0x0000000000000560 => 0x0000000100001008
|
||||
CHECK-NEXT: Keeping variable DIE:
|
||||
CHECK-NEXT: DW_TAG_variable
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"private_int"
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000
|
||||
CHECK: Found valid debug map entry: _baz 0x0000000000000310 => 0x0000000100001000
|
||||
CHECK-NEXT: Keeping variable DIE:
|
||||
CHECK-NEXT: DW_TAG_variable
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"baz"
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0
|
||||
CHECK: Found valid debug map entry: _foo 0x0000000000000020 => 0x0000000100000ed0
|
||||
CHECK-NEXT: Keeping subprogram DIE:
|
||||
CHECK-NEXT: DW_TAG_subprogram
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"foo"
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20
|
||||
CHECK: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f20
|
||||
CHECK-NEXT: Keeping subprogram DIE:
|
||||
CHECK-NEXT: DW_TAG_subprogram
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"inc"
|
||||
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _val ffffffffffffffff => 0000000100001004
|
||||
CHECK: Found valid debug map entry: _val 0xffffffffffffffff => 0x0000000100001004
|
||||
CHECK-NEXT: Keeping variable DIE:
|
||||
CHECK-NEXT: DW_TAG_variable
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"val"
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40
|
||||
CHECK: Found valid debug map entry: _bar 0x0000000000000020 => 0x0000000100000f40
|
||||
CHECK-NEXT: Keeping subprogram DIE:
|
||||
CHECK-NEXT: DW_TAG_subprogram
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"bar"
|
||||
CHECK-NOT: Found valid debug map entry
|
||||
CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90
|
||||
CHECK: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f90
|
||||
CHECK-NEXT: Keeping subprogram DIE:
|
||||
CHECK-NEXT: DW_TAG_subprogram
|
||||
CHECK-NEXT: DW_AT_name {{.*}}"inc")
|
||||
|
||||
|
@ -75,27 +83,33 @@ CHECK-LTO-NOT: TAG
|
|||
CHECK-LTO: AT_name {{.*}}basic3.c
|
||||
|
||||
CHECK-LTO-NOT: Found valid debug map entry
|
||||
CHECK-LTO: Found valid debug map entry: _main 0000000000000000 => 0000000100000f40
|
||||
CHECK-LTO: Found valid debug map entry: _main 0x0000000000000000 => 0x0000000100000f40
|
||||
CHECK-LTO-NEXT: Keeping subprogram DIE:
|
||||
CHECK-LTO-NEXT: DW_TAG_subprogram
|
||||
CHECK-LTO-NEXT: DW_AT_name {{.*}}"main"
|
||||
CHECK-LTO-NOT: Found valid debug map entry
|
||||
CHECK-LTO: Found valid debug map entry: _private_int 00000000000008e8 => 0000000100001008
|
||||
CHECK-LTO: Found valid debug map entry: _private_int 0x00000000000008e8 => 0x0000000100001008
|
||||
CHECK-LTO-NEXT: Keeping variable DIE:
|
||||
CHECK-LTO-NEXT: DW_TAG_variable
|
||||
CHECK-LTO-NEXT: DW_AT_name {{.*}}"private_int"
|
||||
CHECK-LTO-NOT: Found valid debug map entry
|
||||
CHECK-LTO: Found valid debug map entry: _baz 0000000000000658 => 0000000100001000
|
||||
CHECK-LTO: Found valid debug map entry: _baz 0x0000000000000658 => 0x0000000100001000
|
||||
CHECK-LTO-NEXT: Keeping variable DIE:
|
||||
CHECK-LTO-NEXT: DW_TAG_variable
|
||||
CHECK-LTO-NEXT: DW_AT_name {{.*}} "baz"
|
||||
CHECK-LTO-NOT: Found valid debug map entry
|
||||
CHECK-LTO: Found valid debug map entry: _foo 0000000000000010 => 0000000100000f50
|
||||
CHECK-LTO: Found valid debug map entry: _foo 0x0000000000000010 => 0x0000000100000f50
|
||||
CHECK-LTO-NEXT: Keeping subprogram DIE:
|
||||
CHECK-LTO-NEXT: DW_TAG_subprogram
|
||||
CHECK-LTO-NEXT: DW_AT_name {{.*}}"foo"
|
||||
CHECK-LTO-NOT: Found valid debug map entry
|
||||
CHECK-LTO: Found valid debug map entry: _val 00000000000008ec => 0000000100001004
|
||||
CHECK-LTO: Found valid debug map entry: _val 0x00000000000008ec => 0x0000000100001004
|
||||
CHECK-LTO-NEXT: Keeping variable DIE:
|
||||
CHECK-LTO-NEXT: DW_TAG_variable
|
||||
CHECK-LTO-NEXT: DW_AT_name {{.*}}"val"
|
||||
CHECK-LTO-NOT: Found valid debug map entry
|
||||
CHECK-LTO: Found valid debug map entry: _bar 0000000000000050 => 0000000100000f90
|
||||
CHECK-LTO: Found valid debug map entry: _bar 0x0000000000000050 => 0x0000000100000f90
|
||||
CHECK-LTO-NEXT: Keeping subprogram DIE:
|
||||
CHECK-LTO-NEXT: DW_TAG_subprogram
|
||||
CHECK-LTO-NEXT: DW_AT_name {{.*}}"bar"
|
||||
|
||||
|
@ -120,36 +134,44 @@ CHECK-ARCHIVE-NOT: TAG
|
|||
CHECK-ARCHIVE: AT_name {{.*}}basic3.c
|
||||
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _main 0x0000000000000000 => 0x0000000100000ea0
|
||||
CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name{{.*}}"main"
|
||||
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001004
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _private_int 0x0000000000000560 => 0x0000000100001004
|
||||
CHECK-ARCHIVE-NEXT: Keeping variable DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_variable
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"private_int"
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _baz 0x0000000000000310 => 0x0000000100001000
|
||||
CHECK-ARCHIVE-NEXT: Keeping variable DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_variable
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"baz"
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _foo 0x0000000000000020 => 0x0000000100000ed0
|
||||
CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"foo"
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f20
|
||||
CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc"
|
||||
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _val ffffffffffffffff => 0000000100001008
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _val 0xffffffffffffffff => 0x0000000100001008
|
||||
CHECK-ARCHIVE-NEXT: Keeping variable DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_variable
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"val"
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _bar 0x0000000000000020 => 0x0000000100000f40
|
||||
CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"bar"
|
||||
CHECK-ARCHIVE-NOT: Found valid debug map entry
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90
|
||||
CHECK-ARCHIVE: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f90
|
||||
CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:
|
||||
CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
|
||||
CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc")
|
||||
|
|
|
@ -578,16 +578,17 @@ bool DwarfLinker::RelocationManager::hasValidRelocation(
|
|||
|
||||
const auto &ValidReloc = ValidRelocs[NextValidReloc++];
|
||||
const auto &Mapping = ValidReloc.Mapping->getValue();
|
||||
uint64_t ObjectAddress = Mapping.ObjectAddress
|
||||
? uint64_t(*Mapping.ObjectAddress)
|
||||
: std::numeric_limits<uint64_t>::max();
|
||||
const uint64_t BinaryAddress = Mapping.BinaryAddress;
|
||||
const uint64_t ObjectAddress = Mapping.ObjectAddress
|
||||
? uint64_t(*Mapping.ObjectAddress)
|
||||
: std::numeric_limits<uint64_t>::max();
|
||||
if (Linker.Options.Verbose)
|
||||
outs() << "Found valid debug map entry: " << ValidReloc.Mapping->getKey()
|
||||
<< " "
|
||||
<< format("\t%016" PRIx64 " => %016" PRIx64, ObjectAddress,
|
||||
uint64_t(Mapping.BinaryAddress));
|
||||
<< "\t"
|
||||
<< format("0x%016" PRIx64 " => 0x%016" PRIx64 "\n", ObjectAddress,
|
||||
BinaryAddress);
|
||||
|
||||
Info.AddrAdjust = int64_t(Mapping.BinaryAddress) + ValidReloc.Addend;
|
||||
Info.AddrAdjust = BinaryAddress + ValidReloc.Addend;
|
||||
if (Mapping.ObjectAddress)
|
||||
Info.AddrAdjust -= ObjectAddress;
|
||||
Info.InDebugMap = true;
|
||||
|
@ -644,7 +645,7 @@ unsigned DwarfLinker::shouldKeepVariableDIE(RelocationManager &RelocMgr,
|
|||
|
||||
// See if there is a relocation to a valid debug map entry inside
|
||||
// this variable's location. The order is important here. We want to
|
||||
// always check in the variable has a valid relocation, so that the
|
||||
// always check if the variable has a valid relocation, so that the
|
||||
// DIEInfo is filled. However, we don't want a static variable in a
|
||||
// function to force us to keep the enclosing function.
|
||||
if (!RelocMgr.hasValidRelocation(LocationOffset, LocationEndOffset, MyInfo) ||
|
||||
|
@ -652,6 +653,7 @@ unsigned DwarfLinker::shouldKeepVariableDIE(RelocationManager &RelocMgr,
|
|||
return Flags;
|
||||
|
||||
if (Options.Verbose) {
|
||||
outs() << "Keeping variable DIE:";
|
||||
DIDumpOptions DumpOpts;
|
||||
DumpOpts.ChildRecurseDepth = 0;
|
||||
DumpOpts.Verbose = Options.Verbose;
|
||||
|
@ -688,6 +690,7 @@ unsigned DwarfLinker::shouldKeepSubprogramDIE(
|
|||
return Flags;
|
||||
|
||||
if (Options.Verbose) {
|
||||
outs() << "Keeping subprogram DIE:";
|
||||
DIDumpOptions DumpOpts;
|
||||
DumpOpts.ChildRecurseDepth = 0;
|
||||
DumpOpts.Verbose = Options.Verbose;
|
||||
|
|
Loading…
Reference in New Issue