Elf32_Dyn *dynamicTab = NULL; // Dynamic Table Pointer\r
char *dynstrtab = NULL; // .dynamic String Table\r
Elf32_Sym *dynsymtab = NULL;\r
+ int bFailed = 0;\r
\r
ENTER("pBase", Base);\r
\r
{\r
ptr = (void*)(iBaseDiff + rel[i].r_offset);\r
if( !Elf_Int_DoRelocate(rel[i].r_info, ptr, *ptr, dynsymtab, (Uint)Base) ) {\r
- LEAVE('x', 0);\r
- return 0;\r
+ bFailed = 1;\r
}\r
}\r
}\r
{\r
ptr = (void*)(iBaseDiff + rela[i].r_offset);\r
if( !Elf_Int_DoRelocate(rel[i].r_info, ptr, rela[i].r_addend, dynsymtab, (Uint)Base) ) {\r
- LEAVE('x', 0);\r
- return 0;\r
+ bFailed = 1;\r
}\r
}\r
}\r
{\r
ptr = (void*)(iBaseDiff + pltRel[i].r_offset);\r
if( !Elf_Int_DoRelocate(pltRel[i].r_info, ptr, *ptr, dynsymtab, (Uint)Base) ) {\r
- LEAVE('x', 0);\r
- return 0;\r
+ bFailed = 1;\r
}\r
}\r
}\r
{\r
ptr = (void*)((Uint)Base + pltRela[i].r_offset);\r
if( !Elf_Int_DoRelocate(pltRela[i].r_info, ptr, pltRela[i].r_addend, dynsymtab, (Uint)Base) ) {\r
- LEAVE('x', 0);\r
- return 0;\r
+ bFailed = 1;\r
}\r
}\r
}\r
}\r
\r
+ if(bFailed) {\r
+ LEAVE('i', 0);\r
+ return 0;\r
+ }\r
+ \r
LEAVE('x', hdr->entrypoint);\r
return hdr->entrypoint;\r
}\r