[freedos-32-commit] SF.net SVN: freedos-32: [853] trunk/fd32
Status: Pre-Alpha
Brought to you by:
salvois
From: <ha...@us...> - 2006-12-21 10:15:52
|
Revision: 853 http://svn.sourceforge.net/freedos-32/?rev=853&view=rev Author: hanzac Date: 2006-12-21 02:15:52 -0800 (Thu, 21 Dec 2006) Log Message: ----------- ELF object need not the global symbol address fix so identify it Modified Paths: -------------- trunk/fd32/dynalink/common.c trunk/fd32/dynalink/elf.c trunk/fd32/include/format.h Modified: trunk/fd32/dynalink/common.c =================================================================== --- trunk/fd32/dynalink/common.c 2006-12-21 07:15:00 UTC (rev 852) +++ trunk/fd32/dynalink/common.c 2006-12-21 10:15:52 UTC (rev 853) @@ -31,7 +31,10 @@ for (i = 0; i < tables->num_symbols; i++) { if (syms[i].section == COMMON_SYMBOL) { j = syms[i].offset; - syms[i].offset = global_data-j; + if (!(tables->flags&ELF_OBJECT)) /* NOTE: COFF & ELF objects only */ + syms[i].offset = global_data - j; + else + syms[i].offset = global_data; global_data += j; } else if (syms[i].section == EXTERN_SYMBOL) { #ifdef __COFF_DEBUG__ Modified: trunk/fd32/dynalink/elf.c =================================================================== --- trunk/fd32/dynalink/elf.c 2006-12-21 07:15:00 UTC (rev 852) +++ trunk/fd32/dynalink/elf.c 2006-12-21 10:15:52 UTC (rev 853) @@ -33,7 +33,7 @@ return 0; } - tables->flags = 0; + tables->flags = ELF_OBJECT; if (header.e_ident[4] != ELFCLASS32) { kf->error("Wrong ELF class\n"); kf->message("Class: 0x%x!!!\n", header.e_ident[4]); Modified: trunk/fd32/include/format.h =================================================================== --- trunk/fd32/include/format.h 2006-12-21 07:15:00 UTC (rev 852) +++ trunk/fd32/include/format.h 2006-12-21 10:15:52 UTC (rev 853) @@ -19,7 +19,8 @@ #define NEED_IMAGE_RELOCATION 1 #define NEED_SECTION_RELOCATION 2 #define NEED_LOAD_RELOCATABLE 4 -#define NO_ENTRY 16 +#define ELF_OBJECT 8 +#define NO_ENTRY 16 #define DLL_WITH_STDCALL 32 /* module formats */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |