RE: heads up: apparent GAS bug in current (CVS) binutils

Lu, Hongjiu
2005-05-13T17:44:41Z

Hi David,

It is a linker issue. There are 2 definitions for those functions, the
generic is weak and the ia64 one is strong. The generic one has unwind
info and the ia64 one doesn't. When linker combines them, it keeps the
strong definition, but uses the weak unwind info. I will see what I can
do about it.

H.J. Lu
Intel Corporation

>-----Original Message-----
>From: David Mosberger [mailto:davidm@napali.hpl.hp.com]
>Sent: Thursday, May 12, 2005 2:56 PM
>To: linux-ia64@vger.kernel.org
>Cc: Lu, Hongjiu
>Subject: heads up: apparent GAS bug in current (CVS) binutils
>
>Just a quick heads up (it's late here and I'll be on travel tomorrow
>so I don't have time for a proper investigation/bug-report at the
>moment):
>
>If I build the kernel with the assembler from the current CVS
>binutils, I see these errors:
>
>ERROR: proc_set_irq_affinity: 179742 slots, total region length = 36
>ERROR: idle_regs: 68847 slots, total region length = 15
>
>The error in proc_set_irq_affinity() is definitely real and a result
>of the assembler (the assembly code generated by GCC looks fine). I
>didn't check on idle_regs.
>
>readelf -u vmlinux shows this:
>
><proc_set_irq_affinity>: [0xa00000010000ef60-0xa0000001000f9000], info
>at +0x765
>c50
> v1, flags=0x0 (), len=8 bytes
> R2:prologue_gr(mask=[rp,ar.pfs],grsave=r34,rlen=8)
> P7:pfs_when(t=0)
> P7:rp_when(t=7)
> R1:body(rlen()
>
><move_irq>: [0xa00000010000f0c0-0xa00000010000f250], info at +0x75da00
>
>Note how the end-address of proc_set_irq_affinity() is _way_ beyond
>the start-address of the next function, move_irq. Clearly something
>weird happened here.
>
>If I use the standard Debian/sarge assembler, these errors go away and
>the unwind-info looks sane.
>
> --david