unsigned int dyn_offset, dyn_size;
unsigned int load_offset, load_vaddr;
unsigned int interp_offset;
+#if defined(__mips__) && (__mips == 64)
+ static int gcc_mips64_bug_work_around;
+ gcc_mips64_bug_work_around = 1;
+#endif
if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) {
ERROR("failed to load the .load section from %s\n", path);
return -1;
int clazz = map[EI_CLASS];
+#if defined(__mips__) && (__mips == 64)
+ if (gcc_mips64_bug_work_around != 1) {
+ ERROR("compiler bug: GCC for MIPS64 should be fixed!\n");
+ return -1;
+ }
+ gcc_mips64_bug_work_around = 0;
+#endif
+
if (clazz == ELFCLASS32)
return elf32_scan_dynamic(map, dyn_offset, dyn_size, load_vaddr - load_offset);
else if (clazz == ELFCLASS64)