Skip to content

Commit 4192c41

Browse files
committed
[llvm-objdump] Add WarningHandler as a member variable. NFC
This can be used to avoid `auto WarningHandler = ...`. Similar to llvm-readobj.
1 parent e376ced commit 4192c41

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

llvm/tools/llvm-objdump/ELFDump.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ template <typename ELFT> class ELFDumper : public Dumper {
3838
void printDynamicSection();
3939
void printProgramHeaders();
4040
void printSymbolVersion();
41+
void printSymbolVersionDependency(const typename ELFT::Shdr &Sec);
4142
};
4243
} // namespace
4344

@@ -346,19 +347,13 @@ template <typename ELFT> void ELFDumper<ELFT>::printDynamicRelocations() {
346347
}
347348

348349
template <class ELFT>
349-
static void printSymbolVersionDependency(StringRef FileName,
350-
const ELFFile<ELFT> &Obj,
351-
const typename ELFT::Shdr &Sec) {
350+
void ELFDumper<ELFT>::printSymbolVersionDependency(
351+
const typename ELFT::Shdr &Sec) {
352352
outs() << "\nVersion References:\n";
353-
354-
auto WarningHandler = [&](const Twine &Msg) {
355-
reportWarning(Msg, FileName);
356-
return Error::success();
357-
};
358353
Expected<std::vector<VerNeed>> V =
359-
Obj.getVersionDependencies(Sec, WarningHandler);
354+
getELFFile().getVersionDependencies(Sec, this->WarningHandler);
360355
if (!V) {
361-
reportWarning(toString(V.takeError()), FileName);
356+
reportWarning(toString(V.takeError()), Obj.getFileName());
362357
return;
363358
}
364359

@@ -420,7 +415,7 @@ template <class ELFT> void ELFDumper<ELFT>::printSymbolVersion() {
420415
StringRef StrTab = unwrapOrError(Elf.getStringTable(*StrTabSec), FileName);
421416

422417
if (Shdr.sh_type == ELF::SHT_GNU_verneed)
423-
printSymbolVersionDependency<ELFT>(FileName, Elf, Shdr);
418+
printSymbolVersionDependency(Shdr);
424419
else
425420
printSymbolVersionDefinition<ELFT>(Shdr, Contents, StrTab);
426421
}

llvm/tools/llvm-objdump/llvm-objdump.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,20 @@ static StringRef ToolName;
235235

236236
std::unique_ptr<BuildIDFetcher> BIDFetcher;
237237

238+
Dumper::Dumper(const object::ObjectFile &O) : O(O) {
239+
WarningHandler = [this](const Twine &Msg) {
240+
if (Warnings.insert(Msg.str()).second)
241+
reportWarning(Msg, this->O.getFileName());
242+
return Error::success();
243+
};
244+
}
245+
238246
void Dumper::reportUniqueWarning(Error Err) {
239247
reportUniqueWarning(toString(std::move(Err)));
240248
}
241249

242250
void Dumper::reportUniqueWarning(const Twine &Msg) {
243-
if (Warnings.insert(StringRef(Msg.str())).second)
244-
reportWarning(Msg, O.getFileName());
251+
cantFail(WarningHandler(Msg));
245252
}
246253

247254
static Expected<std::unique_ptr<Dumper>> createDumper(const ObjectFile &Obj) {

llvm/tools/llvm-objdump/llvm-objdump.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/Support/Compiler.h"
1919
#include "llvm/Support/DataTypes.h"
2020
#include "llvm/Support/FormattedStream.h"
21+
#include <functional>
2122
#include <memory>
2223

2324
namespace llvm {
@@ -76,8 +77,11 @@ class Dumper {
7677
const object::ObjectFile &O;
7778
StringSet<> Warnings;
7879

80+
protected:
81+
std::function<Error(const Twine &Msg)> WarningHandler;
82+
7983
public:
80-
Dumper(const object::ObjectFile &O) : O(O) {}
84+
Dumper(const object::ObjectFile &O);
8185
virtual ~Dumper() {}
8286

8387
void reportUniqueWarning(Error Err);

0 commit comments

Comments
 (0)