aboutsummaryrefslogtreecommitdiffstats
path: root/linker
diff options
context:
space:
mode:
Diffstat (limited to 'linker')
-rw-r--r--linker/Android.mk13
-rw-r--r--linker/linker.c2
-rw-r--r--linker/linker.h4
3 files changed, 18 insertions, 1 deletions
diff --git a/linker/Android.mk b/linker/Android.mk
index 52f7ce3b1..0cbaf366a 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -14,12 +14,17 @@ ifeq ($(TARGET_ARCH),sh)
# SH-4A series virtual address range from 0x00000000 to 0x7FFFFFFF.
LINKER_TEXT_BASE := 0x70000100
else
+ifneq ($(TARGET_USES_2G_VM_SPLIT),true)
# This is aligned to 4K page boundary so that both GNU ld and gold work. Gold
# actually produces a correct binary with starting address 0xB0000100 but the
# extra objcopy step to rename symbols causes the resulting binary to be misaligned
# and unloadable. Increasing the alignment adds an extra 3840 bytes in padding
# but switching to gold saves about 1M of space.
LINKER_TEXT_BASE := 0xB0001000
+else
+LINKER_TEXT_BASE := 0x70001000
+LOCAL_CFLAGS += -DVM_SPLIT_2G
+endif
endif
# The maximum size set aside for the linker, from
@@ -42,6 +47,14 @@ LOCAL_CFLAGS += -DLINKER_DEBUG=0
ifeq ($(TARGET_ARCH)-$(ARCH_ARM_HAVE_TLS_REGISTER),arm-true)
LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
endif
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
+
+ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
+ LOCAL_CFLAGS += -DHAVE_TEGRA_ERRATA_657451
+endif
+
LOCAL_CFLAGS += -I$(LOCAL_PATH)/../libc/private
ifeq ($(TARGET_ARCH),arm)
diff --git a/linker/linker.c b/linker/linker.c
index 42a5205b3..bb31703bf 100644
--- a/linker/linker.c
+++ b/linker/linker.c
@@ -53,7 +53,7 @@
#include "ba.h"
#define ALLOW_SYMBOLS_FROM_MAIN 1
-#define SO_MAX 96
+#define SO_MAX 128
/* Assume average path length of 64 and max 8 paths */
#define LDPATH_BUFSIZE 512
diff --git a/linker/linker.h b/linker/linker.h
index 68ac275c4..85969736a 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -159,6 +159,10 @@ extern soinfo libdl_info;
#define LIBBASE 0x60000000
#define LIBLAST 0x70000000
#define LIBINC 0x00100000
+#elif defined(VM_SPLIT_2G)
+#define LIBBASE 0x40000000
+#define LIBLAST 0x50000000
+#define LIBINC 0x00100000
#else
#define LIBBASE 0x80000000
#define LIBLAST 0x90000000