Hi Ayonam,
The assembly fragment in question looks like this:
.section .rodata
.L5465:
.long .L5457-.+(.-.L5465)
.long .L5458-.+(.-.L5465) <<<<<<- Problem first reported here
.section
.gnu.linkonce.t._ZNK6Layout12StdTransformIiE9transformIdEEKNS_5PointIT_EERS6_
.L5458:
The problem is that the two symbols (.L5458 and .L5465) are in different
sections. Therefore it is impossible for the assembler to calculate the
distance between them. Since the symbols are local symbols they are
not emitted into the object file and so they are not available for the
linker to calculate the distance either.
The real root of the problem I believe is that you are using a broken
compiler. You say that you are using GCC 2.3.2 which is an extremely
old version. I would strongly urge you to upgrade to the 2.95 release,
or better yet the 3.4.4 release or even the 4.1 release.
If you cannot do this then see if the version of gcc you are using has
any switches to alter the way it handles case statements. eg
-fno-jump-tables.
Cheers
Nick
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils