summaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2014-10-06 15:11:28 -0700
committerChristopher Ferris <cferris@google.com>2014-10-06 16:41:46 -0700
commit6869d26ad9f0e42f7b8ca0a8a331e6119759d211 (patch)
treef55f73366613064b0cebbc046649c156c68dc28d /libc
parentb5cba6081bc9179d3ea2aa1bfd77dd8de1c88525 (diff)
downloadbionic-6869d26ad9f0e42f7b8ca0a8a331e6119759d211.zip
bionic-6869d26ad9f0e42f7b8ca0a8a331e6119759d211.tar.gz
bionic-6869d26ad9f0e42f7b8ca0a8a331e6119759d211.tar.bz2
Force export symbols on all x86 variants in libc.
For silvermont, the __popcountsi2 symbol does not get exported by libc. But for atom, this symbol is exported. Since we already exported this symbol for previous releases, it's better to just follow through and force the export, but only for 32 bit. x86 64 bit will not export this symbol. Bug: 17681440 (cherry picked from commit d11eac3455a059a092ceee92eda9905e1d661e94) Change-Id: I93704c721d98d569922f606f214069bda24872ba
Diffstat (limited to 'libc')
-rw-r--r--libc/arch-x86/bionic/libgcc_compat.c15
-rw-r--r--libc/arch-x86/x86.mk1
-rwxr-xr-xlibc/tools/genlibgcc_compat.py11
3 files changed, 22 insertions, 5 deletions
diff --git a/libc/arch-x86/bionic/libgcc_compat.c b/libc/arch-x86/bionic/libgcc_compat.c
new file mode 100644
index 0000000..c723263
--- /dev/null
+++ b/libc/arch-x86/bionic/libgcc_compat.c
@@ -0,0 +1,15 @@
+/* Generated by genlibgcc_compat.py */
+
+extern char __divdi3;
+extern char __moddi3;
+extern char __popcountsi2;
+extern char __udivdi3;
+extern char __umoddi3;
+
+void* __bionic_libgcc_compat_symbols[] = {
+ &__divdi3,
+ &__moddi3,
+ &__popcountsi2,
+ &__udivdi3,
+ &__umoddi3,
+};
diff --git a/libc/arch-x86/x86.mk b/libc/arch-x86/x86.mk
index 9f2188c..e73ed1d 100644
--- a/libc/arch-x86/x86.mk
+++ b/libc/arch-x86/x86.mk
@@ -38,6 +38,7 @@ libc_freebsd_src_files_x86 += \
libc_bionic_src_files_x86 += \
arch-x86/bionic/__bionic_clone.S \
arch-x86/bionic/_exit_with_stack_teardown.S \
+ arch-x86/bionic/libgcc_compat.c \
arch-x86/bionic/__restore_rt.S \
arch-x86/bionic/__restore.S \
arch-x86/bionic/_setjmp.S \
diff --git a/libc/tools/genlibgcc_compat.py b/libc/tools/genlibgcc_compat.py
index cb5c3b3..628bf92 100755
--- a/libc/tools/genlibgcc_compat.py
+++ b/libc/tools/genlibgcc_compat.py
@@ -76,9 +76,6 @@ libgcc_compat_header = "/* Generated by genlibgcc_compat.py */\n\n"
class Generator:
def process(self):
android_build_top_path = os.environ["ANDROID_BUILD_TOP"]
- build_path = android_build_top_path + "/bionic/libc"
- file_name = "libgcc_compat.c"
- file_path = build_path + "/arch-arm/bionic/" + file_name
print "* ANDROID_BUILD_TOP=" + android_build_top_path
@@ -86,8 +83,12 @@ class Generator:
arch = subprocess.check_output(["CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core make --no-print-directory -f build/core/config.mk dumpvar-TARGET_ARCH"],
cwd=android_build_top_path, shell=True).strip()
- if arch != 'arm':
- sys.exit("Error: Invalid TARGET_ARCH='" + arch + "' expecting 'arm'")
+ if arch != 'arm' and arch != 'x86':
+ sys.exit("Error: Invalid TARGET_ARCH='" + arch + "' expecting 'arm' or 'x86'")
+
+ build_path = android_build_top_path + "/bionic/libc"
+ file_name = "libgcc_compat.c"
+ file_path = build_path + "/arch-" + arch + "/bionic/" + file_name
build_output_file_path = tempfile.mkstemp()[1]