summaryrefslogtreecommitdiffstats
path: root/lld
diff options
context:
space:
mode:
Diffstat (limited to 'lld')
-rw-r--r--lld/lib/Driver/GnuLdDriver.cpp5
-rw-r--r--lld/lib/Driver/GnuLdOptions.td2
-rw-r--r--lld/unittests/DriverTests/GnuLdDriverTest.cpp12
3 files changed, 17 insertions, 2 deletions
diff --git a/lld/lib/Driver/GnuLdDriver.cpp b/lld/lib/Driver/GnuLdDriver.cpp
index da1675a61d3..326e2baaac4 100644
--- a/lld/lib/Driver/GnuLdDriver.cpp
+++ b/lld/lib/Driver/GnuLdDriver.cpp
@@ -508,8 +508,9 @@ bool GnuLdDriver::parse(int argc, const char *argv[],
if (parsedArgs->hasArg(OPT_noinhibit_exec))
ctx->setAllowRemainingUndefines(true);
- if (parsedArgs->hasArg(OPT_export_dynamic))
- ctx->setExportDynamic(true);
+ if (auto val = getBool(*parsedArgs, OPT_export_dynamic,
+ OPT_no_export_dynamic))
+ ctx->setExportDynamic(*val);
if (parsedArgs->hasArg(OPT_allow_multiple_definition))
ctx->setAllowDuplicates(true);
diff --git a/lld/lib/Driver/GnuLdOptions.td b/lld/lib/Driver/GnuLdOptions.td
index 6f22150cc59..18c1a0d5280 100644
--- a/lld/lib/Driver/GnuLdOptions.td
+++ b/lld/lib/Driver/GnuLdOptions.td
@@ -156,6 +156,8 @@ def export_dynamic : Flag<["-", "--"], "export-dynamic">,
Group<grp_main>;
def alias_export_dynamic: Flag<["-"], "E">,
Alias<export_dynamic>;
+def no_export_dynamic : Flag<["--"], "no-export-dynamic">,
+ Group<grp_main>;
//===----------------------------------------------------------------------===//
/// Dynamic Library Options
diff --git a/lld/unittests/DriverTests/GnuLdDriverTest.cpp b/lld/unittests/DriverTests/GnuLdDriverTest.cpp
index 36d56258b6f..a736f5cee2a 100644
--- a/lld/unittests/DriverTests/GnuLdDriverTest.cpp
+++ b/lld/unittests/DriverTests/GnuLdDriverTest.cpp
@@ -91,6 +91,18 @@ TEST_F(GnuLdParserTest, EntryJoined) {
EXPECT_EQ("foo", _context->entrySymbolName());
}
+// --export-dynamic
+
+TEST_F(GnuLdParserTest, ExportDynamic) {
+ EXPECT_TRUE(parse("ld", "a.o", "--export-dynamic", nullptr));
+ EXPECT_TRUE(_context->shouldExportDynamic());
+}
+
+TEST_F(GnuLdParserTest, NoExportDynamic) {
+ EXPECT_TRUE(parse("ld", "a.o", "--no-export-dynamic", nullptr));
+ EXPECT_FALSE(_context->shouldExportDynamic());
+}
+
// --init
TEST_F(GnuLdParserTest, Init) {
OpenPOWER on IntegriCloud