mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 00:26:05 +00:00

This patch implements proposal https://lists.llvm.org/pipermail/llvm-dev/2020-August/144579.html llvm-dwarfutil - is a tool that is used for processing debug info(DWARF) located in built binary files to improve debug info quality, reduce debug info size. The patch currently implements smaller set of command-line options(comparing to the proposal): ``` ./llvm-dwarfutil [options] <input file> <output file> --garbage-collection Do garbage collection for debug info(default) -j <value> Alias for --num-threads --no-garbage-collection Don`t do garbage collection for debug info --no-odr-deduplication Don`t do ODR deduplication for debug types --no-odr Alias for --no-odr-deduplication --no-separate-debug-file Create single output file, containing debug tables(default) --num-threads <threads> Number of available threads for multi-threaded execution. Defaults to the number of cores on the current machine --odr-deduplication Do ODR deduplication for debug types(default) --odr Alias for --odr-deduplication --separate-debug-file Create two output files: file w/o debug tables and file with debug tables --tombstone [bfd,maxpc,exec,universal] Tombstone value used as a marker of invalid address(default: universal) =bfd - Zero for all addresses and [1,1] for DWARF v4 (or less) address ranges and exec =maxpc - Minus 1 for all addresses and minus 2 for DWARF v4 (or less) address ranges =exec - Match with address ranges of executable sections =universal - Both: bfd and maxpc ``` Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D86539
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
//===- Error.h --------------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVM_DWARFUTIL_ERROR_H
|
|
#define LLVM_TOOLS_LLVM_DWARFUTIL_ERROR_H
|
|
|
|
#include "llvm/ADT/STLExtras.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/ADT/StringSet.h"
|
|
#include "llvm/ADT/Triple.h"
|
|
#include "llvm/Support/Debug.h"
|
|
#include "llvm/Support/Error.h"
|
|
#include "llvm/Support/Format.h"
|
|
#include "llvm/Support/WithColor.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
namespace llvm {
|
|
namespace dwarfutil {
|
|
|
|
inline void error(Error Err, StringRef Prefix = "") {
|
|
handleAllErrors(std::move(Err), [&](ErrorInfoBase &Info) {
|
|
WithColor::error(errs(), Prefix) << Info.message() << '\n';
|
|
});
|
|
std::exit(EXIT_FAILURE);
|
|
}
|
|
|
|
inline void warning(const Twine &Message, StringRef Prefix = "") {
|
|
WithColor::warning(errs(), Prefix) << Message << '\n';
|
|
}
|
|
|
|
inline void verbose(const Twine &Message, bool Verbose) {
|
|
if (Verbose)
|
|
outs() << Message << '\n';
|
|
}
|
|
|
|
} // end of namespace dwarfutil
|
|
} // end of namespace llvm
|
|
|
|
#endif // LLVM_TOOLS_LLVM_DWARFUTIL_ERROR_H
|