From 5405394ecbc92baf9c45e612185ab42b1dcd0a30 Mon Sep 17 00:00:00 2001 From: Manjunath Kudlur Date: Thu, 12 May 2016 19:25:40 -0800 Subject: [PATCH] Added linker script to limit the symbols that are visible in _pywrap_tensorflow.so. Fixes #1924 Change: 122226376 --- tensorflow/tensorflow.bzl | 22 ++++++++++++++++++++-- tensorflow/tf_exported_symbols.lds | 1 + tensorflow/tf_version_script.lds | 6 ++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 tensorflow/tf_exported_symbols.lds create mode 100644 tensorflow/tf_version_script.lds diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl index 8c92443d110..0254f5139b1 100644 --- a/tensorflow/tensorflow.bzl +++ b/tensorflow/tensorflow.bzl @@ -9,7 +9,7 @@ def _parse_bazel_version(bazel_version): # as a tuple of integers. parts = version.split('-', 1) - # Turn "release" into a tuple of strings + # Turn "release" into a tuple of strings version_tuple = () for number in parts[0].split('.'): version_tuple += (str(number),) @@ -543,12 +543,30 @@ def tf_py_wrap_cc(name, srcs, swig_includes=[], deps=[], copts=[], **kwargs): deps=deps + extra_deps, module_name=module_name, py_module_name=name) + extra_linkopts = select({ + "//third_party/gpus/cuda:darwin": [ + "-Wl,-exported_symbols_list", + "//tensorflow:tf_exported_symbols.lds" + ], + "//conditions:default": [ + "-Wl,--version-script", + "//tensorflow:tf_version_script.lds" + ]}) + extra_deps += select({ + "//third_party/gpus/cuda:darwin": [ + "//tensorflow:tf_exported_symbols.lds" + ], + "//conditions:default": [ + "//tensorflow:tf_version_script.lds" + ] + }) + native.cc_binary( name=cc_library_name, srcs=[module_name + ".cc"], copts=(copts + ["-Wno-self-assign", "-Wno-write-strings"] + tf_extension_copts()), - linkopts=tf_extension_linkopts(), + linkopts=tf_extension_linkopts() + extra_linkopts, linkstatic=1, linkshared=1, deps=deps + extra_deps) diff --git a/tensorflow/tf_exported_symbols.lds b/tensorflow/tf_exported_symbols.lds new file mode 100644 index 00000000000..e02e51eae07 --- /dev/null +++ b/tensorflow/tf_exported_symbols.lds @@ -0,0 +1 @@ +*tensorflow* diff --git a/tensorflow/tf_version_script.lds b/tensorflow/tf_version_script.lds new file mode 100644 index 00000000000..61ffb8d29aa --- /dev/null +++ b/tensorflow/tf_version_script.lds @@ -0,0 +1,6 @@ +tensorflow { + global: + *tensorflow*; + local: + *; +};