aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp
diff options
context:
space:
mode:
authorGravatar Marcel Hlopko <hlopko@google.com>2017-03-08 12:25:00 +0000
committerGravatar Vladimir Moskva <vladmos@google.com>2017-03-08 13:56:02 +0000
commit7f7d6d2c7b000e72cc80e8c30f5d5835ae4f35a1 (patch)
treea4c5115b4bdfcbeaac0e0a37cd795d75d850b365 /src/main/java/com/google/devtools/build/lib/rules/cpp
parent967de7358db7cf774910019cefdaf8fd2ff5c789 (diff)
Introduce strip_debug_symbols feature to crosstool
This cl removes hard coded -Wl,-S flag from Blaze and moves it to the crosstool. -- PiperOrigin-RevId: 149525225 MOS_MIGRATED_REVID=149525225
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java18
3 files changed, 25 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index 8ce165fe3b..342ad72809 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -1115,10 +1115,6 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
List<String> result = new ArrayList<>();
result.addAll(commonLinkOptions);
- if (stripBinaries) {
- result.add("-Wl,-S");
- }
-
result.addAll(linkOptionsFromCompilationMode.get(compilationMode));
result.addAll(linkOptionsFromLipoMode.get(lipoMode));
result.addAll(linkOptionsFromLinkingMode.get(linkingMode));
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 f8027391ae..9af79a77a4 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
@@ -124,6 +124,9 @@ public class CppLinkActionBuilder {
/** A build variable whose presence indicates that PIC code should be generated. */
public static final String FORCE_PIC_VARIABLE = "force_pic";
+ /** A build variable whose presence indicates that the debug symbols should be stripped. */
+ public static final String STRIP_DEBUG_SYMBOLS_VARIABLE = "strip_debug_symbols";
+
/** A build variable whose presence indicates that this action is a cc_test linking action. */
public static final String IS_CC_TEST_LINK_ACTION_VARIABLE = "is_cc_test_link_action";
@@ -1313,6 +1316,10 @@ public class CppLinkActionBuilder {
buildVariables.addStringVariable(FORCE_PIC_VARIABLE, "");
}
+ if (cppConfiguration.shouldStripBinaries()) {
+ buildVariables.addStringVariable(STRIP_DEBUG_SYMBOLS_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 2cb39abb86..14a053bb50 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
@@ -63,6 +63,7 @@ public class CppLinkActionConfigs {
" tool_path: 'DUMMY_TOOL'",
" }",
" implies: 'symbol_counts'",
+ " implies: 'strip_debug_symbols'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags_executable'",
" implies: 'runtime_library_search_directories'",
@@ -81,6 +82,7 @@ public class CppLinkActionConfigs {
" implies: 'build_interface_libraries'",
" implies: 'dynamic_library_linker_tool'",
" implies: 'symbol_counts'",
+ " implies: 'strip_debug_symbols'",
" implies: 'shared_flag'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
@@ -96,6 +98,7 @@ public class CppLinkActionConfigs {
" tool {",
" tool_path: 'DUMMY_TOOL'",
" }",
+ " implies: 'strip_debug_symbols'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
@@ -107,6 +110,7 @@ public class CppLinkActionConfigs {
" tool {",
" tool_path: 'DUMMY_TOOL'",
" }",
+ " implies: 'strip_debug_symbols'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
@@ -118,6 +122,7 @@ public class CppLinkActionConfigs {
" tool {",
" tool_path: 'DUMMY_TOOL'",
" }",
+ " implies: 'strip_debug_symbols'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
@@ -129,6 +134,7 @@ public class CppLinkActionConfigs {
" tool {",
" tool_path: 'DUMMY_TOOL'",
" }",
+ " implies: 'strip_debug_symbols'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
@@ -444,6 +450,18 @@ public class CppLinkActionConfigs {
" }",
"}",
"feature {",
+ " name: 'strip_debug_symbols'",
+ " flag_set {",
+ " action: 'c++-link-executable'",
+ " action: 'c++-link-dynamic-library'",
+ " action: 'c++-link-interface-dynamic-library'",
+ " flag_group {",
+ " expand_if_all_available: 'strip_debug_symbols'",
+ " flag: '-Wl,-S'",
+ " }",
+ " }",
+ "}",
+ "feature {",
" name: 'linker_param_file'",
" flag_set {",
" expand_if_all_available: 'linker_param_file'",