Generate libdl.so per-architecture version script

Bug: http://b/24767418
Change-Id: I3d5775ba44d4c8e7fc5f2fbebae10e022100f1e2
This commit is contained in:
Dmitriy Ivanov 2015-10-30 17:43:27 -07:00
parent e75453d5dd
commit bc75047a1b
9 changed files with 145 additions and 5 deletions

View file

@ -12,8 +12,10 @@ import tempfile
all_arches = ["arm", "arm64", "mips", "mips64", "x86", "x86_64"] all_arches = ["arm", "arm64", "mips", "mips64", "x86", "x86_64"]
bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc") bionic_libc_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libc")
bionic_libm_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libm") bionic_libm_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libm")
bionic_libdl_root = os.path.join(os.environ["ANDROID_BUILD_TOP"], "bionic/libdl")
libc_script = os.path.join(bionic_libc_root, "libc.map.txt") libc_script = os.path.join(bionic_libc_root, "libc.map.txt")
libm_script = os.path.join(bionic_libm_root, "libm.map.txt") libm_script = os.path.join(bionic_libm_root, "libm.map.txt")
libdl_script = os.path.join(bionic_libdl_root, "libdl.map.txt")
# TODO (dimity): generate architecture-specific version scripts as part of build # TODO (dimity): generate architecture-specific version scripts as part of build
@ -30,7 +32,7 @@ warning = "Generated by genversionscripts.py. Do not edit."
class VersionScriptGenerator(object): class VersionScriptGenerator(object):
def run(self): def run(self):
for script in [libc_script, libm_script]: for script in [libc_script, libm_script, libdl_script]:
basename = os.path.basename(script) basename = os.path.basename(script)
dirname = os.path.dirname(script) dirname = os.path.dirname(script)
for arch in all_arches: for arch in all_arches:

View file

@ -15,12 +15,19 @@ include $(CLEAR_VARS)
# #
# DO NOT REMOVE --exclude-libs! # DO NOT REMOVE --exclude-libs!
LOCAL_LDFLAGS := -Wl,--exclude-libs=libgcc.a -Wl,--version-script=$(LOCAL_PATH)/libdl.map LOCAL_LDFLAGS := -Wl,--exclude-libs=libgcc.a
# for x86, exclude libgcc_eh.a for the same reasons as above # for x86, exclude libgcc_eh.a for the same reasons as above
LOCAL_LDFLAGS_x86 := -Wl,--exclude-libs=libgcc_eh.a LOCAL_LDFLAGS_x86 := -Wl,--exclude-libs=libgcc_eh.a
LOCAL_LDFLAGS_x86_64 := $(LOCAL_LDFLAGS_x86) LOCAL_LDFLAGS_x86_64 := $(LOCAL_LDFLAGS_x86)
LOCAL_LDFLAGS_arm += -Wl,--version-script=$(LOCAL_PATH)/libdl.arm.map
LOCAL_LDFLAGS_arm64 += -Wl,--version-script=$(LOCAL_PATH)/libdl.arm64.map
LOCAL_LDFLAGS_mips += -Wl,--version-script=$(LOCAL_PATH)/libdl.mips.map
LOCAL_LDFLAGS_mips64 += -Wl,--version-script=$(LOCAL_PATH)/libdl.mips64.map
LOCAL_LDFLAGS_x86 += -Wl,--version-script=$(LOCAL_PATH)/libdl.x86.map
LOCAL_LDFLAGS_x86_64 += -Wl,--version-script=$(LOCAL_PATH)/libdl.x86_64.map
LOCAL_SRC_FILES:= libdl.c LOCAL_SRC_FILES:= libdl.c
LOCAL_CFLAGS := -Wall -Wextra -Wunused -Werror LOCAL_CFLAGS := -Wall -Wextra -Wunused -Werror
LOCAL_CXX_STL := none LOCAL_CXX_STL := none

23
libdl/libdl.arm.map Normal file
View file

@ -0,0 +1,23 @@
# Generated by genversionscripts.py. Do not edit.
LIBC {
global:
android_dlopen_ext;
dl_iterate_phdr;
dl_unwind_find_exidx; # arm
dladdr;
dlclose;
dlerror;
dlopen;
dlsym;
local:
*;
};
LIBC_PRIVATE {
global:
android_get_application_target_sdk_version;
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
} LIBC;

22
libdl/libdl.arm64.map Normal file
View file

@ -0,0 +1,22 @@
# Generated by genversionscripts.py. Do not edit.
LIBC {
global:
android_dlopen_ext;
dl_iterate_phdr;
dladdr;
dlclose;
dlerror;
dlopen;
dlsym;
local:
*;
};
LIBC_PRIVATE {
global:
android_get_application_target_sdk_version;
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
} LIBC;

View file

@ -18,9 +18,7 @@ LIBC {
global: global:
android_dlopen_ext; android_dlopen_ext;
dl_iterate_phdr; dl_iterate_phdr;
# begin arm-only dl_unwind_find_exidx; # arm
dl_unwind_find_exidx;
# end arm-only
dladdr; dladdr;
dlclose; dlclose;
dlerror; dlerror;

22
libdl/libdl.mips.map Normal file
View file

@ -0,0 +1,22 @@
# Generated by genversionscripts.py. Do not edit.
LIBC {
global:
android_dlopen_ext;
dl_iterate_phdr;
dladdr;
dlclose;
dlerror;
dlopen;
dlsym;
local:
*;
};
LIBC_PRIVATE {
global:
android_get_application_target_sdk_version;
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
} LIBC;

22
libdl/libdl.mips64.map Normal file
View file

@ -0,0 +1,22 @@
# Generated by genversionscripts.py. Do not edit.
LIBC {
global:
android_dlopen_ext;
dl_iterate_phdr;
dladdr;
dlclose;
dlerror;
dlopen;
dlsym;
local:
*;
};
LIBC_PRIVATE {
global:
android_get_application_target_sdk_version;
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
} LIBC;

22
libdl/libdl.x86.map Normal file
View file

@ -0,0 +1,22 @@
# Generated by genversionscripts.py. Do not edit.
LIBC {
global:
android_dlopen_ext;
dl_iterate_phdr;
dladdr;
dlclose;
dlerror;
dlopen;
dlsym;
local:
*;
};
LIBC_PRIVATE {
global:
android_get_application_target_sdk_version;
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
} LIBC;

22
libdl/libdl.x86_64.map Normal file
View file

@ -0,0 +1,22 @@
# Generated by genversionscripts.py. Do not edit.
LIBC {
global:
android_dlopen_ext;
dl_iterate_phdr;
dladdr;
dlclose;
dlerror;
dlopen;
dlsym;
local:
*;
};
LIBC_PRIVATE {
global:
android_get_application_target_sdk_version;
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
} LIBC;