diff options
author | Lukács T. Berki <lberki@google.com> | 2021-05-12 21:13:17 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-05-12 21:13:17 +0000 |
commit | d7b008ea626a3bbfa20bbeb479334248602310b2 (patch) | |
tree | 6a30bb7064485f63037a08ddb185c39ca416e9ea | |
parent | 49af5db0270697c1cc4b4348db47a88c93c87384 (diff) | |
parent | 6a8498e2e49dee21383922ca367fea08bfdcbae0 (diff) | |
download | bazel-d7b008ea626a3bbfa20bbeb479334248602310b2.tar.gz |
Merge "Re-implement version_script in cc_library_shared." am: 5e791e1db9 am: 92253d86fd am: 6a8498e2e4
Original change: https://android-review.googlesource.com/c/platform/build/bazel/+/1705370
Change-Id: Ifc7b3dff42fef8f44bbf12e30f9f56f8a299f93a
-rw-r--r-- | rules/full_cc_library.bzl | 7 | ||||
-rw-r--r-- | rules_cc/examples/experimental_cc_shared_library.bzl | 16 | ||||
-rwxr-xr-x | tests/bionic/verify_bionic_outputs.sh | 1 |
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 |