summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPriya Komarlingam <knspriya@quicinc.com>2010-01-23 10:35:47 -0800
committerPriya Komarlingam <knspriya@quicinc.com>2010-01-23 10:35:47 -0800
commit1c858fdd72aa34801775a1d18742af0c1bdfe32b (patch)
treee461e4800fae5c99f123dd2adc8c430ae18c4577
parent3d4f4ea68af02e4d311812bf7dc6830bba293739 (diff)
parenta809abb086b5cb5cd5545048b12f64b899c6a253 (diff)
downloadbionic-1c858fdd72aa34801775a1d18742af0c1bdfe32b.zip
bionic-1c858fdd72aa34801775a1d18742af0c1bdfe32b.tar.gz
bionic-1c858fdd72aa34801775a1d18742af0c1bdfe32b.tar.bz2
Merge commit 'quic/korg/eclair' into eclair-2.1-merge-rebase
Conflicts: libc/kernel/common/linux/msm_kgsl.h
-rw-r--r--libc/zoneinfo/zoneinfo.datbin169880 -> 168809 bytes
-rw-r--r--libc/zoneinfo/zoneinfo.idxbin29016 -> 29172 bytes
-rw-r--r--libc/zoneinfo/zoneinfo.version2
-rw-r--r--linker/linker.c7
-rw-r--r--linker/linker.h13
5 files changed, 15 insertions, 7 deletions
diff --git a/libc/zoneinfo/zoneinfo.dat b/libc/zoneinfo/zoneinfo.dat
index e5bf25a..c9f0b6f 100644
--- a/libc/zoneinfo/zoneinfo.dat
+++ b/libc/zoneinfo/zoneinfo.dat
Binary files differ
diff --git a/libc/zoneinfo/zoneinfo.idx b/libc/zoneinfo/zoneinfo.idx
index 78a3650..cb560db 100644
--- a/libc/zoneinfo/zoneinfo.idx
+++ b/libc/zoneinfo/zoneinfo.idx
Binary files differ
diff --git a/libc/zoneinfo/zoneinfo.version b/libc/zoneinfo/zoneinfo.version
index 289c5d1..57a3708 100644
--- a/libc/zoneinfo/zoneinfo.version
+++ b/libc/zoneinfo/zoneinfo.version
@@ -1 +1 @@
-2007h
+2009s
diff --git a/linker/linker.c b/linker/linker.c
index 5090b11..80b5d00 100644
--- a/linker/linker.c
+++ b/linker/linker.c
@@ -1294,6 +1294,13 @@ static int reloc_library(soinfo *si, Elf32_Rel *rel, unsigned count)
reloc, sym_addr, sym_name);
*((unsigned*)reloc) += sym_addr;
break;
+ case R_ARM_REL32:
+ COUNT_RELOC(RELOC_RELATIVE);
+ MARK(rel->r_offset);
+ TRACE_TYPE(RELO, "%5d RELO REL32 %08x <- %08x - %08x %s\n", pid,
+ reloc, sym_addr, rel->r_offset, sym_name);
+ *((unsigned*)reloc) += sym_addr - rel->r_offset;
+ break;
#elif defined(ANDROID_X86_LINKER)
case R_386_JUMP_SLOT:
COUNT_RELOC(RELOC_ABSOLUTE);
diff --git a/linker/linker.h b/linker/linker.h
index 196a6f2..d334ece 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -159,6 +159,13 @@ extern soinfo libdl_info;
#define R_ARM_JUMP_SLOT 22
#define R_ARM_RELATIVE 23
+/* According to the AAPCS specification, we only
+ * need the above relocations. However, in practice,
+ * the following ones turn up from time to time.
+ */
+#define R_ARM_ABS32 2
+#define R_ARM_REL32 3
+
#elif defined(ANDROID_X86_LINKER)
#define R_386_32 1
@@ -194,12 +201,6 @@ extern soinfo libdl_info;
#define DT_PREINIT_ARRAYSZ 33
#endif
-/* in theory we only need the above relative relocations,
- but in practice the following one turns up from time
- to time. fushigi na.
-*/
-#define R_ARM_ABS32 2
-
soinfo *find_library(const char *name);
unsigned unload_library(soinfo *si);
Elf32_Sym *lookup_in_library(soinfo *si, const char *name);