bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug gas/1433] IA64 assembler generates bad 2.6.9 Linux kernel.


From: James E Wilson
Subject: Re: [Bug gas/1433] IA64 assembler generates bad 2.6.9 Linux kernel.
Date: Thu, 06 Oct 2005 18:18:28 -0700

On Thu, 2005-10-06 at 16:24, hjl at lucon dot org wrote:
> -000000000000  00010000004d R_IA64_PCREL32LSB 0000000000000000 .text + 2
> +000000000000  00010000004d R_IA64_PCREL32LSB 0000000000000000 .text + 1

This seems to be an old debate reborn.  When we have relocs, tags, debug
info, whatever that applies to a long (2-slot) instruction, do we point
at slot 1 or slot 2?

old-as is pointing at slot 2.  new-as is pointing at slot 1.  One could
argue that new-as is actually more correct in this case, because the tag
should be pointing before the long instruction, and hence must be
pointing at slot 1.

Richard's patch broke this because he moved the tag_fixups code in
emit_one_bundle before the code that increments i when required_unit ==
IA64_UNIT_L.

So in the old code, we are setting debug info and unwind info to point
to slot 1 (before we increment i), and tags and relocs to point to slot
2 (after we increment i).

In the new code, we are setting debug info, unwind info, and tags to
point to slot 1 (before we increment i), and relocs to point to slot 2
(after we increment i).

At least we are consistently inconsistent.

Questions to ask at this point are:
1) Why did Richard move the code?  Did he run into some problem with the
debug info not matching the tags?
2) Why does the kernel care whether we use slot 1 or slot 2 here?  Maybe
the kernel can be fixed?  It seems wrong for the kernel to insist that a
tag must point into the middle of a long instruction.
3) Will this change affect gdb?
4) What does IAS do in this case?
5) Maybe we should fix relocs to point at slot 1 and then be completely
consistent?  This is an ABI change unfortunately, though perhaps we can
hide it by making the linker accept either one for a while.
-- 
Jim Wilson, GNU Tools Support, http://www.specifix.com





reply via email to

[Prev in Thread] Current Thread [Next in Thread]