Fixed Double-Relocation in modules.c (edited bin/elf.c to find this)
authorJohn Hodge <tpg@prelude.(none)>
Fri, 15 Jan 2010 15:41:34 +0000 (23:41 +0800)
committerJohn Hodge <tpg@prelude.(none)>
Fri, 15 Jan 2010 15:41:34 +0000 (23:41 +0800)
Kernel/Makefile.BuildNum
Kernel/bin/elf.c
Kernel/modules.c

index f432c25..87dafb4 100644 (file)
@@ -1 +1 @@
-BUILD_NUM = 1339
+BUILD_NUM = 1342
index 9381b5c..4bc13b1 100644 (file)
@@ -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
index 93de973..a206cf9 100644 (file)
@@ -156,7 +156,6 @@ int Module_LoadFile(char *Path, char *ArgString)
                // Check for EDI Driver
                if( Binary_FindSymbol(base, "driver_init", NULL ) != 0 )
                {
-                       Binary_Relocate(base);  // Relocate
                        return Module_InitEDI( base );  // And intialise
                }
                #endif
@@ -164,7 +163,6 @@ int Module_LoadFile(char *Path, char *ArgString)
                #if USE_UDI
                if( Binary_FindSymbol(base, "udi_init_info", NULL ) != 0 )
                {
-                       Binary_Relocate(base);  // Relocate
                        return UDI_LoadDriver( base );  // And intialise
                }
                #endif

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