mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
Add --quiet option to llvm-gsymutil to suppress output of warnings.
Differential Revision: https://reviews.llvm.org/D102829
This commit is contained in:
parent
ffafbe5131
commit
f35a5b956e
@ -144,10 +144,10 @@ class GsymCreator {
|
||||
AddressRanges Ranges;
|
||||
llvm::Optional<uint64_t> BaseAddress;
|
||||
bool Finalized = false;
|
||||
bool Quiet;
|
||||
|
||||
public:
|
||||
|
||||
GsymCreator();
|
||||
GsymCreator(bool Quiet = false);
|
||||
|
||||
/// Save a GSYM file to a stand alone file.
|
||||
///
|
||||
@ -289,6 +289,9 @@ public:
|
||||
void setBaseAddress(uint64_t Addr) {
|
||||
BaseAddress = Addr;
|
||||
}
|
||||
|
||||
/// Whether the transformation should be quiet, i.e. not output warnings.
|
||||
bool isQuiet() const { return Quiet; }
|
||||
};
|
||||
|
||||
} // namespace gsym
|
||||
|
@ -310,8 +310,10 @@ static void convertFunctionLineTable(raw_ostream &Log, CUInfo &CUI,
|
||||
// so break out after printing a warning.
|
||||
auto FirstLE = FI.OptLineTable->first();
|
||||
if (FirstLE && *FirstLE == LE) {
|
||||
if (!Gsym.isQuiet()) {
|
||||
Log << "warning: duplicate line table detected for DIE:\n";
|
||||
Die.dump(Log, 0, DIDumpOptions::getForSingleDIE());
|
||||
}
|
||||
} else {
|
||||
// Print out (ignore if os == nulls as this is expensive)
|
||||
Log << "error: line table has addresses that do not "
|
||||
@ -390,12 +392,15 @@ void DwarfTransformer::handleDie(raw_ostream &OS, CUInfo &CUI, DWARFDie Die) {
|
||||
// and the debug info wasn't able to be stripped from the DWARF. If
|
||||
// the LowPC isn't zero or -1, then we should emit an error.
|
||||
if (Range.LowPC != 0) {
|
||||
// Unexpected invalid address, emit an error
|
||||
if (!Gsym.isQuiet()) {
|
||||
// Unexpected invalid address, emit a warning
|
||||
Log << "warning: DIE has an address range whose start address is "
|
||||
"not in any executable sections (" <<
|
||||
*Gsym.GetValidTextRanges() << ") and will not be processed:\n";
|
||||
"not in any executable sections ("
|
||||
<< *Gsym.GetValidTextRanges()
|
||||
<< ") and will not be processed:\n";
|
||||
Die.dump(Log, 0, DIDumpOptions::getForSingleDIE());
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,8 @@
|
||||
using namespace llvm;
|
||||
using namespace gsym;
|
||||
|
||||
GsymCreator::GsymCreator() : StrTab(StringTableBuilder::ELF) {
|
||||
GsymCreator::GsymCreator(bool Quiet)
|
||||
: StrTab(StringTableBuilder::ELF), Quiet(Quiet) {
|
||||
insertFile(StringRef());
|
||||
}
|
||||
|
||||
@ -248,25 +249,30 @@ llvm::Error GsymCreator::finalize(llvm::raw_ostream &OS) {
|
||||
// the latter.
|
||||
return true;
|
||||
} else {
|
||||
if (!Quiet) {
|
||||
OS << "warning: same address range contains "
|
||||
"different debug "
|
||||
<< "info. Removing:\n"
|
||||
<< Prev << "\nIn favor of this one:\n"
|
||||
<< Curr << "\n";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// print warnings about overlaps
|
||||
if (!Quiet) { // print warnings about overlaps
|
||||
OS << "warning: function ranges overlap:\n"
|
||||
<< Prev << "\n"
|
||||
<< Curr << "\n";
|
||||
}
|
||||
}
|
||||
} else if (Prev.Range.size() == 0 &&
|
||||
Curr.Range.contains(Prev.Range.Start)) {
|
||||
if (!Quiet) {
|
||||
OS << "warning: removing symbol:\n"
|
||||
<< Prev << "\nKeeping:\n"
|
||||
<< Curr << "\n";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ HELP: --arch=<arch>
|
||||
HELP: --convert=<path>
|
||||
HELP: --num-threads=<n>
|
||||
HELP: --out-file=<path>
|
||||
HELP: --quiet
|
||||
HELP: --verify
|
||||
HELP: Generic Options:
|
||||
HELP: --help
|
||||
|
@ -108,6 +108,10 @@ static opt<unsigned>
|
||||
"number of cores on the current machine."),
|
||||
cl::value_desc("n"), cat(ConversionOptions));
|
||||
|
||||
static opt<bool>
|
||||
Quiet("quiet", desc("Do not output warnings about the debug information"),
|
||||
cat(ConversionOptions));
|
||||
|
||||
static list<uint64_t> LookupAddresses("address",
|
||||
desc("Lookup an address in a GSYM file"),
|
||||
cl::value_desc("addr"),
|
||||
@ -281,7 +285,7 @@ static llvm::Error handleObjectFile(ObjectFile &Obj,
|
||||
NumThreads > 0 ? NumThreads : std::thread::hardware_concurrency();
|
||||
auto &OS = outs();
|
||||
|
||||
GsymCreator Gsym;
|
||||
GsymCreator Gsym(Quiet);
|
||||
|
||||
// See if we can figure out the base address for a given object file, and if
|
||||
// we can, then set the base address to use to this value. This will ease
|
||||
|
Loading…
Reference in New Issue
Block a user