From: David Blaikie Date: Fri, 28 Mar 2014 20:45:24 +0000 (+0000) Subject: llvm-mc: error when -compress-debug-sections is requested and zlib is not linked X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=4a9c2585ab60fe9f0e40df8f2aeaf55d34ce77ee;p=oota-llvm.git llvm-mc: error when -compress-debug-sections is requested and zlib is not linked This is a bit of a stab in the dark, since I have zlib on my machine. Just going to bounce it off the bots & see if it sticks. Do we have some convention for negative REQUIRES: checks? Or do I just need to add a feature like I've done here? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205050 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/MC/ELF/nocompression.s b/test/MC/ELF/nocompression.s new file mode 100644 index 00000000000..c584e181df0 --- /dev/null +++ b/test/MC/ELF/nocompression.s @@ -0,0 +1,5 @@ +// RUN: llvm-mc -filetype=obj -compress-debug-sections -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s + +// REQUIRES: nozlib + +// CHECK: llvm-mc: build tools with zlib to enable -compress-debug-sections diff --git a/test/lit.cfg b/test/lit.cfg index ec5b52ef47d..df1850a663d 100644 --- a/test/lit.cfg +++ b/test/lit.cfg @@ -297,6 +297,8 @@ if not 'hexagon' in config.target_triple: if config.have_zlib == "1": config.available_features.add("zlib") +else: + config.available_features.add("nozlib") # Native compilation: host arch == target arch # FIXME: Consider cases that target can be executed diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp index b2e7a81488d..dfa347e764a 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -384,8 +384,13 @@ int main(int argc, char **argv) { std::unique_ptr MAI(TheTarget->createMCAsmInfo(*MRI, TripleName)); assert(MAI && "Unable to create target asm info!"); - if (CompressDebugSections) + if (CompressDebugSections) { + if (!zlib::isAvailable()) { + errs() << ProgName << ": build tools with zlib to enable -compress-debug-sections"; + return 1; + } MAI->setCompressDebugSections(true); + } // FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and // MCObjectFileInfo needs a MCContext reference in order to initialize itself.