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:
@@ -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",
|
||||
|
||||
4
cmds/app_process/version-script.txt
Normal file
4
cmds/app_process/version-script.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
local:
|
||||
*;
|
||||
};
|
||||
Reference in New Issue
Block a user