diff options
author | Jan Voung <jvoung@chromium.org> | 2013-09-13 11:09:47 -0700 |
---|---|---|
committer | Jan Voung <jvoung@chromium.org> | 2013-09-13 11:09:47 -0700 |
commit | 156e8330e6df89812148f8e1b22cd883391deedc (patch) | |
tree | 609efc84acfd9422d7645126800cf2b1e531569a | |
parent | a90e7c5042db33b4cc05625af4593e1a796533dc (diff) |
Localize the le32 -> ARM hack to the LTO module for bitcode linking.
Only the bitcode linker via gold / lto module cares about
le32 being a target w/ a real backend.
LTOModule/LTOCodeGenerator is interested in having a real
target to know the name mangling and assembly notation
conventions (e.g., what's the prefix for private symbols).
This removes the hack from the bitcode reader so that
tools like llvm-dis are not affected and nonfinal pexes can
still say that they are "le32".
This is still not pretty, but it's better than polluting
the BitcodeReader, especially if certain tools check
what llvm-dis returns, and this doesn't require making a
dummy backend just for name mangling and asm conventions.
BUG=https://code.google.com/p/nativeclient/issues/detail?id=2554
TEST= trybots
http://chromegw.corp.google.com/i/tryserver.nacl/builders/nacl-toolchain-linux-pnacl-x86_32/builds/826
http://chromegw.corp.google.com/i/tryserver.nacl/builders/nacl-toolchain-mac-pnacl-x86_32/builds/830
http://chromegw.corp.google.com/i/tryserver.nacl/builders/nacl-toolchain-linux-pnacl-x86_64/builds/876
R=dschuff@chromium.org
Review URL: https://codereview.chromium.org/23619038
-rw-r--r-- | lib/Bitcode/Reader/BitcodeReader.cpp | 8 | ||||
-rw-r--r-- | tools/lto/LTOCodeGenerator.cpp | 7 | ||||
-rw-r--r-- | tools/lto/LTOModule.cpp | 7 |
3 files changed, 14 insertions, 8 deletions
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index a7434938b4..c48965cf93 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1610,14 +1610,6 @@ bool BitcodeReader::ParseModule(bool Resume) { std::string S; if (ConvertToString(Record, 0, S)) return Error("Invalid MODULE_CODE_TRIPLE record"); - - // @LOCALMOD-BEGIN - // This hack is needed in order to get Clang compiled binaries - // working with the Gold plugin, until PNaCl backend is introduced - // in lib/Target/PNaCl. - if (S == "le32-unknown-nacl") - S = "armv7-none-linux-gnueabi"; - // @LOCALMOD-END TheModule->setTargetTriple(S); break; } diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp index 57e7a2d07f..68956525c0 100644 --- a/tools/lto/LTOCodeGenerator.cpp +++ b/tools/lto/LTOCodeGenerator.cpp @@ -225,6 +225,13 @@ bool LTOCodeGenerator::determineTarget(std::string& errMsg) { return false; std::string TripleStr = _linker.getModule()->getTargetTriple(); + // @LOCALMOD-BEGIN + // Pretend that we are ARM for name mangling and assembly conventions. + // https://code.google.com/p/nativeclient/issues/detail?id=2554 + if (TripleStr == "le32-unknown-nacl") { + TripleStr = "armv7a-none-nacl-gnueabi"; + } + // @LOCALMOD-END if (TripleStr.empty()) TripleStr = sys::getDefaultTargetTriple(); llvm::Triple Triple(TripleStr); diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp index fce0bb062a..0263e31c8b 100644 --- a/tools/lto/LTOModule.cpp +++ b/tools/lto/LTOModule.cpp @@ -280,6 +280,13 @@ LTOModule *LTOModule::makeLTOModule(MemoryBuffer *buffer, } std::string TripleStr = m->getTargetTriple(); + // @LOCALMOD-BEGIN + // Pretend that we are ARM for name mangling and assembly conventions. + // https://code.google.com/p/nativeclient/issues/detail?id=2554 + if (TripleStr == "le32-unknown-nacl") { + TripleStr = "armv7a-none-nacl-gnueabi"; + } + // @LOCALMOD-END if (TripleStr.empty()) TripleStr = sys::getDefaultTargetTriple(); llvm::Triple Triple(TripleStr); |