Bug 70019 - attribute ((visibility("internal"))) is not valid on static functions
Summary: attribute ((visibility("internal"))) is not valid on static functions
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: gcc
Version: 7.3
Hardware: i386
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2002-07-29 04:07 UTC by James Antill
Modified: 2007-04-18 16:44 UTC (History)
0 users

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2004-10-02 23:45:26 UTC
Embargoed:


Attachments (Terms of Use)

Description James Antill 2002-07-29 04:07:37 UTC
Description of Problem:
 If you have a function that is only used as the helper function of a symbol
exported from a shared library, then the traditional appraoch would be to
declare the symbol static -- giving it file scope and removing it from the ABI
of the library. However this is only visibility=hidden, as far as the compiler
understands it (as you could use that function in a function ptr etc.)
 This means that if you declare the function "extern" with attribute
visibility=internal the compiler will generate better code.

Version-Release number of selected component (if applicable):
gcc-2.96-112

How Reproducible:
Always

Steps to Reproduce:
1. Add an visibility("internal") attribute to a static function.

Actual Results:
 The compiler gives a "`visibility' attribute ignored" warning.

Expected Results:
 The compiler obeys the attribute just as if it was an extern declaration.

Additional Information:

Comment 1 Richard Henderson 2004-10-02 23:45:26 UTC
No, using "static" is the absolute best you can tell the compiler.
Even better than visibility=internal (which, incidentally, the compiler
does nothing special with at present).  It means that all references
to the symbol are visible in the current translation unit.

Visibility attributes are not applicable to STB_LOCAL symbols, so the
compiler is right to complain.


Note You need to log in before you can comment on or make changes to this bug.