added and modified linker to support SuperH architecture
diff --git a/linker/linker.h b/linker/linker.h
index 69042c0..2fe61b1 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -122,6 +122,14 @@
Elf32_Rel *rel;
unsigned rel_count;
+#ifdef ANDROID_SH_LINKER
+ Elf32_Rela *plt_rela;
+ unsigned plt_rela_count;
+
+ Elf32_Rela *rela;
+ unsigned rela_count;
+#endif /* ANDROID_SH_LINKER */
+
unsigned *preinit_array;
unsigned preinit_array_count;
@@ -147,10 +155,15 @@
extern soinfo libdl_info;
/* these must all be powers of two */
+#ifdef ARCH_SH
+#define LIBBASE 0x60000000
+#define LIBLAST 0x70000000
+#define LIBINC 0x00100000
+#else
#define LIBBASE 0x80000000
#define LIBLAST 0x90000000
#define LIBINC 0x00100000
-
+#endif
#ifdef ANDROID_ARM_LINKER
@@ -167,6 +180,13 @@
#define R_386_JUMP_SLOT 7
#define R_386_RELATIVE 8
+#elif defined(ANDROID_SH_LINKER)
+
+#define R_SH_DIR32 1
+#define R_SH_GLOB_DAT 163
+#define R_SH_JUMP_SLOT 164
+#define R_SH_RELATIVE 165
+
#endif /* ANDROID_*_LINKER */
@@ -209,7 +229,7 @@
#ifdef ANDROID_ARM_LINKER
typedef long unsigned int *_Unwind_Ptr;
_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc, int *pcount);
-#elif defined(ANDROID_X86_LINKER)
+#elif defined(ANDROID_X86_LINKER) || defined(ANDROID_SH_LINKER)
int dl_iterate_phdr(int (*cb)(struct dl_phdr_info *, size_t, void *), void *);
#endif