This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


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

Re: A very "strange" bug in gcc 2.96


I didn't think you could wait a week.  :-)

On Sun, 21 May 2000, H . J . Lu wrote:

> diff -u -p -r1.23 tc-i386.c
> --- config/tc-i386.c	2000/05/14 17:25:52	1.23
> +++ config/tc-i386.c	2000/05/22 06:42:51
> @@ -3766,7 +3766,8 @@ md_estimate_size_before_relax (fragP, se
>    opcode = (unsigned char *) fragP->fr_opcode;
>    /* We've already got fragP->fr_subtype right;  all we have to do is
>       check for un-relaxable symbols.  */
> -  if (S_GET_SEGMENT (fragP->fr_symbol) != segment)
> +  if (!S_IS_LOCAL (fragP->fr_symbol)
> +      || S_GET_SEGMENT (fragP->fr_symbol) != segment)
>      {
>        /* symbol is undefined in this segment */
>        int code16 = fragP->fr_subtype & CODE16;

!S_IS_LOCAL isn't optimal.  We still want to use short jumps to
get to a static function.  I was just about to test the following

  if (S_GET_SEGMENT (fragP->fr_symbol) != segment
      || S_IS_EXTERN (fragP->fr_symbol)
      || S_IS_WEAK (fragP->fr_symbol))

-- 
Linuxcare.  Support for the Revolution.


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