From c614ca505dd2947acbd111e2764056aeac2012ad Mon Sep 17 00:00:00 2001 From: darylm503 Date: Fri, 16 Sep 2011 20:59:10 +0000 Subject: StdLib: Patches and updates for ARM. Add ARMGCC and RVCT toolchain support. Update and Add ARM specific machine headers. Set the empty macro for __warn_references(). Make __flt_rounds() return 'Round to nearest' by default on ARM. Signed-off-by: Olivier Martin [olivier.martin@arm.com] Reviewed-by: darylm503 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12367 6f19259b-4bc3-4df7-8a09-765794883524 --- StdLib/Include/sys/cdefs_aout.h | 94 +++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 45 deletions(-) (limited to 'StdLib/Include/sys/cdefs_aout.h') diff --git a/StdLib/Include/sys/cdefs_aout.h b/StdLib/Include/sys/cdefs_aout.h index 0ce4fd9d2d..274991875a 100644 --- a/StdLib/Include/sys/cdefs_aout.h +++ b/StdLib/Include/sys/cdefs_aout.h @@ -17,59 +17,63 @@ #ifdef __GNUC__ #if __STDC__ - #ifndef DONT_USE_STRONG_WEAK_ALIAS -#define __strong_alias(alias,sym) \ - __asm(".global " _C_LABEL_STRING(#alias) "\n" \ - _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym)); -#define __weak_alias(alias,sym) \ - __asm(".weak " _C_LABEL_STRING(#alias) "\n" \ - _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym)); - -/* Do not use __weak_extern, use __weak_reference instead */ -#define __weak_extern(sym) \ - __asm(".weak " _C_LABEL_STRING(#sym)); - -#if __GNUC_PREREQ__(4, 0) -#define __weak_reference(sym) __attribute__((__weakref__)) -#else -#define __weak_reference(sym) ; __asm(".weak " _C_LABEL_STRING(#sym)) -#endif - -#define __warn_references(sym,msg) \ - __asm(".stabs \"" msg "\",30,0,0,0"); \ - __asm(".stabs \"_" #sym "\",1,0,0,0"); + #ifndef DONT_USE_STRONG_WEAK_ALIAS + #define __strong_alias(alias,sym) \ + __asm(".global " _C_LABEL_STRING(#alias) "\n" \ + _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym)); + #define __weak_alias(alias,sym) \ + __asm(".weak " _C_LABEL_STRING(#alias) "\n" \ + _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym)); + + /* Do not use __weak_extern, use __weak_reference instead */ + #define __weak_extern(sym) \ + __asm(".weak " _C_LABEL_STRING(#sym)); + + #if __GNUC_PREREQ__(4, 0) + #define __weak_reference(sym) __attribute__((__weakref__)) #else - #define __strong_alias(alias,sym) /* NOTHING */ - #define __weak_alias(alias,sym) /* NOTHING */ - #define __weak_extern(sym) /* NOTHING */ - #define __weak_reference(sym) /* NOTHING */ + #define __weak_reference(sym) ; __asm(".weak " _C_LABEL_STRING(#sym)) + #endif + + #define __warn_references(sym,msg) \ + __asm(".stabs \"" msg "\",30,0,0,0"); \ + __asm(".stabs \"_" #sym "\",1,0,0,0"); + #else + #define __strong_alias(alias,sym) /* NOTHING */ + #define __weak_alias(alias,sym) /* NOTHING */ + #define __weak_extern(sym) /* NOTHING */ + #define __weak_reference(sym) /* NOTHING */ + #if !defined(__CC_ARM) #define __warn_references(sym,msg) \ __asm(".stabs \"" msg "\",30,0,0,0"); \ __asm(".stabs \"_" #sym "\",1,0,0,0"); + #else + #define __warn_references(sym,msg) #endif -#else /* __STDC__ */ -#define __weak_alias(alias,sym) ___weak_alias(_/**/alias,_/**/sym) -#define ___weak_alias(alias,sym) \ - __asm(".weak alias\nalias = sym"); -/* Do not use __weak_extern, use __weak_reference instead */ -#define __weak_extern(sym) ___weak_extern(_/**/sym) -#define ___weak_extern(sym) \ - __asm(".weak sym"); - -#if __GNUC_PREREQ__(4, 0) -#define __weak_reference(sym) __attribute__((__weakref__)) -#else -#define ___weak_reference(sym) ; __asm(".weak sym"); -#define __weak_reference(sym) ___weak_reference(_/**/sym) -#endif - -#define __warn_references(sym,msg) \ - __asm(".stabs msg,30,0,0,0"); \ - __asm(".stabs \"_/**/sym\",1,0,0,0"); + #endif +#else /* __STDC__ */ + #define __weak_alias(alias,sym) ___weak_alias(_/**/alias,_/**/sym) + #define ___weak_alias(alias,sym) \ + __asm(".weak alias\nalias = sym"); + /* Do not use __weak_extern, use __weak_reference instead */ + #define __weak_extern(sym) ___weak_extern(_/**/sym) + #define ___weak_extern(sym) \ + __asm(".weak sym"); + + #if __GNUC_PREREQ__(4, 0) + #define __weak_reference(sym) __attribute__((__weakref__)) + #else + #define ___weak_reference(sym) ; __asm(".weak sym"); + #define __weak_reference(sym) ___weak_reference(_/**/sym) + #endif + + #define __warn_references(sym,msg) \ + __asm(".stabs msg,30,0,0,0"); \ + __asm(".stabs \"_/**/sym\",1,0,0,0"); #endif /* __STDC__ */ #else /* __GNUC__ */ -#define __warn_references(sym,msg) + #define __warn_references(sym,msg) #endif /* __GNUC__ */ #if defined(__sh__) /* XXX SH COFF */ -- cgit v1.2.3