Stop exporting symbols from app_process

Any symbols exported from the executable override everything else in
every linker namespace. Previously, app_process exported the
signal/sigchain API, but that interposition is now handled by
libsigchain.so.

Bug: http://b/190100879
Test: `nm -D --defined-only app_process{32,64}` shows no symbols
Change-Id: I1ab1fc700c34e91535c3e679a471debbb4eb71e3
(cherry picked from commit 6b86dfb159)
This commit is contained in:
Ryan Prichard
2021-06-04 13:24:10 -07:00
parent f34c9ede73
commit 8bc1c3484c
2 changed files with 14 additions and 1 deletions

View File

@@ -29,7 +29,16 @@ cc_binary {
},
},
ldflags: ["-Wl,--export-dynamic"],
// Symbols exported from the executable in .dynsym interpose symbols in every
// linker namespace, including an app's classloader namespace. Provide this
// version script to prevent unwanted interposition.
//
// By default, the static linker doesn't export most of an executable's symbols,
// but it will export a symbol that appears to override a symbol in a needed DSO.
// This commonly happens with C++ vaguely-linked entities, such as template
// functions or type_info variables. Hence, a version script is needed even for
// an executable.
version_script: "version-script.txt",
shared_libs: [
"libandroid_runtime",

View File

@@ -0,0 +1,4 @@
{
local:
*;
};