[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.58.7 Symbol-Renaming Pragmas
For compatibility with the Solaris system headers, GCC
supports two #pragma
directives that change the name used in
assembly for a given declaration. To get this effect
on all platforms supported by GCC, use the asm labels extension (see section Controlling Names Used in Assembler Code).
redefine_extname oldname newname
-
This pragma gives the C function oldname the assembly symbol newname. The preprocessor macro
__PRAGMA_REDEFINE_EXTNAME
is defined if this pragma is available (currently on all platforms).
This pragma and the asm labels extension interact in a complicated manner. Here are some corner cases you may want to be aware of.
- Both pragmas silently apply only to declarations with external linkage. Asm labels do not have this restriction.
- In C++, both pragmas silently apply only to declarations with “C” linkage. Again, asm labels do not have this restriction.
- If any of the three ways of changing the assembly name of a declaration is applied to a declaration whose assembly name has already been determined (either by a previous use of one of these features, or because the compiler needed the assembly name in order to generate code), and the new name is different, a warning issues and the name does not change.
- The oldname used by
#pragma redefine_extname
is always the C-language name.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on October 19, 2013 using texi2html 5.0.