Messages in this thread |  | | | Date | Thu, 29 Jul 1999 08:22:11 +0930 (CST) | | From | Alan Modra <> | | Subject | Re: Problems with trampoline.S with 64 bit binutils |
| |
On Wed, 28 Jul 1999, Ralf Baechle wrote:
> Exactly the same also happens to a crosscompiler mips-irix6.5 -> i386-linux. > In that setup no 64-bit BFD was involved and the i386-linux targets were > the only ones configured. Binutils were compiled as N32 binary, so also it > cannot be a problem caused by the larger type sizes of a 64-bit host.
Since this thread hasn't died due to lack of interest, I'd better post the fix :-)
> --- binutils-current/gas/write.c~ Fri Jul 16 17:57:19 1999 > +++ binutils-current/gas/write.c Tue Jul 27 20:32:04 1999 > @@ -2733,24 +2733,13 @@ > { > if ((size_t) size < sizeof (valueT)) > { > - valueT mask, hibit; > + valueT mask; > > - /* set all bits to one */ > mask = 0; > - mask--; > - /* Technically, combining these produces an undefined result > - if size is sizeof (valueT), though I think these two > - half-way operations should both be defined. And the > - compiler should be able to combine them if it's valid on > - the host architecture. */ > - mask <<= size * 4; > - mask <<= size * 4; > - hibit = (valueT) 1 << (size * 8 - 1); > - if (((add_number & mask) != 0 > - || (fixP->fx_signed > - && (add_number & hibit) != 0)) > - && ((add_number & mask) != mask > - || (add_number & hibit) == 0)) > + mask--; /* set all bits to one */ > + mask <<= size * 8 - (fixP->fx_signed ? 1 : 0); > + if ((add_number & mask) != 0 > + && (add_number & mask) != mask) > { > char buf[50], buf2[50]; > sprint_value (buf, fragP->fr_address + where);
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
|  |