From ed0b86b1838a525dc5e9e86dc0acd47e3a16dc50 Mon Sep 17 00:00:00 2001 From: eric_tian Date: Mon, 30 Jun 2008 05:50:49 +0000 Subject: [PATCH] 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 --- BaseTools/Conf/tools_def.template | 4 +++- MdeModulePkg/Core/DxeIplPeim/Ia32/IdtVectorAsm.S | 16 ++++++++-------- MdePkg/Include/Ia32/ProcessorBind.h | 6 +++++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 7cbffbfcb1..1b2e44c85f 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -500,10 +500,12 @@ RELEASE_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT *_ELFGCC_IA32_ASM_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_IA32_PP_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_*_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_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include AutoGen.h diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/IdtVectorAsm.S b/MdeModulePkg/Core/DxeIplPeim/Ia32/IdtVectorAsm.S index ee02a4104b..a152b5033c 100644 --- a/MdeModulePkg/Core/DxeIplPeim/Ia32/IdtVectorAsm.S +++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/IdtVectorAsm.S @@ -27,26 +27,26 @@ ; ;----------------------------------------------------------------------- */ -@VectorTemplateBase: +VectorTemplateBase: pushl %eax .byte 0x6a # push #VectorNum -@VectorNum: +VectorNum: .byte 0 movl CommonInterruptEntry, %eax jmp *%eax -@VectorTemplateEnd: +VectorTemplateEnd: ASM_PFX(AsmGetVectorTemplatInfo): movl 4(%esp), %ecx - movl $@VectorTemplateBase, (%ecx) - movl $(@VectorTemplateEnd - @VectorTemplateBase), %eax + movl $VectorTemplateBase, (%ecx) + movl $(VectorTemplateEnd - VectorTemplateBase), %eax ret ASM_PFX(AsmVectorFixup): movl 8(%esp), %eax movl 4(%esp), %ecx - movb %al, (@VectorNum - @VectorTemplateBase)(%ecx) + movb %al, (VectorNum - VectorTemplateBase)(%ecx) ret /* @@ -72,8 +72,8 @@ ASM_PFX(AsmVectorFixup): CommonInterruptEntry: cli -@@: - jmp @@ +1: + jmp 1b diff --git a/MdePkg/Include/Ia32/ProcessorBind.h b/MdePkg/Include/Ia32/ProcessorBind.h index 45e9c14bf3..72c10328e4 100644 --- a/MdePkg/Include/Ia32/ProcessorBind.h +++ b/MdePkg/Include/Ia32/ProcessorBind.h @@ -197,7 +197,11 @@ typedef INT32 INTN; // For symbol name in GNU assembly code, an extra "_" is necessary // #if __GNUC__ - #define ASM_PFX(name) _##name + #if defined(linux) + #define ASM_PFX(name) name + #else + #define ASM_PFX(name) _##name + #endif #endif #define FUNCTION_ENTRY_POINT(p) (p) -- 2.39.2