aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukács T. Berki <lberki@google.com>2021-05-12 18:14:56 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-05-12 18:14:56 +0000
commit5e791e1db901c5b8ebf6586d193c7f9d81740e0c (patch)
tree6a30bb7064485f63037a08ddb185c39ca416e9ea
parentfcb0c32440e52e2ed653c4e5eba1008976334f6b (diff)
parent350c3ae907d0dbae418ef74708b2b80eadea670e (diff)
downloadbazel-5e791e1db901c5b8ebf6586d193c7f9d81740e0c.tar.gz
Merge "Re-implement version_script in cc_library_shared."
-rw-r--r--rules/full_cc_library.bzl7
-rw-r--r--rules_cc/examples/experimental_cc_shared_library.bzl16
-rwxr-xr-xtests/bionic/verify_bionic_outputs.sh1
3 files changed, 15 insertions, 9 deletions
diff --git a/rules/full_cc_library.bzl b/rules/full_cc_library.bzl
index 6e5d000c..4a8e7b03 100644
--- a/rules/full_cc_library.bzl
+++ b/rules/full_cc_library.bzl
@@ -62,11 +62,6 @@ def cc_library(
deps = deps + static_deps_for_shared + whole_archive_deps + whole_archive_deps_for_shared,
)
- additional_linker_inputs = []
- if version_script != None:
- user_link_flags = user_link_flags + ["-Wl,--version-script,$(location " + version_script + ")"]
- additional_linker_inputs += [version_script]
-
cc_shared_library(
name = shared_name,
user_link_flags = user_link_flags,
@@ -76,7 +71,7 @@ def cc_library(
# instead of needing to declare each target transitively.
static_deps = ["//:__subpackages__"] + [shared_root_name],
dynamic_deps = dynamic_deps + dynamic_deps_for_shared,
- additional_linker_inputs = additional_linker_inputs,
+ version_script = version_script,
roots = [shared_root_name] + whole_archive_deps + whole_archive_deps_for_shared,
)
diff --git a/rules_cc/examples/experimental_cc_shared_library.bzl b/rules_cc/examples/experimental_cc_shared_library.bzl
index 905bd270..355ed0ec 100644
--- a/rules_cc/examples/experimental_cc_shared_library.bzl
+++ b/rules_cc/examples/experimental_cc_shared_library.bzl
@@ -309,6 +309,14 @@ def _get_permissions(ctx):
return ctx.attr.permissions
return None
+def _process_version_script(ctx):
+ if ctx.attr.version_script == None:
+ return ([], [])
+
+ version_script = ctx.files.version_script[0]
+ version_script_arg = "-Wl,--version-script," + version_script.path
+ return ([version_script], [version_script_arg])
+
def _cc_shared_library_impl(ctx):
cc_common.check_experimental_cc_shared_library()
cc_toolchain = find_cc_toolchain(ctx)
@@ -351,7 +359,10 @@ def _cc_shared_library_impl(ctx):
linking_context = _create_linker_context(ctx, linker_inputs)
- user_link_flags = []
+ # Divergence from rules_cc: that version does not support version scripts
+ version_script, version_script_arg = _process_version_script(ctx)
+
+ user_link_flags = version_script_arg[:]
for user_link_flag in ctx.attr.user_link_flags:
user_link_flags.append(ctx.expand_location(user_link_flag, targets = ctx.attr.additional_linker_inputs))
@@ -361,7 +372,7 @@ def _cc_shared_library_impl(ctx):
cc_toolchain = cc_toolchain,
linking_contexts = [linking_context],
user_link_flags = user_link_flags,
- additional_inputs = ctx.files.additional_linker_inputs,
+ additional_inputs = ctx.files.additional_linker_inputs + version_script,
name = ctx.label.name,
output_type = "dynamic_library",
)
@@ -463,6 +474,7 @@ cc_shared_library = rule(
"preloaded_deps": attr.label_list(providers = [CcInfo]),
"roots": attr.label_list(providers = [CcInfo], aspects = [graph_structure_aspect]),
"static_deps": attr.string_list(),
+ "version_script": attr.label(allow_single_file = True),
"user_link_flags": attr.string_list(),
"_cc_toolchain": attr.label(default = "@bazel_tools//tools/cpp:current_cc_toolchain"),
"_enable_permissions_check": attr.label(default = "//examples:enable_permissions_check"),
diff --git a/tests/bionic/verify_bionic_outputs.sh b/tests/bionic/verify_bionic_outputs.sh
index d3cf47da..cc743039 100755
--- a/tests/bionic/verify_bionic_outputs.sh
+++ b/tests/bionic/verify_bionic_outputs.sh
@@ -57,7 +57,6 @@ function test_ld-android() {
test_filetype "${static_library}" "current ar archive"
symbols=(
- __internal_linker_error
__loader_add_thread_local_dtor
__loader_android_create_namespace
__loader_android_dlopen_ext