This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: A very "strange" bug in gcc 2.96
- To: "H . J . Lu" <hjl at lucon dot org>
- Subject: Re: A very "strange" bug in gcc 2.96
- From: Alan Modra <alan at linuxcare dot com dot au>
- Date: Mon, 22 May 2000 17:08:01 +1000 (EST)
- cc: binutils at sourceware dot cygnus dot com
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.