summaryrefslogtreecommitdiff
path: root/usr/src/cmd/sgs/libld/common/resolve.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/sgs/libld/common/resolve.c')
-rw-r--r--usr/src/cmd/sgs/libld/common/resolve.c128
1 files changed, 59 insertions, 69 deletions
diff --git a/usr/src/cmd/sgs/libld/common/resolve.c b/usr/src/cmd/sgs/libld/common/resolve.c
index 8267d0be92..cfc1213fb9 100644
--- a/usr/src/cmd/sgs/libld/common/resolve.c
+++ b/usr/src/cmd/sgs/libld/common/resolve.c
@@ -54,7 +54,7 @@ typedef enum {
/* ARGSUSED0 */
static void
sym_null(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
}
@@ -184,7 +184,7 @@ sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl)
if ((wnvis == STV_EXPORTED) || (wnvis == STV_SINGLETON)) {
if ((wovis != STV_DEFAULT) && (wovis != STV_EXPORTED) &&
(wovis != STV_SINGLETON)) {
- if (sdp->sd_flags1 & FLG_SY1_MAPFILE) {
+ if (sdp->sd_flags & FLG_SY_MAPFILE) {
sym_visibility_diag(ERR_WARNING, sdp, osym,
nsym, ifl, ofl);
} else {
@@ -197,7 +197,7 @@ sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl)
if (wovis == STV_SINGLETON) {
if ((wnvis == STV_EXPORTED) || (wnvis == STV_DEFAULT))
return (STV_SINGLETON);
- if (sdp->sd_flags1 & FLG_SY1_MAPFILE) {
+ if (sdp->sd_flags & FLG_SY_MAPFILE) {
sym_visibility_diag(ERR_WARNING, sdp, osym,
nsym, ifl, ofl);
} else {
@@ -211,7 +211,7 @@ sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl)
return (STV_SINGLETON);
if (wnvis == STV_DEFAULT)
return (STV_EXPORTED);
- if (sdp->sd_flags1 & FLG_SY1_MAPFILE) {
+ if (sdp->sd_flags & FLG_SY_MAPFILE) {
sym_visibility_diag(ERR_WARNING, sdp, osym,
nsym, ifl, ofl);
} else {
@@ -231,7 +231,7 @@ sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl)
*/
if ((wnvis == STV_INTERNAL) || (wovis == STV_INTERNAL)) {
if ((wnvis == STV_INTERNAL) &&
- (sdp->sd_flags1 & FLG_SY1_MAPFILE)) {
+ (sdp->sd_flags & FLG_SY_MAPFILE)) {
sym_visibility_diag(ERR_WARNING, sdp, osym, nsym,
ifl, ofl);
}
@@ -239,7 +239,7 @@ sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl)
} else if ((wnvis == STV_HIDDEN) || (wovis == STV_HIDDEN)) {
if ((wnvis == STV_HIDDEN) &&
- (sdp->sd_flags1 & FLG_SY1_MAPFILE)) {
+ (sdp->sd_flags & FLG_SY_MAPFILE)) {
sym_visibility_diag(ERR_WARNING, sdp, osym, nsym,
ifl, ofl);
}
@@ -266,7 +266,7 @@ sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl)
/*ARGSUSED4*/
static void
sym_typecheck(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
uchar_t otype = ELF_ST_TYPE(sdp->sd_sym->st_info);
uchar_t ntype = ELF_ST_TYPE(nsym->st_info);
@@ -298,7 +298,7 @@ sym_typecheck(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
/*ARGSUSED4*/
static void
sym_mach_check(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
/*
* Perform any machine specific type checking.
@@ -314,11 +314,11 @@ sym_mach_check(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
static void
/* ARGSUSED4 */
sym_promote(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
Word shndx = nsym->st_shndx;
- sym_typecheck(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_typecheck(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
/*
* If the old symbol is from a shared object and the new symbol is a
@@ -343,19 +343,11 @@ sym_promote(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
* it is a global or weak reference (see build_osym(), where
* REF_DYN_NEED definitions are returned back to undefines).
*/
- if (((shndx == SHN_UNDEF) || ((nsymflags & FLG_SY_SPECSEC) &&
+ if (((shndx == SHN_UNDEF) || ((nsdflags & FLG_SY_SPECSEC) &&
(shndx == SHN_COMMON))) &&
(ELF_ST_BIND(nsym->st_info) == STB_GLOBAL))
sdp->sd_flags |= FLG_SY_GLOBREF;
- } else if ((shndx != SHN_UNDEF) && (ofl->ofl_dtflags_1 & DF_1_TRANS) &&
- (sdp->sd_aux->sa_bindto == 0) && (sdp->sd_ref == REF_REL_NEED) &&
- (ifl->ifl_ehdr->e_type == ET_DYN)) {
- /*
- * If building a translator then record the symbol
- * we would 'bindto' with direct bindings.
- */
- sdp->sd_aux->sa_bindto = ifl;
}
}
@@ -364,7 +356,7 @@ sym_promote(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*/
static void
sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
Sym *osym = sdp->sd_sym;
Word link;
@@ -381,7 +373,7 @@ sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
((ifl->ifl_flags & FLG_IF_NEEDED) == 0))
return;
- sym_typecheck(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_typecheck(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
/*
* This symbol has already been compared to an SO definition,
@@ -398,7 +390,7 @@ sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*osym = *nsym;
sdp->sd_shndx = nshndx;
sdp->sd_flags &= ~FLG_SY_SPECSEC;
- sdp->sd_flags |= (nsymflags & (FLG_SY_SPECSEC | FLG_SY_TENTSYM));
+ sdp->sd_flags |= (nsdflags & (FLG_SY_SPECSEC | FLG_SY_TENTSYM));
/*
* If the new symbol has PROTECTED visibility, mark it. If a PROTECTED
@@ -436,9 +428,9 @@ sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
* bound to, are tagged to prevent direct binding.
*/
if ((ofl->ofl_flags1 & FLG_OF1_ALNODIR) &&
- ((sdp->sd_flags1 &
- (FLG_SY1_PROTECT | FLG_SY1_DIR)) == 0))
- sdp->sd_flags1 |= FLG_SY1_NDIR;
+ ((sdp->sd_flags &
+ (FLG_SY_PROTECT | FLG_SY_DIR)) == 0))
+ sdp->sd_flags |= FLG_SY_NDIR;
}
/*
@@ -447,7 +439,7 @@ sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
* REF_DYN_NEED definitions are returned back to undefines).
*/
if (((nsym->st_shndx == SHN_UNDEF) ||
- ((nsymflags & FLG_SY_SPECSEC) &&
+ ((nsdflags & FLG_SY_SPECSEC) &&
(nsym->st_shndx == SHN_COMMON))) &&
(ELF_ST_BIND(nsym->st_info) == STB_GLOBAL))
sdp->sd_flags |= FLG_SY_GLOBREF;
@@ -501,7 +493,7 @@ sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
/*
* Update the input section descriptor to that of the new input file
*/
- if (((nsymflags & FLG_SY_SPECSEC) == 0) &&
+ if (((nsdflags & FLG_SY_SPECSEC) == 0) &&
(nsym->st_shndx != SHN_UNDEF)) {
if ((sdp->sd_isc = ifl->ifl_isdesc[nshndx]) == 0) {
eprintf(ofl->ofl_lml, ERR_FATAL,
@@ -517,7 +509,7 @@ sym_override(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*/
static void
sym_twoundefs(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
Sym *osym = sdp->sd_sym;
uchar_t obind = ELF_ST_BIND(osym->st_info);
@@ -534,10 +526,10 @@ sym_twoundefs(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*/
if (((obind == STB_WEAK) && (nbind != STB_WEAK)) ||
(obind == STT_NOTYPE) && (nbind != STT_NOTYPE)) {
- sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
return;
}
- sym_typecheck(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_typecheck(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
}
/*
@@ -545,7 +537,7 @@ sym_twoundefs(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*/
static void
sym_tworeals(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
Conv_inv_buf_t inv_buf1, inv_buf2;
Sym *osym = sdp->sd_sym;
@@ -632,13 +624,13 @@ sym_tworeals(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
if (warn)
eprintf(ofl->ofl_lml, ERR_NONE,
MSG_INTL(MSG_SYM_DEFTAKEN), ifl->ifl_name);
- sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
return;
} else {
if (warn)
eprintf(ofl->ofl_lml, ERR_NONE,
MSG_INTL(MSG_SYM_DEFTAKEN), sdp->sd_file->ifl_name);
- sym_promote(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_promote(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
return;
}
}
@@ -648,7 +640,7 @@ sym_tworeals(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*/
static void
sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
Conv_inv_buf_t inv_buf1, inv_buf2;
Sym *osym = sdp->sd_sym;
@@ -682,7 +674,7 @@ sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
eprintf(ofl->ofl_lml, ERR_WARNING,
MSG_INTL(MSG_SYM_DIFFTYPE), demangle(sdp->sd_name));
sym_promote(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
} else {
eprintf(ofl->ofl_lml, ERR_FATAL,
MSG_INTL(MSG_SYM_MULDEF), demangle(sdp->sd_name));
@@ -703,14 +695,14 @@ sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
return;
else {
sym_override(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
return;
}
}
if ((nfile == ET_DYN) && (ntype == STT_FUNC)) {
if ((ntype != STB_WEAK) && (otype == STB_WEAK)) {
sym_override(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
return;
} else
return;
@@ -719,7 +711,7 @@ sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
if (sdp->sd_flags & FLG_SY_TENTSYM)
otent = TRUE;
- if (nsymflags & FLG_SY_TENTSYM)
+ if (nsdflags & FLG_SY_TENTSYM)
ntent = TRUE;
@@ -798,7 +790,7 @@ sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
if ((ofile == ET_DYN) && (nfile == ET_REL) && (ntent == TRUE) &&
(nvis == STV_PROTECTED)) {
- sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
return;
}
@@ -814,13 +806,13 @@ sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
if (warn)
eprintf(ofl->ofl_lml, ERR_NONE,
MSG_INTL(MSG_SYM_DEFTAKEN), ifl->ifl_name);
- sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_override(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
return;
} else {
if (warn)
eprintf(ofl->ofl_lml, ERR_NONE,
MSG_INTL(MSG_SYM_DEFTAKEN), sdp->sd_file->ifl_name);
- sym_promote(sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ sym_promote(sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
return;
}
}
@@ -830,7 +822,7 @@ sym_realtent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
*/
static void
sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
- int ndx, Word nshndx, Word nsymflags)
+ int ndx, Word nshndx, sd_flag_t nsdflags)
{
Sym *osym = sdp->sd_sym;
uchar_t obind = ELF_ST_BIND(osym->st_info);
@@ -859,7 +851,7 @@ sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
* Take the new symbol.
*/
sym_override(sdp, nsym, ifl, ofl, ndx, nshndx,
- nsymflags);
+ nsdflags);
return;
}
}
@@ -876,13 +868,13 @@ sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
if ((osym->st_value != nsym->st_value) &&
((sdp->sd_flags & FLG_SY_SPECSEC) &&
(sdp->sd_sym->st_shndx == SHN_COMMON) &&
- (nsymflags & FLG_SY_SPECSEC) &&
+ (nsdflags & FLG_SY_SPECSEC) &&
#if defined(_ELF64)
(nsym->st_shndx == SHN_COMMON)) ||
((ld_targ.t_m.m_mach == EM_AMD64) &&
(sdp->sd_flags & FLG_SY_SPECSEC) &&
(sdp->sd_sym->st_shndx == SHN_X86_64_LCOMMON) &&
- (nsymflags & FLG_SY_SPECSEC) &&
+ (nsdflags & FLG_SY_SPECSEC) &&
(nsym->st_shndx == SHN_X86_64_LCOMMON))) {
#else
(nsym->st_shndx == SHN_COMMON))) {
@@ -986,7 +978,7 @@ sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
emsg = MSG_INTL(MSG_SYM_DEFUPDATE);
}
sym_override(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
} else {
file = sdp->sd_file->ifl_name;
if (osym->st_size < nsym->st_size) {
@@ -994,19 +986,19 @@ sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
emsg = MSG_INTL(MSG_SYM_DEFUPDATE);
}
sym_promote(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
}
} else if (obind != nbind) {
if ((obind == STB_WEAK) && (nbind != STB_WEAK)) {
sym_override(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
file = ifl->ifl_name;
} else
file = sdp->sd_file->ifl_name;
} else {
if (osym->st_size < nsym->st_size) {
sym_override(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
file = ifl->ifl_name;
} else
file = sdp->sd_file->ifl_name;
@@ -1033,10 +1025,10 @@ sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
(((obind == STB_WEAK) && (nbind != STB_WEAK)) &&
(!((ofile != nfile) && (ofile == ET_REL)))))
sym_override(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
else
sym_promote(sdp, nsym, ifl, ofl, ndx,
- nshndx, nsymflags);
+ nshndx, nsdflags);
}
/*
@@ -1051,7 +1043,7 @@ sym_twotent(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl,
* procedure to be called (if any).
*/
static void (*Action[REF_NUM * SYM_NUM * 2][SYM_NUM])(Sym_desc *,
- Sym *, Ifl_desc *, Ofl_desc *, int, Word, Word) = {
+ Sym *, Ifl_desc *, Ofl_desc *, int, Word, sd_flag_t) = {
/* defined undef tent */
/* ET_REL ET_REL ET_REL */
@@ -1083,7 +1075,7 @@ static void (*Action[REF_NUM * SYM_NUM * 2][SYM_NUM])(Sym_desc *,
uintptr_t
ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
- Word nshndx, Word nsymflags)
+ Word nshndx, sd_flag_t nsdflags)
{
int row, column; /* State table coordinates */
Sym *osym = sdp->sd_sym;
@@ -1131,16 +1123,16 @@ ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
/*
* Determine the new symbols definition (defines column in Action[]).
*/
- if ((nsymflags & FLG_SY_SPECSEC) &&
+ if ((nsdflags & FLG_SY_SPECSEC) &&
(nsym->st_shndx == SHN_COMMON)) {
column = SYM_TENTATIVE;
- nsymflags |= FLG_SY_TENTSYM;
+ nsdflags |= FLG_SY_TENTSYM;
#if defined(_ELF64)
} else if ((ld_targ.t_m.m_mach == EM_AMD64) &&
- (nsymflags & FLG_SY_SPECSEC) &&
+ (nsdflags & FLG_SY_SPECSEC) &&
(nsym->st_shndx == SHN_X86_64_LCOMMON)) {
column = SYM_TENTATIVE;
- nsymflags |= FLG_SY_TENTSYM;
+ nsdflags |= FLG_SY_TENTSYM;
#endif
} else if ((nsym->st_shndx == SHN_UNDEF) ||
(nsym->st_shndx == SHN_SUNW_IGNORE)) {
@@ -1153,11 +1145,11 @@ ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
* associated with a SHT_NOBITS section then this symbol
* originated from a tentative symbol.
*/
- if (((nsymflags & FLG_SY_SPECSEC) == 0) && (nfile == ET_DYN)) {
+ if (((nsdflags & FLG_SY_SPECSEC) == 0) && (nfile == ET_DYN)) {
isp = ifl->ifl_isdesc[nshndx];
if (isp && (isp->is_shdr->sh_type == SHT_NOBITS)) {
column = SYM_TENTATIVE;
- nsymflags |= FLG_SY_TENTSYM;
+ nsdflags |= FLG_SY_TENTSYM;
}
}
}
@@ -1173,7 +1165,7 @@ ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
* multiple (interposed) definitions of a symbol (refer to ldmap_out()).
*/
if ((ofl->ofl_flags & FLG_OF_GENMAP) && (nsym->st_shndx != SHN_UNDEF) &&
- ((nsymflags & FLG_SY_SPECSEC) == 0))
+ ((nsdflags & FLG_SY_SPECSEC) == 0))
if (aplist_append(&sdp->sd_aux->sa_dfiles, ifl->ifl_name,
AL_CNT_SDP_DFILES) == NULL)
return (S_ERROR);
@@ -1181,7 +1173,7 @@ ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
/*
* Perform the required resolution.
*/
- Action[row][column](sdp, nsym, ifl, ofl, ndx, nshndx, nsymflags);
+ Action[row][column](sdp, nsym, ifl, ofl, ndx, nshndx, nsdflags);
/*
* Apply any visibility requirements. If a SINGLETON has been
@@ -1191,14 +1183,12 @@ ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
*/
if ((oref == REF_REL_NEED) || (nfile == ET_REL)) {
if ((vis == STV_EXPORTED) || (vis == STV_SINGLETON)) {
- sdp->sd_flags1 &= ~(FLG_SY1_PROTECT | FLG_SY1_ELIM |
- FLG_SY1_HIDDEN);
+ sdp->sd_flags &= ~MSK_SY_LOCAL;
if (vis == STV_EXPORTED)
- sdp->sd_flags1 |= FLG_SY1_EXPORT;
+ sdp->sd_flags |= FLG_SY_EXPORT;
else {
- sdp->sd_flags1 |=
- (FLG_SY1_NDIR | FLG_SY1_SINGLE);
+ sdp->sd_flags |= (FLG_SY_NDIR | FLG_SY_SINGLE);
if (sdp->sd_ref == REF_REL_NEED) {
ofl->ofl_flags1 |=
@@ -1206,11 +1196,11 @@ ld_sym_resolve(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, int ndx,
}
}
} else if (vis == STV_PROTECTED) {
- sdp->sd_flags1 |= FLG_SY1_PROTECT;
+ sdp->sd_flags |= FLG_SY_PROTECT;
} else if ((vis == STV_INTERNAL) || (vis == STV_HIDDEN)) {
- sdp->sd_flags1 |= FLG_SY1_HIDDEN;
+ sdp->sd_flags |= FLG_SY_HIDDEN;
} else if (vis == STV_ELIMINATE) {
- sdp->sd_flags1 |= (FLG_SY1_HIDDEN | FLG_SY1_ELIM);
+ sdp->sd_flags |= (FLG_SY_HIDDEN | FLG_SY_ELIM);
}
sdp->sd_sym->st_other =