X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gcc%2Fconfig%2Frs6000%2Fppc-asm.h;h=7f39a2a43043112aa203234319a97faf768311a3;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=27f3635076036120a7bf7fc5cd48699206720bcb;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/gcc/config/rs6000/ppc-asm.h b/gcc/config/rs6000/ppc-asm.h index 27f36350..7f39a2a4 100644 --- a/gcc/config/rs6000/ppc-asm.h +++ b/gcc/config/rs6000/ppc-asm.h @@ -2,7 +2,6 @@ /* Under winnt, 1) gas supports the following as names and 2) in particular defining "toc" breaks the FUNC_START macro as ".toc" becomes ".2" */ -#if !defined(__WINNT__) #define r0 0 #define sp 1 #define toc 2 @@ -77,7 +76,6 @@ #define f29 29 #define f30 30 #define f31 31 -#endif /* * Macros to glue together two tokens. @@ -97,88 +95,63 @@ * the real function with one or two leading periods respectively. */ -#ifdef _RELOCATABLE -#define DESC_SECTION ".got2" -#else -#define DESC_SECTION ".got1" -#endif - -#if defined(_CALL_AIXDESC) +#if defined (__powerpc64__) #define FUNC_NAME(name) GLUE(.,name) #define JUMP_TARGET(name) FUNC_NAME(name) #define FUNC_START(name) \ - .section DESC_SECTION,"aw"; \ + .section ".opd","aw"; \ name: \ - .long GLUE(.,name); \ - .long _GLOBAL_OFFSET_TABLE_; \ - .long 0; \ + .quad GLUE(.,name); \ + .quad .TOC.@tocbase; \ + .quad 0; \ .previous; \ .type GLUE(.,name),@function; \ .globl name; \ .globl GLUE(.,name); \ GLUE(.,name): +#define HIDDEN_FUNC(name) \ + FUNC_START(name) \ + .hidden name; \ + .hidden GLUE(.,name); + #define FUNC_END(name) \ GLUE(.L,name): \ .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name) -#elif defined(__WINNT__) -#define FUNC_NAME(name) GLUE(..,name) -#define JUMP_TARGET(name) FUNC_NAME(name) -#define FUNC_START(name) \ - .pdata; \ - .align 2; \ - .ualong GLUE(..,name),GLUE(name,.e),0,0,GLUE(..,name); \ - .reldata; \ -name: \ - .ualong GLUE(..,name),.toc; \ - .section .text; \ - .globl name; \ - .globl GLUE(..,name); \ -GLUE(..,name): +#elif defined(_CALL_AIXDESC) -#define FUNC_END(name) \ -GLUE(name,.e): ; \ -GLUE(FE_MOT_RESVD..,name): +#ifdef _RELOCATABLE +#define DESC_SECTION ".got2" +#else +#define DESC_SECTION ".got1" +#endif -#elif defined(_CALL_NT) -#define FUNC_NAME(name) GLUE(..,name) +#define FUNC_NAME(name) GLUE(.,name) #define JUMP_TARGET(name) FUNC_NAME(name) #define FUNC_START(name) \ .section DESC_SECTION,"aw"; \ name: \ - .long GLUE(..,name); \ + .long GLUE(.,name); \ .long _GLOBAL_OFFSET_TABLE_; \ - .previous; \ - .type GLUE(..,name),@function; \ - .globl name; \ - .globl GLUE(..,name); \ -GLUE(..,name): - -#define FUNC_END(name) \ -GLUE(.L,name): \ - .size GLUE(..,name),GLUE(.L,name)-GLUE(..,name) - -#elif defined (__powerpc64__) -#define FUNC_NAME(name) GLUE(.,name) -#define JUMP_TARGET(name) FUNC_NAME(name) -#define FUNC_START(name) \ - .section ".opd","aw"; \ -name: \ - .quad GLUE(.,name); \ - .quad .TOC.@tocbase; \ - .quad 0; \ + .long 0; \ .previous; \ .type GLUE(.,name),@function; \ .globl name; \ .globl GLUE(.,name); \ GLUE(.,name): +#define HIDDEN_FUNC(name) \ + FUNC_START(name) \ + .hidden name; \ + .hidden GLUE(.,name); + #define FUNC_END(name) \ GLUE(.L,name): \ .size GLUE(.,name),GLUE(.L,name)-GLUE(.,name) #else + #define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name) #if defined __PIC__ || defined __pic__ #define JUMP_TARGET(name) FUNC_NAME(name@plt) @@ -190,8 +163,16 @@ GLUE(.L,name): \ .globl FUNC_NAME(name); \ FUNC_NAME(name): +#define HIDDEN_FUNC(name) \ + FUNC_START(name) \ + .hidden FUNC_NAME(name); + #define FUNC_END(name) \ GLUE(.L,name): \ .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name) #endif +#if defined __linux__ && !defined __powerpc64__ + .section .note.GNU-stack + .previous +#endif