Print this page
10346 ld(1) should not reduce symbol visibility of COMDAT symbols when producing relocatable objects
@@ -1011,11 +1011,11 @@
* Only needed symbols are copied to the output symbol table.
*/
if (sdp->sd_ref == REF_DYN_SEEN)
continue;
- if (SYM_IS_HIDDEN(sdp) && (flags & FLG_OF_PROCRED))
+ if (ld_sym_reducable(ofl, sdp))
local = 1;
else
local = 0;
if (local || (ofl->ofl_hashbkts == 0)) {
@@ -1222,11 +1222,11 @@
* If this symbol has been marked as being reduced to local
* scope then it will have to be placed in the scoped portion
* of the .symtab. Retain the appropriate index for use in
* version symbol indexing and relocation.
*/
- if (SYM_IS_HIDDEN(sdp) && (flags & FLG_OF_PROCRED)) {
+ if (ld_sym_reducable(ofl, sdp)) {
local = 1;
if (!(sdp->sd_flags & FLG_SY_ELIM) && !dynsym)
sdp->sd_symndx = scopesym_ndx;
else
sdp->sd_symndx = 0;
@@ -1887,11 +1887,11 @@
* If the symbol definition has been scoped then assign it to
* be local, otherwise if it's from a shared object then we need
* to maintain the binding of the original reference.
*/
if (SYM_IS_HIDDEN(sdp)) {
- if (flags & FLG_OF_PROCRED)
+ if (ld_sym_reducable(ofl, sdp))
bind = STB_LOCAL;
else
bind = STB_WEAK;
} else if ((sdp->sd_ref == REF_DYN_NEED) &&
(sdp->sd_flags & FLG_SY_GLOBREF))