diff options
author | Dmitriy Ivanov <dimitry@google.com> | 2015-01-07 15:05:49 -0800 |
---|---|---|
committer | Dmitriy Ivanov <dimitry@google.com> | 2015-01-07 16:32:05 -0800 |
commit | bfa15e464ecfb43d93e468f166d91e4e6265f300 (patch) | |
tree | 4e6d54ea790dcac6fe2f9fabae686ed65d5d5636 /linker/linker.cpp | |
parent | d3de1ddef1427708581af4df02943486783f980d (diff) | |
download | android_bionic-bfa15e464ecfb43d93e468f166d91e4e6265f300.tar.gz android_bionic-bfa15e464ecfb43d93e468f166d91e4e6265f300.tar.bz2 android_bionic-bfa15e464ecfb43d93e468f166d91e4e6265f300.zip |
Set linux 32bit personality for 32 bit processes
Bug: 18069809
Change-Id: Ie143d56b0f8f03510dc451649291067e1add1d2f
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r-- | linker/linker.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index babefeb3c..b8a88004d 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -36,6 +36,7 @@ #include <string.h> #include <sys/mman.h> #include <sys/param.h> +#include <sys/personality.h> #include <unistd.h> #include <new> @@ -2663,6 +2664,12 @@ static ElfW(Addr) __linker_init_post_relocation(KernelArgumentBlock& args, ElfW( ldpreload_env = linker_env_get("LD_PRELOAD"); } +#if !defined(__LP64__) + if (personality(PER_LINUX32) == -1) { + __libc_fatal("error setting PER_LINUX32 personality: %s", strerror(errno)); + } +#endif + INFO("[ android linker & debugger ]"); soinfo* si = soinfo_alloc(args.argv[0], nullptr, 0, RTLD_GLOBAL); |