From: eric_tian Date: Fri, 14 Aug 2009 09:39:55 +0000 (+0000) Subject: redefine the ASM_PFX to let it can work on Apple/NetBSD and other Unix* platform. X-Git-Tag: edk2-stable201903~17245 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=d4cf6b6c976d07af769ad3bfeeccbcf833e72c32 redefine the ASM_PFX to let it can work on Apple/NetBSD and other Unix* platform. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9073 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/MdePkg/Include/Ia32/ProcessorBind.h b/MdePkg/Include/Ia32/ProcessorBind.h index 4f24c67077..a3567267d8 100644 --- a/MdePkg/Include/Ia32/ProcessorBind.h +++ b/MdePkg/Include/Ia32/ProcessorBind.h @@ -336,11 +336,18 @@ typedef INT32 INTN; // For symbol name in GNU assembly code, an extra "_" is necessary // #if defined(__GNUC__) - #if defined(linux) - #define ASM_PFX(name) name - #else - #define ASM_PFX(name) _##name - #endif + /// + /// Private worker functions for ASM_PFX() + /// + #define _CONCATENATE(a, b) __CONCATENATE(a, b) + #define __CONCATENATE(a, b) a ## b + + /// + /// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix + /// on symbols in assembly language. + /// + #define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name) + /// /// For GNU assembly code, .global or .globl can declare global symbols. /// Define this macro to unify the usage. diff --git a/MdePkg/Include/X64/ProcessorBind.h b/MdePkg/Include/X64/ProcessorBind.h index 363a2dca35..027d8d0f59 100644 --- a/MdePkg/Include/X64/ProcessorBind.h +++ b/MdePkg/Include/X64/ProcessorBind.h @@ -400,11 +400,18 @@ typedef INT64 INTN; // For symbol name in GNU assembly code, an extra "_" is necessary // #if defined(__GNUC__) - #if defined(linux) - #define ASM_PFX(name) name - #else - #define ASM_PFX(name) _##name - #endif + /// + /// Private worker functions for ASM_PFX() + /// + #define _CONCATENATE(a, b) __CONCATENATE(a, b) + #define __CONCATENATE(a, b) a ## b + + /// + /// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix + /// on symbols in assembly language. + /// + #define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name) + /// /// For GNU assembly code, .global or .globl can declare global symbols. /// Define this macro to unify the usage.