Android のソースコードは android2.2_r1.3 です。
./ は $ANDROID_SRC/ に読み替えて下さい。
仙石さんのところから引用
以下は、私が編集した結果です。もちろん、無保証。
linker の配置アドレスの指定で ./bionic/linker/Android.mk を修正しているが、
もっと根源的なところに値があるかも(未検索)。
$ diff -u ./system/core/mkbootimg/mkbootimg.c.orig ./system/core/mkbootimg/mkbootimg.c
--- ./system/core/mkbootimg/mkbootimg.c.orig 2010-12-22 08:03:10.408241309 +0900
+++ ./system/core/mkbootimg/mkbootimg.c 2010-12-22 08:08:45.974578153 +0900
@@ -71,7 +71,7 @@
-static unsigned char padding[2048] = { 0, };
+static unsigned char padding[4096] = { 0, };
int write_padding(int fd, unsigned pagesize, unsigned itemsize)
{
@@ -143,7 +143,7 @@
} else if(!strcmp(arg, "--base")) {
unsigned base = strtoul(val, 0, 16);
hdr.kernel_addr = base + 0x00008000;
- hdr.ramdisk_addr = base + 0x01000000;
+ hdr.ramdisk_addr = base + 0x04000000;
hdr.second_addr = base + 0x00F00000;
hdr.tags_addr = base + 0x00000100;
} else if(!strcmp(arg, "--board")) {
@@ -229,10 +229,10 @@
}
if(write(fd, &hdr, sizeof(hdr)) != sizeof(hdr)) goto fail;
- if(write_padding(fd, pagesize, sizeof(hdr))) goto fail;
+ if(write_padding(fd, pagesize*2 , sizeof(hdr))) goto fail;
if(write(fd, kernel_data, hdr.kernel_size) != hdr.kernel_size) goto fail;
- if(write_padding(fd, pagesize, hdr.kernel_size)) goto fail;
+ if(write_padding(fd, pagesize*2 , hdr.kernel_size)) goto fail;
if(write(fd, ramdisk_data, hdr.ramdisk_size) != hdr.ramdisk_size) goto fail;
if(write_padding(fd, pagesize, hdr.ramdisk_size)) goto fail;
$ diff -u ./build/tools/apriori/prelinkmap.c.orig ./build/tools/apriori/prelinkmap.c
--- ./build/tools/apriori/prelinkmap.c.orig 2010-12-22 08:21:37.298484885 +0900
+++ ./build/tools/apriori/prelinkmap.c 2010-12-22 08:24:30.069046574 +0900
@@ -24,8 +24,8 @@
prelink map, or the prelink step will fail.
*/
-#define PRELINK_MIN 0x90000000
-#define PRELINK_MAX 0xBFFFFFFF
+#define PRELINK_MIN 0x50000000
+#define PRELINK_MAX 0x6FFFFFFF
void pm_init(const char *file)
{
$ diff -u ./bionic/linker/linker.h.orig ./bionic/linker/linker.h
--- ./bionic/linker/linker.h.orig 2010-12-22 08:30:30.449743997 +0900
+++ ./bionic/linker/linker.h 2010-12-22 08:37:29.781761106 +0900
@@ -160,8 +160,8 @@
#define LIBLAST 0x70000000
#define LIBINC 0x00100000
#else
-#define LIBBASE 0x80000000
-#define LIBLAST 0x90000000
+#define LIBBASE 0x40000000
+#define LIBLAST 0x50000000
#define LIBINC 0x00100000
#endif
$ diff -u ./bionic/linker/Android.mk.orig ./bionic/linker/Android.mk
--- ./bionic/linker/Android.mk.orig 2010-12-22 19:50:33.164523760 +0900
+++ ./bionic/linker/Android.mk 2010-12-22 19:52:08.995711824 +0900
@@ -19,7 +19,7 @@
# 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
+LINKER_TEXT_BASE := 0x70001000
endif
# The maximum size set aside for the linker, from
./build/core/prelink-linux-arm.map
ほぼ全てのアドレスが変更になるので、パッチではなくファイルそのものです。
# 0x80000000 - 0xFFFFFFFF Kernel
# 0x70100000 - 0x7FFFFFFF Thread 0 Stack
# 0x70000000 - 0x700FFFFF Linker
# 0x60000000 - 0x6FFFFFFF Prelinked System Libraries
# 0x50000000 - 0x5FFFFFFF Prelinked App Libraries
# 0x40000000 - 0x4FFFFFFF Non-prelinked Libraries
# 0x2AAAAAAA - 0x3FFFFFFF mmap'd stuff
# 0x10000000 - 0x2AAAAAA9 Thread Stacks
# 0x00000000 - 0x0FFFFFFF .text / .data / heap
# Note: The general rule is that libraries should be aligned on 1MB
# boundaries. For ease of updating this file, you will find a comment
# on each line, indicating the observed size of the library, which is
# one of:
#
# [<64K] observed to be less than 64K
# [~1M] rounded up, one megabyte (similarly for other sizes)
# [???] no size observed, assumed to be one megabyte
# core system libraries
libdl.so 0x6FF00000 # [<64K]
libc.so 0x6FD00000 # [~2M]
libstdc++.so 0x6FC00000 # [<64K]
libm.so 0x6FB00000 # [~1M]
liblog.so 0x6FA00000 # [<64K]
libcutils.so 0x6F900000 # [~1M]
libthread_db.so 0x6F800000 # [<64K]
libz.so 0x6F700000 # [~1M]
libevent.so 0x6F600000 # [???]
libssl.so 0x6F400000 # [~2M]
libcrypto.so 0x6F000000 # [~4M]
libsysutils.so 0x6EF00000 # [~1M]
# bluetooth
liba2dp.so 0x6EE00000 # [~1M]
audio.so 0x6ED00000 # [~1M]
input.so 0x6EC00000 # [~1M]
libbluetoothd.so 0x6EA00000 # [~2M]
libbluedroid.so 0x6E900000 # [<64K]
libbluetooth.so 0x6E800000 # [~1M]
libdbus.so 0x6E700000 # [~1M]
# extended system libraries
libril.so 0x6E600000 # [~1M]
libreference-ril.so 0x6E500000 # [~1M]
libwpa_client.so 0x6E400000 # [<64K]
libnetutils.so 0x6E300000 # [~1M]
# core dalvik runtime support
libandroid_servers.so 0x6E200000 # [~1M]
libicuuc.so 0x6DE00000 # [~4M]
libicui18n.so 0x6D900000 # [~5M]
libandroid_runtime.so 0x6D300000 # [~6M]
libnativehelper.so 0x6D100000 # [~2M]
libdvm-ARM.so 0x6D000000 # [???]
libdvm.so 0x6CA00000 # [~6M]
# Note: libicudata.so intentionally omitted
# graphics
libpixelflinger.so 0x6C900000 # [~1M]
# libcorecg is for backward-compatibility with donut
libcorecg.so 0x6C800000 # [???]
libsurfaceflinger_client.so 0x6C700000 # [~1M]
libsurfaceflinger.so 0x6C500000 # [~2M]
libGLES_android.so 0x6C400000 # [~1M]
libagl.so 0x6C300000 # [???]
libGLESv1_CM.so 0x6C200000 # [~1M]
libGLESv2.so 0x6C100000 # [~1M]
libOpenVG_CM.so 0x6C000000 # [???]
libOpenVGU_CM.so 0x6BF00000 # [???]
libEGL.so 0x6BE00000 # [~1M]
libETC1.so 0x6BD00000 # [<64K]
libacc.so 0x6BC00000 # [~1M]
libexif.so 0x6BB00000 # [~1M]
libcamera_client.so 0x6BA80000 # [~1M]
libui.so 0x6B900000 # [~1M]
# libsgl is for backward-compatibility with donut
libsgl.so 0x6B800000 # [???]
libskia.so 0x6B100000 # [~7M]
librs_jni.so 0x6B000000 # [~1M]
libRS.so 0x69E00000 # [~2M]
libjnigraphics.so 0x69D00000 # [<64K]
libskiagl.so 0x69C00000 # [~1M]
# audio
libFLAC.so 0x69B00000 # [???]
libaudiopolicy.so 0x69A00000 # [~1M]
libaudiopolicygeneric.so 0x69900000 # [???]
libsoundpool.so 0x69800000 # [~1M]
libaudio.so 0x69700000 # [~1M]
libspeech.so 0x69600000 # [~1M]
libsonivox.so 0x69500000 # [~1M]
libvorbisidec.so 0x69400000 # [~1M]
libmedia_jni.so 0x69300000 # [~1M]
libmediaplayerservice.so 0x69200000 # [~1M]
libmedia.so 0x69000000 # [~2M]
libFFTEm.so 0x68F00000 # [~1M]
libSR_AudioIn.so 0x68E00000 # [~1M] for external/srec
libaudioflinger.so 0x68D00000 # [~1M]
# assorted system libraries
libsqlite.so 0x68B00000 # [~2M]
libexpat.so 0x68A00000 # [~1M]
libwebcore.so 0x68300000 # [~7M]
libbinder.so 0x68200000 # [~1M]
libutils.so 0x68100000 # [~1M]
libcameraservice.so 0x68000000 # [~1M]
libhardware.so 0x67F00000 # [<64K]
libhardware_legacy.so 0x67E00000 # [~1M]
libapp_process.so 0x67D00000 # [???]
libsystem_server.so 0x67C00000 # [~1M]
libime.so 0x67B00000 # [???]
libgps.so 0x67A00000 # [~1M]
libcamera.so 0x67900000 # [~1M]
liboemcamera.so 0x67700000 # [~2M]
libdiskconfig.so 0x67600000 # [<64K]
libemoji.so 0x67500000 # [<64K]
libjni_latinime.so 0x67400000 # [~1M]
libjni_pinyinime.so 0x67300000 # [~1M]
libttssynthproxy.so 0x67200000 # [~1M] for frameworks/base
libttspico.so 0x67000000 # [~2M] for external/svox
# pv libraries
libpvasf.so 0x66F00000 # [???]
libpvasfreg.so 0x66E00000 # [???]
libomx_sharedlibrary.so 0x66D00000 # [~1M]
libopencore_download.so 0x66C00000 # [~1M]
libopencore_downloadreg.so 0x66B00000 # [~1M]
libopencore_net_support.so 0x66800000 # [~3M]
libopencore_rtsp.so 0x66200000 # [~6M]
libopencore_rtspreg.so 0x66100000 # [~1M]
libopencore_author.so 0x65D00000 # [~4M]
libomx_aacdec_sharedlibrary.so 0x65B00000 # [~2M]
libomx_amrdec_sharedlibrary.so 0x65A00000 # [~1M]
libomx_amrenc_sharedlibrary.so 0x65900000 # [~1M]
libomx_avcdec_sharedlibrary.so 0x65800000 # [~1M]
libomx_avcenc_sharedlibrary.so 0x65700000 # [???]
libomx_m4vdec_sharedlibrary.so 0x65600000 # [~1M]
libomx_m4venc_sharedlibrary.so 0x65500000 # [???]
libomx_mp3dec_sharedlibrary.so 0x65400000 # [~1M]
libopencore_mp4local.so 0x65200000 # [~2M]
libopencore_mp4localreg.so 0x65100000 # [~1M]
libopencore_player.so 0x64800000 # [~9M]
# opencore hardware support
libmm-adspsvc.so 0x64700000 # [<64K]
libOmxCore.so 0x64600000 # [<64K]
libOmxMpeg4Dec.so 0x64500000 # [~1M]
libOmxH264Dec.so 0x64400000 # [~1M]
libOmxVidEnc.so 0x64300000 # [~1M]
libopencorehw.so 0x64200000 # [~1M]
libOmxVdec.so 0x64100000 # [~1M]
libmm-omxcore.so 0x64000000 # [<64K]
# pv libraries
libopencore_common.so 0x63900000 # [~7M]
libqcomm_omx.so 0x63800000 # [<64K]
# stagefright libraries
libstagefright_amrnb_common.so 0x63700000 # [~1M]
libstagefright_avc_common.so 0x63600000 # [~1M]
libstagefright_color_conversion.so 0x63500000 # [<64K]
libstagefright_omx.so 0x63400000 # [~1M]
libstagefrighthw.so 0x63300000 # [~1M]
libstagefright.so 0x62F00000 # [~4M]
# libraries for specific hardware
libgsl.so 0x62E00000 # [~1M]
libhtc_acoustic.so 0x62D00000 # [<64K]
libhtc_ril.so 0x62C00000 # [~1M]
liblvmxipc.so 0x62B00000 # [~1M] for vendor/nxp
libreference-cdma-sms.so 0x62A00000 # [<64K] for hardware/ril
# libraries for specific apps or temporary libraries
libcam_ipl.so 0x5F000000 # [???]
libwbxml.so 0x5EF00000 # [???]
libwbxml_jni.so 0x5EE00000 # [~1M]
libxml2wbxml.so 0x5EB00000 # [~1M]
libdrm1.so 0x5EA00000 # [~1M]
libdrm1_jni.so 0x5E900000 # [<64K]
libwapcore.so 0x5E800000 # [???]
libstreetview.so 0x5E700000 # [???]
libwapbrowsertest.so 0x5E600000 # [???]
libminiglobe.so 0x5E500000 # [???]
libearth.so 0x5E400000 # [???]
libembunit.so 0x5E300000 # [<64K]
libneon.so 0x5E200000 # [???]
libjni_example.so 0x5E100000 # [???]
libjni_load_test.so 0x5E000000 # [???]
libjni_lib_test.so 0x5DF00000 # [???]
librunperf.so 0x5DE00000 # [???]
libctest.so 0x5DD00000 # [<64K]
libUAPI_jni.so 0x5DC00000 # [???]
librpc.so 0x5DB00000 # [~1M]
libtrace_test.so 0x5DA00000 # [???]
libsrec_jni.so 0x5D800000 # [~2M]
libjpeg.so 0x5D700000 # [~1M]
libiprouteutil.so 0x5D600000 # [~1M] for external/iproute2
libnetlink.so 0x5D500000 # [<64K] for external/iproute2
libpagemap.so 0x5D400000 # [<64K] for system/extras/libpagemap
libstlport.so 0x5D100000 # [~3M] for external/stlport
libzxing.so 0x5D000000 # [<64K] for goggles
libinterstitial.so 0x5CF00000 # [<64K] for goggles
liblept.so 0x5CA00000 # [~5M] for external/leptonica
コメント、突っ込み、間違い指摘、要望受付中
最終更新:2010年12月23日 03:05