Gentoo Archives: gentoo-commits

From: Craig Andrews <candrews@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/rocm-comgr/files/, dev-libs/rocm-comgr/
Date: Fri, 27 Sep 2019 18:05:11
Message-Id: 1569607500.a7dd8be8771e2c87149d061152541aa4bdf917d7.candrews@gentoo
1 commit: a7dd8be8771e2c87149d061152541aa4bdf917d7
2 Author: Craig Andrews <candrews <AT> gentoo <DOT> org>
3 AuthorDate: Fri Sep 27 18:04:37 2019 +0000
4 Commit: Craig Andrews <candrews <AT> gentoo <DOT> org>
5 CommitDate: Fri Sep 27 18:05:00 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a7dd8be8
7
8 dev-libs/rocm-comgr: fix llvm related build error
9
10 Closes: https://bugs.gentoo.org/695660
11 Package-Manager: Portage-2.3.76, Repoman-2.3.17
12 Signed-off-by: Craig Andrews <candrews <AT> gentoo.org>
13
14 .../rocm-comgr-2.7.0-llvm-interface-change.patch | 176 +++++++++++++++++++++
15 dev-libs/rocm-comgr/rocm-comgr-2.7.0.ebuild | 1 +
16 2 files changed, 177 insertions(+)
17
18 diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-2.7.0-llvm-interface-change.patch b/dev-libs/rocm-comgr/files/rocm-comgr-2.7.0-llvm-interface-change.patch
19 new file mode 100644
20 index 00000000000..dc8ed42fc46
21 --- /dev/null
22 +++ b/dev-libs/rocm-comgr/files/rocm-comgr-2.7.0-llvm-interface-change.patch
23 @@ -0,0 +1,176 @@
24 +From a73e4ce7c686787840454e206a17973685b03e62 Mon Sep 17 00:00:00 2001
25 +From: Michael LIAO <michaelhongbin.liao@×××.com>
26 +Date: Thu, 15 Aug 2019 13:25:58 -0400
27 +Subject: [PATCH] Fix comgr build due to LLVM interface change.
28 +
29 +Change-Id: I66c2203f09b683dd06807860eeb5f517cd200f0e
30 +---
31 + src/comgr-objdump.cpp | 68 +++++++++++++++++++++++----------
32 + 1 file changed, 47 insertions(+), 21 deletions(-)
33 +
34 +diff --git a/src/comgr-objdump.cpp b/src/comgr-objdump.cpp
35 +index bf490b6..59a9d05 100644
36 +--- a/src/comgr-objdump.cpp
37 ++++ b/src/comgr-objdump.cpp
38 +@@ -307,15 +307,18 @@ class SectionFilter {
39 + FilterPredicate Predicate;
40 + llvm::object::ObjectFile const &Object;
41 + };
42 ++
43 + SectionFilter ToolSectionFilter(llvm::object::ObjectFile const &O) {
44 + return SectionFilter(
45 + [](llvm::object::SectionRef const &S) {
46 + if (FilterSections.empty())
47 + return true;
48 +- llvm::StringRef String;
49 +- std::error_code error = S.getName(String);
50 +- if (error)
51 ++ Expected<StringRef> SecNameOrErr = S.getName();
52 ++ if (!SecNameOrErr) {
53 ++ consumeError(SecNameOrErr.takeError());
54 + return false;
55 ++ }
56 ++ StringRef String = *SecNameOrErr;
57 + return is_contained(FilterSections, String);
58 + },
59 + O);
60 +@@ -394,6 +397,18 @@ report_error(StringRef ArchiveName, const object::Archive::Child &C,
61 + report_error(ArchiveName, NameOrErr.get(), std::move(E), ArchitectureName);
62 + }
63 +
64 ++static LLVM_ATTRIBUTE_NORETURN void report_error(llvm::Error E,
65 ++ StringRef File) {
66 ++ report_error(File, std::move(E));
67 ++}
68 ++
69 ++template <typename T, typename... Ts>
70 ++T unwrapOrError(Expected<T> EO, Ts &&... Args) {
71 ++ if (EO)
72 ++ return std::move(*EO);
73 ++ report_error(EO.takeError(), std::forward<Ts>(Args)...);
74 ++}
75 ++
76 + static const Target *getTarget(const ObjectFile *Obj = nullptr) {
77 + // Figure out the target triple.
78 + llvm::Triple TheTriple("unknown-unknown-unknown");
79 +@@ -822,13 +837,13 @@ static void printRelocationTargetName(const MachOObjectFile *O,
80 + for (const SectionRef &Section : ToolSectionFilter(*O)) {
81 + std::error_code ec;
82 +
83 +- StringRef Name;
84 + uint64_t Addr = Section.getAddress();
85 + if (Addr != Val)
86 + continue;
87 +- if ((ec = Section.getName(Name)))
88 +- report_error(O->getFileName(), ec);
89 +- fmt << Name;
90 ++ Expected<StringRef> NameOrErr = Section.getName();
91 ++ if (!NameOrErr)
92 ++ report_error(O->getFileName(), NameOrErr.takeError());
93 ++ fmt << *NameOrErr;
94 + return;
95 + }
96 +
97 +@@ -854,7 +869,11 @@ static void printRelocationTargetName(const MachOObjectFile *O,
98 + section_iterator SI = O->section_begin();
99 + // Adjust for the fact that sections are 1-indexed.
100 + advance(SI, Val - 1);
101 +- SI->getName(S);
102 ++ Expected<StringRef> SOrErr = SI->getName();
103 ++ if (!SOrErr)
104 ++ consumeError(SOrErr.takeError());
105 ++ else
106 ++ S = *SOrErr;
107 + }
108 +
109 + fmt << S;
110 +@@ -1362,8 +1381,7 @@ void llvm::DisassemHelper::DisassembleObject(const ObjectFile *Obj,
111 + DataRefImpl DR = Section.getRawDataRefImpl();
112 + SegmentName = MachO->getSectionFinalSegmentName(DR);
113 + }
114 +- StringRef name;
115 +- error(Section.getName(name));
116 ++ StringRef name = unwrapOrError(Section.getName(), Obj->getFileName());
117 +
118 + if ((SectionAddr <= StopAddress) &&
119 + (SectionAddr + SectSize) >= StartAddress) {
120 +@@ -1675,8 +1693,7 @@ void llvm::DisassemHelper::PrintRelocations(const ObjectFile *Obj) {
121 + for (const SectionRef &Section : ToolSectionFilter(*Obj)) {
122 + if (Section.relocation_begin() == Section.relocation_end())
123 + continue;
124 +- StringRef secname;
125 +- error(Section.getName(secname));
126 ++ StringRef secname = unwrapOrError(Section.getName(), Obj->getFileName());
127 + OutS << "RELOCATION RECORDS FOR [" << secname << "]:\n";
128 + for (const RelocationRef &Reloc : Section.relocations()) {
129 + bool hidden = getHidden(Reloc);
130 +@@ -1699,8 +1716,7 @@ void llvm::DisassemHelper::PrintSectionHeaders(const ObjectFile *Obj) {
131 + "Idx Name Size Address Type\n";
132 + unsigned i = 0;
133 + for (const SectionRef &Section : ToolSectionFilter(*Obj)) {
134 +- StringRef Name;
135 +- error(Section.getName(Name));
136 ++ StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName());
137 + uint64_t Address = Section.getAddress();
138 + uint64_t Size = Section.getSize();
139 + bool Text = Section.isText();
140 +@@ -1717,9 +1733,8 @@ void llvm::DisassemHelper::PrintSectionHeaders(const ObjectFile *Obj) {
141 + void llvm::DisassemHelper::PrintSectionContents(const ObjectFile *Obj) {
142 + std::error_code EC;
143 + for (const SectionRef &Section : ToolSectionFilter(*Obj)) {
144 +- StringRef Name;
145 + StringRef Contents;
146 +- error(Section.getName(Name));
147 ++ StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName());
148 + uint64_t BaseAddr = Section.getAddress();
149 + uint64_t Size = Section.getSize();
150 + if (!Size)
151 +@@ -1797,7 +1812,11 @@ void llvm::DisassemHelper::PrintSymbolTable(const ObjectFile *o,
152 + section_iterator Section = *SectionOrErr;
153 + StringRef Name;
154 + if (Type == SymbolRef::ST_Debug && Section != o->section_end()) {
155 +- Section->getName(Name);
156 ++ Expected<StringRef> NameOrErr = Section->getName();
157 ++ if (!NameOrErr)
158 ++ consumeError(NameOrErr.takeError());
159 ++ else
160 ++ Name = *NameOrErr;
161 + } else {
162 + Expected<StringRef> NameOrErr = Symbol.getName();
163 + if (!NameOrErr)
164 +@@ -1846,8 +1865,7 @@ void llvm::DisassemHelper::PrintSymbolTable(const ObjectFile *o,
165 + StringRef SegmentName = MachO->getSectionFinalSegmentName(DR);
166 + OutS << SegmentName << ",";
167 + }
168 +- StringRef SectionName;
169 +- error(Section->getName(SectionName));
170 ++ StringRef SectionName = unwrapOrError(Section->getName(), o->getFileName());
171 + OutS << SectionName;
172 + }
173 +
174 +@@ -1978,7 +1996,11 @@ void llvm::DisassemHelper::printRawClangAST(const ObjectFile *Obj) {
175 + Optional<object::SectionRef> ClangASTSection;
176 + for (auto Sec : ToolSectionFilter(*Obj)) {
177 + StringRef Name;
178 +- Sec.getName(Name);
179 ++ auto NameOrErr = Sec.getName();
180 ++ if (!NameOrErr) // FIXME: Need better error handling.
181 ++ consumeError(NameOrErr.takeError());
182 ++ else
183 ++ Name = *NameOrErr;
184 + if (Name == ClangASTSectionName) {
185 + ClangASTSection = Sec;
186 + break;
187 +@@ -2015,7 +2037,11 @@ void llvm::DisassemHelper::printFaultMaps(const ObjectFile *Obj) {
188 +
189 + for (auto Sec : ToolSectionFilter(*Obj)) {
190 + StringRef Name;
191 +- Sec.getName(Name);
192 ++ auto NameOrErr = Sec.getName();
193 ++ if (!NameOrErr) // FIXME: Need better error handling.
194 ++ consumeError(NameOrErr.takeError());
195 ++ else
196 ++ Name = *NameOrErr;
197 + if (Name == FaultMapSectionName) {
198 + FaultMapSection = Sec;
199 + break;
200
201 diff --git a/dev-libs/rocm-comgr/rocm-comgr-2.7.0.ebuild b/dev-libs/rocm-comgr/rocm-comgr-2.7.0.ebuild
202 index 17cde649143..e357310f253 100644
203 --- a/dev-libs/rocm-comgr/rocm-comgr-2.7.0.ebuild
204 +++ b/dev-libs/rocm-comgr/rocm-comgr-2.7.0.ebuild
205 @@ -20,6 +20,7 @@ PATCHES=(
206 "${FILESDIR}/${PN}-2.6.0-find-lld-includes.patch"
207 "${FILESDIR}/${PN}-2.6.0-dependencies.patch"
208 "${FILESDIR}/${PN}-2.6.0-unbundle-yaml-cpp.patch"
209 + "${FILESDIR}/${PN}-2.7.0-llvm-interface-change.patch"
210 )
211
212 DESCRIPTION="Radeon Open Compute Code Object Manager"