}\r
\r
// Read Program Header Table\r
- phtab = malloc(sizeof(Elf32_Phdr)*hdr.phentcount);\r
+ phtab = malloc( sizeof(Elf32_Phdr) * hdr.phentcount );\r
+ if( !phtab ) {\r
+ LEAVE('n');\r
+ return NULL;\r
+ }\r
+ LOG("hdr.phoff = 0x%08x", hdr.phoff);\r
VFS_Seek(fp, hdr.phoff, SEEK_SET);\r
VFS_Read(fp, sizeof(Elf32_Phdr)*hdr.phentcount, phtab);\r
\r
for( i = 0; i < hdr.phentcount; i++ )\r
{\r
int lastSize;\r
- LOG("phtab[%i].Type = 0x%x", i, phtab[i].Type);\r
+ //LOG("phtab[%i].Type = 0x%x", i, phtab[i].Type);\r
+ LOG("phtab[%i] = {", i);\r
+ LOG(" .Type = 0x%08x", phtab[i].Type);\r
+ LOG(" .Offset = 0x%08x", phtab[i].Offset);\r
+ LOG(" .VAddr = 0x%08x", phtab[i].VAddr);\r
+ LOG(" .PAddr = 0x%08x", phtab[i].PAddr);\r
+ LOG(" .FileSize = 0x%08x", phtab[i].FileSize);\r
+ LOG(" .MemSize = 0x%08x", phtab[i].MemSize);\r
+ LOG(" .Flags = 0x%08x", phtab[i].Flags);\r
+ LOG(" .Align = 0x%08x", phtab[i].Align);\r
+ LOG(" }");\r
// Get Interpreter Name\r
if( phtab[i].Type == PT_INTERP )\r
{\r
Warning("ELF", "Elf_Relocate - Multiple PT_DYNAMIC segments\n");\r
continue;\r
}\r
- dynamicTab = (void *) phtab[i].VAddr;\r
+ dynamicTab = (void *) (tVAddr) phtab[i].VAddr;\r
j = i; // Save Dynamic Table ID\r
break;\r
}\r
// --- Symbol Table ---\r
case DT_SYMTAB:\r
dynamicTab[j].d_val += iBaseDiff;\r
- dynsymtab = (void*)(dynamicTab[j].d_val);\r
+ dynsymtab = (void*) (tVAddr) dynamicTab[j].d_val;\r
hdr->misc.SymTable = dynamicTab[j].d_val; // Saved in unused bytes of ident\r
break;\r
\r
// --- String Table ---\r
case DT_STRTAB:\r
dynamicTab[j].d_val += iBaseDiff;\r
- dynstrtab = (void*)(dynamicTab[j].d_val);\r
+ dynstrtab = (void*) (tVAddr) dynamicTab[j].d_val;\r
break;\r
\r
// --- Hash Table --\r
case DT_HASH:\r
dynamicTab[j].d_val += iBaseDiff;\r
- iSymCount = ((Uint*)(dynamicTab[j].d_val))[1];\r
+ iSymCount = ((Uint*)((tVAddr)dynamicTab[j].d_val))[1];\r
hdr->misc.HashTable = dynamicTab[j].d_val; // Saved in unused bytes of ident\r
break;\r
}\r