bug-binutils
[Top][All Lists]
Advanced

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

[Bug gas/1804] Wrong output for 64-bit difference of labels


From: dave at hiauly1 dot hia dot nrc dot ca
Subject: [Bug gas/1804] Wrong output for 64-bit difference of labels
Date: 6 Nov 2005 03:57:57 -0000

------- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca  
2005-11-06 03:57 -------
Subject: Re:  Wrong output for 64-bit difference of labels

> ------- Additional Comments From amodra at bigpond dot net dot au  2005-11-06 
> 03:12 -------
> I'd be inclined to use
> 
>  if (fixP->fx_size > 4)

I was thinking that other sizes might in theory be used for expressions.
For example, GCC uses .word for label differences in switch tables.

>    {
>      /* Handle constant output. */
>      number_to_chars_bigendian (fixpos, *valP, fixP->fx_size);
>      return;
>    }
> 
> After all, if the fixup is for a dword, none of the insn handling code in
> md_apply_fix is appropriate.  In fact, it would be even better to avoid 
> anything
> in md_apply_fix that assumes a fixup is for an insn, ie. bfd_hppa_insn2fmt
> shouldn't be in md_apply_fix at all.  Instead, pass the insn fmt (if it is an
> insn) in via fx_r_format.

I agree.  It appears that there aren't any conflicts between data and
insn format values.  It also appears that insn formats are set by pa_ip,
so it shouldn't be necessary to call bfd_hppa_insn2fmt.

I'm amazed that data fixups work at all on hppa64.

Dave


-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=1804

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

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