A very "strange" bug in gcc 2.96

Ian Lance Taylor ian@zembu.com
Sun May 21 13:43:00 GMT 2000


   From: Ulrich Drepper <drepper@redhat.com>
   Date: 21 May 2000 13:04:53 -0700

   "H . J . Lu" <hjl@lucon.org> writes:

   > If we take it out, it may disappoint some people. I'd prefer to turn
   > it on with a flag.

   I don't care if it disappoints anybody.  If smoething is broken it
   does not deserve to be preserved.  Especially since it hurts 99.9% of
   the applications which are not broken.  Just document it and let
   people disable the sibling call optimization.

It's not broken to build a shared library with an object compiled
without -fPIC.  It is often a convenience, when a single object is
used in multiple ways.

This change will silently break existing code which works today and is
wholly correct.  If this change is to be turned on by default, it must
be carefully documented.

Note that the reason the new optimization fails is that the assembler
translates the jmp into a short branch instruction.  If the assembler
translated the jmp into a 32 bit branch with a reloc, then I believe
everything would still work correctly.  At least on the i386.
However, doing this would disable part of the optimization.

Ian


More information about the Binutils mailing list