summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-11-20 23:59:40 +0000
committerRui Ueyama <ruiu@google.com>2014-11-20 23:59:40 +0000
commit4a259cf4a5f95ded6489695404cf904718431d18 (patch)
tree3f25cf649856ef8a082dde3dfaa5a764504a6446
parent01014cee76f2da9df70c9e17bebaebf7f0a52c6d (diff)
downloadbcm5719-llvm-4a259cf4a5f95ded6489695404cf904718431d18.tar.gz
bcm5719-llvm-4a259cf4a5f95ded6489695404cf904718431d18.zip
[PECOFF] Enable dead-stripping even if /debug option is given.
/debug makes MSVC link.exe to not remove unused sections from the resulting executable. We did the same thing before. However, I realized that the removal of associative section depends on the dead-stripping pass in LLD, so we cannot disable that. Or LLD may produce slightly broken executables that have too much data in it (which could result in nasty subtle bugs). This patch is a temporary measure to create correct executable. Currently /debug does not have any real effect for LLD anyway. I'll improve associative section handling in another patch, so that they are removed from output without depending on the dead-stripping pass. llvm-svn: 222483
-rw-r--r--lld/lib/Driver/WinLinkDriver.cpp5
-rw-r--r--lld/unittests/DriverTests/WinLinkDriverTest.cpp2
2 files changed, 4 insertions, 3 deletions
diff --git a/lld/lib/Driver/WinLinkDriver.cpp b/lld/lib/Driver/WinLinkDriver.cpp
index 04575a9f87f..a5c125fd24a 100644
--- a/lld/lib/Driver/WinLinkDriver.cpp
+++ b/lld/lib/Driver/WinLinkDriver.cpp
@@ -1177,8 +1177,9 @@ bool WinLinkDriver::parse(int argc, const char *argv[],
case OPT_debug:
// LLD is not yet capable of creating a PDB file, so /debug does not have
- // any effect, other than disabling dead stripping.
- ctx.setDeadStripping(false);
+ // any effect.
+ // TODO: This should disable dead stripping. Currently we can't do that
+ // because removal of associative sections depends on dead stripping.
break;
case OPT_verbose:
diff --git a/lld/unittests/DriverTests/WinLinkDriverTest.cpp b/lld/unittests/DriverTests/WinLinkDriverTest.cpp
index b69194e9693..8b95a984943 100644
--- a/lld/unittests/DriverTests/WinLinkDriverTest.cpp
+++ b/lld/unittests/DriverTests/WinLinkDriverTest.cpp
@@ -547,7 +547,7 @@ TEST_F(WinLinkParserTest, SwapRunFromNet) {
TEST_F(WinLinkParserTest, Debug) {
EXPECT_TRUE(parse("link.exe", "/debug", "a.out", nullptr));
- EXPECT_FALSE(_context.deadStrip());
+ EXPECT_TRUE(_context.deadStrip());
}
TEST_F(WinLinkParserTest, Fixed) {
OpenPOWER on IntegriCloud