aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Marcel Hlopko <hlopko@google.com>2017-03-27 10:08:40 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2017-03-27 11:38:38 +0000
commit7d3a0880a8129dfdb987d805af7475b2b035bdd1 (patch)
treee309e71801ff42d911a7b095e9070ba870ee8e82 /src/main/java/com/google/devtools
parent704eb86221174573b3548fcf61b39991896eb8ab (diff)
Move -Wl,--gdb-index into crosstool
-- PiperOrigin-RevId: 151302418 MOS_MIGRATED_REVID=151302418
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java5
3 files changed, 24 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index ac15e13c76..532ad5ed58 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -131,6 +131,12 @@ public class CppLinkActionBuilder {
public static final String IS_CC_TEST_LINK_ACTION_VARIABLE = "is_cc_test_link_action";
/**
+ * A build variable whose presence indicates that files were compiled with fission (debug
+ * info is in .dwo files instead of .o files and linker needs to know).
+ */
+ public static final String IS_USING_FISSION_VARIABLE = "is_using_fission";
+
+ /**
* A (temporary) build variable whose presence indicates that this action is not a cc_test linking
* action.
*/
@@ -1346,6 +1352,10 @@ public class CppLinkActionBuilder {
buildVariables.addStringVariable(STRIP_DEBUG_SYMBOLS_VARIABLE, "");
}
+ if (getLinkType().staticness().equals(Staticness.DYNAMIC) && cppConfiguration.useFission()) {
+ buildVariables.addStringVariable(IS_USING_FISSION_VARIABLE, "");
+ }
+
if (useTestOnlyFlags()) {
buildVariables.addStringVariable(IS_CC_TEST_LINK_ACTION_VARIABLE, "");
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
index 14a053bb50..7a1c6da7b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
@@ -72,6 +72,7 @@ public class CppLinkActionConfigs {
" implies: 'force_pic_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
+ " implies: 'fission_support'",
"}",
"action_config {",
" config_name: 'c++-link-dynamic-library'",
@@ -91,6 +92,7 @@ public class CppLinkActionConfigs {
" implies: 'libraries_to_link'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
+ " implies: 'fission_support'",
"}",
"action_config {",
" config_name: 'c++-link-static-library'",
@@ -450,6 +452,18 @@ public class CppLinkActionConfigs {
" }",
"}",
"feature {",
+ " name: 'fission_support'",
+ " flag_set {",
+ " action: 'c++-link-executable'",
+ " action: 'c++-link-dynamic-library'",
+ " action: 'c++-link-interface-dynamic-library'",
+ " flag_group {",
+ " expand_if_all_available: 'is_using_fission'",
+ " flag: '-Wl,--gdb-index'",
+ " }",
+ " }",
+ "}",
+ "feature {",
" name: 'strip_debug_symbols'",
" flag_set {",
" action: 'c++-link-executable'",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
index 82d2e26bc7..bbb3b4ddb8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
@@ -364,11 +364,6 @@ public final class LinkCommandLine extends CommandLine {
Iterables.removeIf(toolchainFlags, Predicates.equalTo("-pie"));
}
- // Fission mode: debug info is in .dwo files instead of .o files. Inform the linker of this.
- if (linkTargetType.staticness() == Staticness.DYNAMIC && cppConfiguration.useFission()) {
- toolchainFlags.add("-Wl,--gdb-index");
- }
-
return ImmutableList.copyOf(toolchainFlags);
}