manpagez: man pages & more
info gcc
Home | html | info | man
[ << ] [ < ] [ 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.

  1. Both pragmas silently apply only to declarations with external linkage. Asm labels do not have this restriction.
  2. In C++, both pragmas silently apply only to declarations with “C” linkage. Again, asm labels do not have this restriction.
  3. 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.
  4. 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.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.