Hi,

I am proposing following changes in the build:
A.
- include only .oS files into shared libraries (-DSHARED defined)
- include .os (if DOPIC is enabled) or .o (if DOPIC disabled) files into 
archives (lib*.a)
- if SHARED is defined attribute_hidden is hiding (and accordingly 
*hidden_proto the __GI_x counterpart)
- if SHARED is not defined attribute_hidden is nop (*hidden_proto is only a 
redefine to __GI_x without hiding)
- *hidden_def/*hidden_weak keeps it's definition as strong_alias/weak_alias 

The jump relocation avoidance (achieved by hidden functions) is relevant
only for shared libraries, in static libraries the hidden functions makes
it difficult to strip them if not needed (unused/eliding weaks come to my mind)

The only consequence will be, that the build will have to compile all files 
twice (build taking somewhat longer).
On the other side we do not have to care in the Makefiles if one file
 goes to the shared library or not (that some may not even understand)

B.
Use only *hidden_proto to hide functions (do not use attribute_hidden 
explicitly), if we need the visible/exported function as well, then we
need to add *hidden_def or *hidden_weak

There seems to be a problem of understanding how these *hidden_proto/def/weak 
work
(especially the difference in .S and .c files)

I personally use attribute_hidden if I know that the function is only
for internal use, else the *hidden_proto/*hidden_def/weak, but I have
also seen duplicates as x() attribute_hidden; *hidden_proto(x) that really
does not make sense
Anyway, we should define some rules how these should be used (I know,
that the hidden stuff is documented in libc-symbols.h, but that seems
not be enough...

Regards, Peter
-- 
NEU: FreePhone - kostenlos mobil telefonieren und surfen!                       
Jetzt informieren: http://www.gmx.net/de/go/freephone
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to