make change to support UnixPkg build. The changes are listed as follows:

1. change ASM_PFX() macro, the underscore preceding to function symbol don't be added in Linux.
2. move some illegal characters in .S file.
3. change ELFGCC flag in tools_def.template to support Linux&ELFGCC build

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5381 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
eric_tian 2008-06-30 05:50:49 +00:00
parent 804405e7d1
commit ed0b86b183
3 changed files with 16 additions and 10 deletions

View File

@ -500,10 +500,12 @@ RELEASE_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT
*_ELFGCC_IA32_ASM_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_IA32_ASM_PATH = DEF(ELFGCC_BIN)/gcc
*_ELFGCC_IA32_PP_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_IA32_PP_PATH = DEF(ELFGCC_BIN)/gcc
*_ELFGCC_IA32_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_IA32_VFRPP_PATH = DEF(ELFGCC_BIN)/gcc
*_ELFGCC_*_MAKE_PATH = make
*_ELFGCC_*_MAKE_FLAGS = -i
*_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings *_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
*_ELFGCC_*_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) *_ELFGCC_*_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT)
*_ELFGCC_*_ASM_FLAGS = -m32 -c -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_*_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
*_ELFGCC_*_PP_FLAGS = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_*_PP_FLAGS = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
*_ELFGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h *_ELFGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h

View File

@ -27,26 +27,26 @@
; ;
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
*/ */
@VectorTemplateBase: VectorTemplateBase:
pushl %eax pushl %eax
.byte 0x6a # push #VectorNum .byte 0x6a # push #VectorNum
@VectorNum: VectorNum:
.byte 0 .byte 0
movl CommonInterruptEntry, %eax movl CommonInterruptEntry, %eax
jmp *%eax jmp *%eax
@VectorTemplateEnd: VectorTemplateEnd:
ASM_PFX(AsmGetVectorTemplatInfo): ASM_PFX(AsmGetVectorTemplatInfo):
movl 4(%esp), %ecx movl 4(%esp), %ecx
movl $@VectorTemplateBase, (%ecx) movl $VectorTemplateBase, (%ecx)
movl $(@VectorTemplateEnd - @VectorTemplateBase), %eax movl $(VectorTemplateEnd - VectorTemplateBase), %eax
ret ret
ASM_PFX(AsmVectorFixup): ASM_PFX(AsmVectorFixup):
movl 8(%esp), %eax movl 8(%esp), %eax
movl 4(%esp), %ecx movl 4(%esp), %ecx
movb %al, (@VectorNum - @VectorTemplateBase)(%ecx) movb %al, (VectorNum - VectorTemplateBase)(%ecx)
ret ret
/* /*
@ -72,8 +72,8 @@ ASM_PFX(AsmVectorFixup):
CommonInterruptEntry: CommonInterruptEntry:
cli cli
@@: 1:
jmp @@ jmp 1b

View File

@ -197,7 +197,11 @@ typedef INT32 INTN;
// For symbol name in GNU assembly code, an extra "_" is necessary // For symbol name in GNU assembly code, an extra "_" is necessary
// //
#if __GNUC__ #if __GNUC__
#define ASM_PFX(name) _##name #if defined(linux)
#define ASM_PFX(name) name
#else
#define ASM_PFX(name) _##name
#endif
#endif #endif
#define FUNCTION_ENTRY_POINT(p) (p) #define FUNCTION_ENTRY_POINT(p) (p)