From c7d4035e70bed1d85272aff865768bf06fb37b89 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Tue, 2 Feb 2016 01:52:40 +0000 Subject: [PATCH] Set ordinals of all File's created in MachO passes. When we do debug printing of atoms, they expect their parent file to have an ordinal. Right now we trigger a bunch of asserts. This doesn't actually manifest in differences in any real tests, but even if the only thing it does is improve debuggability then its still useful. llvm-svn: 259450 --- lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp | 4 +++- lld/lib/ReaderWriter/MachO/GOTPass.cpp | 4 +++- lld/lib/ReaderWriter/MachO/ShimPass.cpp | 4 +++- lld/lib/ReaderWriter/MachO/StubsPass.cpp | 4 +++- lld/lib/ReaderWriter/MachO/TLVPass.cpp | 4 +++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp b/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp index 4b8644a67e70..2e6ac0d6290a 100644 --- a/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp +++ b/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp @@ -274,7 +274,9 @@ public: CompactUnwindPass(const MachOLinkingContext &context) : _ctx(context), _archHandler(_ctx.archHandler()), _file(""), - _isBig(MachOLinkingContext::isBigEndian(_ctx.arch())) {} + _isBig(MachOLinkingContext::isBigEndian(_ctx.arch())) { + _file.setOrdinal(_ctx.getNextOrdinalAndIncrement()); + } private: std::error_code perform(SimpleFile &mergedFile) override { diff --git a/lld/lib/ReaderWriter/MachO/GOTPass.cpp b/lld/lib/ReaderWriter/MachO/GOTPass.cpp index a5816277dd71..7596af97267e 100644 --- a/lld/lib/ReaderWriter/MachO/GOTPass.cpp +++ b/lld/lib/ReaderWriter/MachO/GOTPass.cpp @@ -91,7 +91,9 @@ class GOTPass : public Pass { public: GOTPass(const MachOLinkingContext &context) : _ctx(context), _archHandler(_ctx.archHandler()), - _file("") {} + _file("") { + _file.setOrdinal(_ctx.getNextOrdinalAndIncrement()); + } private: std::error_code perform(SimpleFile &mergedFile) override { diff --git a/lld/lib/ReaderWriter/MachO/ShimPass.cpp b/lld/lib/ReaderWriter/MachO/ShimPass.cpp index df29e37c183b..60b0d8034d86 100644 --- a/lld/lib/ReaderWriter/MachO/ShimPass.cpp +++ b/lld/lib/ReaderWriter/MachO/ShimPass.cpp @@ -42,7 +42,9 @@ class ShimPass : public Pass { public: ShimPass(const MachOLinkingContext &context) : _ctx(context), _archHandler(_ctx.archHandler()), - _stubInfo(_archHandler.stubInfo()), _file("") {} + _stubInfo(_archHandler.stubInfo()), _file("") { + _file.setOrdinal(_ctx.getNextOrdinalAndIncrement()); + } std::error_code perform(SimpleFile &mergedFile) override { // Scan all references in all atoms. diff --git a/lld/lib/ReaderWriter/MachO/StubsPass.cpp b/lld/lib/ReaderWriter/MachO/StubsPass.cpp index 1f61256a5b79..fc2760b50eb7 100644 --- a/lld/lib/ReaderWriter/MachO/StubsPass.cpp +++ b/lld/lib/ReaderWriter/MachO/StubsPass.cpp @@ -199,7 +199,9 @@ class StubsPass : public Pass { public: StubsPass(const MachOLinkingContext &context) : _ctx(context), _archHandler(_ctx.archHandler()), - _stubInfo(_archHandler.stubInfo()), _file("") {} + _stubInfo(_archHandler.stubInfo()), _file("") { + _file.setOrdinal(_ctx.getNextOrdinalAndIncrement()); + } std::error_code perform(SimpleFile &mergedFile) override { // Skip this pass if output format uses text relocations instead of stubs. diff --git a/lld/lib/ReaderWriter/MachO/TLVPass.cpp b/lld/lib/ReaderWriter/MachO/TLVPass.cpp index aba222edcd27..fee07cb3955d 100644 --- a/lld/lib/ReaderWriter/MachO/TLVPass.cpp +++ b/lld/lib/ReaderWriter/MachO/TLVPass.cpp @@ -65,7 +65,9 @@ class TLVPass : public Pass { public: TLVPass(const MachOLinkingContext &context) : _ctx(context), _archHandler(_ctx.archHandler()), - _file("") {} + _file("") { + _file.setOrdinal(_ctx.getNextOrdinalAndIncrement()); + } private: std::error_code perform(SimpleFile &mergedFile) override {