Restructured Modules_LoadBuiltins to load modules in the order they are linked in.
[tpg/acess2.git] / Kernel / bin / elf.c
index 6719a41..4bc13b1 100644 (file)
@@ -3,7 +3,7 @@
  * ELF Executable Loader Code\r
  */\r
 #define DEBUG  0\r
-#include <common.h>\r
+#include <acess.h>\r
 #include <binary.h>\r
 #include "elf.h"\r
 \r
@@ -461,7 +461,7 @@ int Elf_Int_DoRelocate(Uint r_info, Uint32 *ptr, Uint32 addend, Elf32_Sym *symta
                if( !Elf_GetSymbol((void*)base, sSymName, &val) )       // Search this binary first\r
                        if( !Binary_GetSymbol( sSymName, &val ) )\r
                                return 0;\r
-               //LOG("R_386_32 *0x%x += 0x%x('%s')", ptr, val, sSymName);\r
+               LOG("R_386_32 *0x%x += 0x%x('%s')", ptr, val, sSymName);\r
                *ptr = val + addend;\r
                break;\r
                \r
@@ -470,7 +470,7 @@ int Elf_Int_DoRelocate(Uint r_info, Uint32 *ptr, Uint32 addend, Elf32_Sym *symta
                if( !Elf_GetSymbol( (void*)base, sSymName, &val ) )\r
                        if( !Binary_GetSymbol( sSymName, &val ) )\r
                                return 0;\r
-               //LOG("R_386_PC32 *0x%x = 0x%x + 0x%x('%s') - 0x%x", ptr, *ptr, val, sSymName, (Uint)ptr );\r
+               LOG("R_386_PC32 *0x%x = 0x%x + 0x%x('%s') - 0x%x", ptr, *ptr, val, sSymName, (Uint)ptr );\r
                // TODO: Check if it needs the true value of ptr or the compiled value\r
                // NOTE: Testing using true value\r
                *ptr = val + addend - (Uint)ptr;\r
@@ -481,7 +481,7 @@ int Elf_Int_DoRelocate(Uint r_info, Uint32 *ptr, Uint32 addend, Elf32_Sym *symta
                if( !Elf_GetSymbol( (void*)base, sSymName, &val ) )\r
                        if( !Binary_GetSymbol( sSymName, &val ) )\r
                                return 0;\r
-               //LOG("R_386_GLOB_DAT *0x%x = 0x%x (%s)", ptr, val, sSymName);\r
+               LOG("R_386_GLOB_DAT *0x%x = 0x%x (%s)", ptr, val, sSymName);\r
                *ptr = val;\r
                break;\r
        \r
@@ -490,13 +490,13 @@ int Elf_Int_DoRelocate(Uint r_info, Uint32 *ptr, Uint32 addend, Elf32_Sym *symta
                if( !Elf_GetSymbol( (void*)base, sSymName, &val ) )\r
                        if( !Binary_GetSymbol( sSymName, &val ) )\r
                                return 0;\r
-               //LOG("R_386_JMP_SLOT *0x%x = 0x%x (%s)", ptr, val, sSymName);\r
+               LOG("R_386_JMP_SLOT *0x%x = 0x%x (%s)", ptr, val, sSymName);\r
                *ptr = val;\r
                break;\r
 \r
        // Base Address (B+A)\r
        case R_386_RELATIVE:\r
-               //LOG("R_386_RELATIVE *0x%x = 0x%x + 0x%x", ptr, base, addend);\r
+               LOG("R_386_RELATIVE *0x%x = 0x%x + 0x%x", ptr, base, addend);\r
                *ptr = base + addend;\r
                break;\r
                \r
@@ -539,7 +539,7 @@ int Elf_GetSymbol(void *Base, char *Name, Uint *ret)
        // Check Bucket\r
        i = pBuckets[ iNameHash ];\r
        if(symtab[i].shndx != SHN_UNDEF && strcmp(symtab[i].name, Name) == 0) {\r
-               *ret = symtab[ i ].value;\r
+               if(ret) *ret = symtab[ i ].value;\r
                return 1;\r
        }\r
        \r
@@ -548,7 +548,7 @@ int Elf_GetSymbol(void *Base, char *Name, Uint *ret)
        {\r
                i = pChains[i];\r
                if(symtab[i].shndx != SHN_UNDEF && strcmp(symtab[ i ].name, Name) == 0) {\r
-                       *ret = symtab[ i ].value;\r
+                       if(ret) *ret = symtab[ i ].value;\r
                        return 1;\r
                }\r
        }\r

UCC git Repository :: git.ucc.asn.au