This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Symbols which were not used, still in binary


Michael Eager wrote:

> Arguably, the linker should know
> that add is not referenced and could remove it, but linkers are not
> usually able to slice and dice object files.

You address this limitation by compiling with "-ffunction-sections
-fdata-sections -Wl,--gc-sections".  However, it's still better to use
"static" on these kinds of local functions that are only used from the
same .o file.  This has a number of benefits:

- it ensures that internal functions of a library are not exported for
use by other code when they are not part of the defined ABI/API
- it prevents them from taking up needless relocations, which can slow
linking
- when compiled -fpic (as in a shared library) it allows for direct
calls to the function instead of having to go through the PLT which is
slower
- it allows the compiler freedom to inline

Brian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]