Skip to content

Commit 6103fdf

Browse files
committed
[ifs][elfabi] Merge llvm-ifs/elfabi tools
This change merges llvm-elfabi and llvm-ifs tools. Differential Revision: https://reviews.llvm.org/D100139
1 parent 61fa9af commit 6103fdf

File tree

69 files changed

+380
-758
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+380
-758
lines changed

clang/cmake/caches/Fuchsia-stage2.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ set(LLVM_TOOLCHAIN_TOOLS
246246
llvm-dlltool
247247
llvm-dwarfdump
248248
llvm-dwp
249-
llvm-elfabi
249+
llvm-ifs
250250
llvm-gsymutil
251251
llvm-lib
252252
llvm-lipo

clang/lib/Driver/ToolChains/InterfaceStubs.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ void Merger::ConstructJob(Compilation &C, const JobAction &JA,
2020
const llvm::opt::ArgList &Args,
2121
const char *LinkingOutput) const {
2222
std::string Merger = getToolChain().GetProgramPath(getShortName());
23+
// TODO: Use IFS library directly in the future.
2324
llvm::opt::ArgStringList CmdArgs;
24-
CmdArgs.push_back("-action");
25+
CmdArgs.push_back("--input-format=IFS");
2526
const bool WriteBin = !Args.getLastArg(options::OPT_emit_merged_ifs);
26-
CmdArgs.push_back(WriteBin ? "write-bin" : "write-ifs");
27+
CmdArgs.push_back(WriteBin ? "--output-format=ELF" : "--output-format=IFS");
2728
CmdArgs.push_back("-o");
2829

2930
// Normally we want to write to a side-car file ending in ".ifso" so for

clang/test/InterfaceStubs/driver-test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// RUN: %clang -target x86_64-unknown-linux-gnu -x c -S \
1313
// RUN: -fno-integrated-cc1 \
1414
// RUN: -emit-interface-stubs %s %S/object.c %S/weak.cpp && \
15-
// RUN: llvm-nm %t/a.out.ifso 2>&1 | FileCheck --check-prefix=CHECK-IFS %s
15+
// RUN: llvm-nm -D %t/a.out.ifso 2>&1 | FileCheck --check-prefix=CHECK-IFS %s
1616

1717
// CHECK-IFS-DAG: data
1818
// CHECK-IFS-DAG: foo

llvm/include/llvm/InterfaceStub/ELFObjHandler.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace llvm {
2222

2323
class MemoryBuffer;
2424

25-
namespace elfabi {
25+
namespace ifs {
2626

2727
/// Attempt to read a binary ELF file from a MemoryBuffer.
2828
Expected<std::unique_ptr<IFSStub>> readELFFile(MemoryBufferRef Buf);
@@ -38,7 +38,7 @@ Expected<std::unique_ptr<IFSStub>> readELFFile(MemoryBufferRef Buf);
3838
Error writeBinaryStub(StringRef FilePath, const IFSStub &Stub,
3939
bool WriteIfChanged = false);
4040

41-
} // end namespace elfabi
41+
} // end namespace ifs
4242
} // end namespace llvm
4343

4444
#endif // LLVM_INTERFACESTUB_ELFOBJHANDLER_H

llvm/include/llvm/InterfaceStub/IFSHandler.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class raw_ostream;
2626
class Error;
2727
class StringRef;
2828

29-
namespace elfabi {
29+
namespace ifs {
3030

3131
struct IFSStub;
3232

@@ -54,7 +54,7 @@ void stripIFSTarget(IFSStub &Stub, bool StripTriple, bool StripArch,
5454
/// Parse llvm triple string into a IFSTarget struct.
5555
IFSTarget parseTriple(StringRef TripleStr);
5656

57-
} // end namespace elfabi
57+
} // end namespace ifs
5858
} // end namespace llvm
5959

6060
#endif // LLVM_INTERFACESTUB_IFSHANDLER_H

llvm/include/llvm/InterfaceStub/IFSStub.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <vector>
2121

2222
namespace llvm {
23-
namespace elfabi {
23+
namespace ifs {
2424

2525
typedef uint16_t IFSArch;
2626

@@ -151,7 +151,7 @@ IFSEndiannessType convertELFEndiannessToIFS(uint8_t Endianness);
151151
///
152152
/// @param SymbolType Binary symbol st_info to extract symbol type from.
153153
IFSSymbolType convertELFSymbolTypeToIFS(uint8_t SymbolType);
154-
} // end namespace elfabi
154+
} // namespace ifs
155155
} // end namespace llvm
156156

157157
#endif // LLVM_INTERFACESTUB_IFSSTUB_H

llvm/lib/InterfaceStub/ELFObjHandler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ using namespace llvm::object;
2727
using namespace llvm::ELF;
2828

2929
namespace llvm {
30-
namespace elfabi {
30+
namespace ifs {
3131

3232
// Simple struct to hold relevant .dynamic entries.
3333
struct DynamicEntries {
@@ -671,5 +671,5 @@ Error writeBinaryStub(StringRef FilePath, const IFSStub &Stub,
671671
llvm_unreachable("invalid binary output target");
672672
}
673673

674-
} // namespace elfabi
674+
} // end namespace ifs
675675
} // end namespace llvm

llvm/lib/InterfaceStub/IFSHandler.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#include "llvm/Support/YAMLTraits.h"
1818

1919
using namespace llvm;
20-
using namespace llvm::elfabi;
20+
using namespace llvm::ifs;
2121

2222
LLVM_YAML_IS_SEQUENCE_VECTOR(IFSSymbol)
2323

@@ -171,7 +171,7 @@ bool usesTriple(StringRef Buf) {
171171
return true;
172172
}
173173

174-
Expected<std::unique_ptr<IFSStub>> elfabi::readIFSFromBuffer(StringRef Buf) {
174+
Expected<std::unique_ptr<IFSStub>> ifs::readIFSFromBuffer(StringRef Buf) {
175175
yaml::Input YamlIn(Buf);
176176
std::unique_ptr<IFSStubTriple> Stub(new IFSStubTriple());
177177
if (usesTriple(Buf)) {
@@ -183,7 +183,7 @@ Expected<std::unique_ptr<IFSStub>> elfabi::readIFSFromBuffer(StringRef Buf) {
183183
return createStringError(Err, "YAML failed reading as IFS");
184184
}
185185

186-
if (Stub->IfsVersion > elfabi::IFSVersionCurrent)
186+
if (Stub->IfsVersion > IFSVersionCurrent)
187187
return make_error<StringError>(
188188
"IFS version " + Stub->IfsVersion.getAsString() + " is unsupported.",
189189
std::make_error_code(std::errc::invalid_argument));
@@ -194,7 +194,7 @@ Expected<std::unique_ptr<IFSStub>> elfabi::readIFSFromBuffer(StringRef Buf) {
194194
return std::move(Stub);
195195
}
196196

197-
Error elfabi::writeIFSToOutputStream(raw_ostream &OS, const IFSStub &Stub) {
197+
Error ifs::writeIFSToOutputStream(raw_ostream &OS, const IFSStub &Stub) {
198198
yaml::Output YamlOut(OS, NULL, /*WrapColumn =*/0);
199199
std::unique_ptr<IFSStubTriple> CopyStub(new IFSStubTriple(Stub));
200200
if (Stub.Target.Arch) {
@@ -212,10 +212,10 @@ Error elfabi::writeIFSToOutputStream(raw_ostream &OS, const IFSStub &Stub) {
212212
return Error::success();
213213
}
214214

215-
Error elfabi::overrideIFSTarget(IFSStub &Stub, Optional<IFSArch> OverrideArch,
216-
Optional<IFSEndiannessType> OverrideEndianness,
217-
Optional<IFSBitWidthType> OverrideBitWidth,
218-
Optional<std::string> OverrideTriple) {
215+
Error ifs::overrideIFSTarget(IFSStub &Stub, Optional<IFSArch> OverrideArch,
216+
Optional<IFSEndiannessType> OverrideEndianness,
217+
Optional<IFSBitWidthType> OverrideBitWidth,
218+
Optional<std::string> OverrideTriple) {
219219
std::error_code OverrideEC(1, std::generic_category());
220220
if (OverrideArch) {
221221
if (Stub.Target.Arch &&
@@ -252,7 +252,7 @@ Error elfabi::overrideIFSTarget(IFSStub &Stub, Optional<IFSArch> OverrideArch,
252252
return Error::success();
253253
}
254254

255-
Error elfabi::validateIFSTarget(IFSStub &Stub, bool ParseTriple) {
255+
Error ifs::validateIFSTarget(IFSStub &Stub, bool ParseTriple) {
256256
std::error_code ValidationEC(1, std::generic_category());
257257
if (Stub.Target.Triple) {
258258
if (Stub.Target.Arch || Stub.Target.BitWidth || Stub.Target.Endianness ||
@@ -287,7 +287,7 @@ Error elfabi::validateIFSTarget(IFSStub &Stub, bool ParseTriple) {
287287
return Error::success();
288288
}
289289

290-
IFSTarget elfabi::parseTriple(StringRef TripleStr) {
290+
IFSTarget ifs::parseTriple(StringRef TripleStr) {
291291
Triple IFSTriple(TripleStr);
292292
IFSTarget RetTarget;
293293
// TODO: Implement a Triple Arch enum to e_machine map.
@@ -308,8 +308,8 @@ IFSTarget elfabi::parseTriple(StringRef TripleStr) {
308308
return RetTarget;
309309
}
310310

311-
void elfabi::stripIFSTarget(IFSStub &Stub, bool StripTriple, bool StripArch,
312-
bool StripEndianness, bool StripBitWidth) {
311+
void ifs::stripIFSTarget(IFSStub &Stub, bool StripTriple, bool StripArch,
312+
bool StripEndianness, bool StripBitWidth) {
313313
if (StripTriple || StripArch) {
314314
Stub.Target.Arch.reset();
315315
Stub.Target.ArchString.reset();

llvm/lib/InterfaceStub/IFSStub.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include "llvm/Support/Error.h"
1212

1313
using namespace llvm;
14-
using namespace llvm::elfabi;
14+
using namespace llvm::ifs;
1515

1616
IFSStub::IFSStub(IFSStub const &Stub) {
1717
IfsVersion = Stub.IfsVersion;
@@ -58,7 +58,7 @@ bool IFSTarget::empty() {
5858
!BitWidth;
5959
}
6060

61-
uint8_t elfabi::convertIFSBitWidthToELF(IFSBitWidthType BitWidth) {
61+
uint8_t ifs::convertIFSBitWidthToELF(IFSBitWidthType BitWidth) {
6262
switch (BitWidth) {
6363
case IFSBitWidthType::IFS32:
6464
return ELF::ELFCLASS32;
@@ -69,7 +69,7 @@ uint8_t elfabi::convertIFSBitWidthToELF(IFSBitWidthType BitWidth) {
6969
}
7070
}
7171

72-
uint8_t elfabi::convertIFSEndiannessToELF(IFSEndiannessType Endianness) {
72+
uint8_t ifs::convertIFSEndiannessToELF(IFSEndiannessType Endianness) {
7373
switch (Endianness) {
7474
case IFSEndiannessType::Little:
7575
return ELF::ELFDATA2LSB;
@@ -80,7 +80,7 @@ uint8_t elfabi::convertIFSEndiannessToELF(IFSEndiannessType Endianness) {
8080
}
8181
}
8282

83-
uint8_t elfabi::convertIFSSymbolTypeToELF(IFSSymbolType SymbolType) {
83+
uint8_t ifs::convertIFSSymbolTypeToELF(IFSSymbolType SymbolType) {
8484
switch (SymbolType) {
8585
case IFSSymbolType::Object:
8686
return ELF::STT_OBJECT;
@@ -94,7 +94,7 @@ uint8_t elfabi::convertIFSSymbolTypeToELF(IFSSymbolType SymbolType) {
9494
}
9595
}
9696

97-
IFSBitWidthType elfabi::convertELFBitWidthToIFS(uint8_t BitWidth) {
97+
IFSBitWidthType ifs::convertELFBitWidthToIFS(uint8_t BitWidth) {
9898
switch (BitWidth) {
9999
case ELF::ELFCLASS32:
100100
return IFSBitWidthType::IFS32;
@@ -105,7 +105,7 @@ IFSBitWidthType elfabi::convertELFBitWidthToIFS(uint8_t BitWidth) {
105105
}
106106
}
107107

108-
IFSEndiannessType elfabi::convertELFEndiannessToIFS(uint8_t Endianness) {
108+
IFSEndiannessType ifs::convertELFEndiannessToIFS(uint8_t Endianness) {
109109
switch (Endianness) {
110110
case ELF::ELFDATA2LSB:
111111
return IFSEndiannessType::Little;
@@ -116,7 +116,7 @@ IFSEndiannessType elfabi::convertELFEndiannessToIFS(uint8_t Endianness) {
116116
}
117117
}
118118

119-
IFSSymbolType elfabi::convertELFSymbolTypeToIFS(uint8_t SymbolType) {
119+
IFSSymbolType ifs::convertELFSymbolTypeToIFS(uint8_t SymbolType) {
120120
SymbolType = SymbolType & 0xf;
121121
switch (SymbolType) {
122122
case ELF::STT_OBJECT:

llvm/test/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ set(LLVM_TEST_DEPENDS
7777
dsymutil
7878
llvm-dwarfdump
7979
llvm-dwp
80-
llvm-elfabi
8180
llvm-exegesis
8281
llvm-extract
8382
llvm-gsymutil

0 commit comments

Comments
 (0)