diff --git a/gas/ChangeLog b/gas/ChangeLog index 641f7c1e3f..cf754ab3a6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2002-09-28 Matt Thomas + Jason Thorpe + + * config/tc-vax.c (md_estimate_size_before_relax): Only try to + convert undefined references to GOT32/PLT32 if PIC code is + requested. Fix comment. + 2002-09-27 Kaz Kojima * config/tc-sh.c (sh_force_relocation): Return 0 for diff --git a/gas/config/tc-vax.c b/gas/config/tc-vax.c index a2bae67495..24256634a9 100644 --- a/gas/config/tc-vax.c +++ b/gas/config/tc-vax.c @@ -1244,12 +1244,11 @@ md_estimate_size_before_relax (fragP, segment) old_fr_fix = fragP->fr_fix; p = fragP->fr_literal + old_fr_fix; #ifdef OBJ_ELF - /* - * If this is to undefined symbol, then if it's an indirect - * reference indicate that is can mutated into a GLOB_DAT - * by the loader. We restrict ourselves to no offset due to - * a limitation in the NetBSD linker. - */ + /* If this is to an undefined symbol, then if it's an indirect + reference indicate that is can mutated into a GLOB_DAT or + JUMP_SLOT by the loader. We restrict ourselves to no offset + due to a limitation in the NetBSD linker. */ + if (GOT_symbol == NULL) GOT_symbol = symbol_find (GLOBAL_OFFSET_TABLE_NAME); if (PLT_symbol == NULL) @@ -1257,6 +1256,7 @@ md_estimate_size_before_relax (fragP, segment) if ((GOT_symbol == NULL || fragP->fr_symbol != GOT_symbol) && (PLT_symbol == NULL || fragP->fr_symbol != PLT_symbol) && fragP->fr_symbol != NULL + && flag_want_pic && (!S_IS_DEFINED (fragP->fr_symbol) || S_IS_WEAK (fragP->fr_symbol) || S_IS_EXTERNAL (fragP->fr_symbol))) @@ -1269,7 +1269,6 @@ md_estimate_size_before_relax (fragP, segment) } else { - if (((unsigned char *) fragP->fr_opcode)[0] == VAX_CALLS || ((unsigned char *) fragP->fr_opcode)[0] == VAX_CALLG || ((unsigned char *) fragP->fr_opcode)[0] == VAX_JSB