[RFA] Fix two tc-pdp11 internal errors

Alan Modra amodra@gmail.com
Fri Jan 14 23:13:00 GMT 2011


On Fri, Jan 14, 2011 at 04:59:19PM -0500, Paul Koning wrote:
> 
> On Jan 14, 2011, at 4:53 PM, Alan Modra wrote:
> 
> > On Fri, Jan 14, 2011 at 12:33:22PM -0500, Paul Koning wrote:
> >> +    case 8:
> >> +      con[0] = (value >> 48) & 0xff;
> >> +      con[1] = (value >> 56) & 0xff;
> >> +      con[2] = (value >> 32) & 0xff;
> >> +      con[3] = (value >> 40) & 0xff;
> >> +      con[4] = (value >> 16) & 0xff;
> >> +      con[5] = (value >> 24) & 0xff;
> >> +      con[6] =  value        & 0xff;
> >> +      con[7] = (value >>  8) & 0xff;
> >> +      break;
> > 
> > I think this will break the build on a 32-bit host (ie. when bfd_vma
> > is 32-bit).
> 
> I'll check.  My host is Mac OS, but I'm not sure if I'm using 32 or 64 bit.
> 
> On a 32 bit host, how are the 64 bit arguments to .quad passed around?

Not very well. :)  If you make it to the code you're patching above,
(eg. forward references) "value" will only be 32 bits.  Large
constants will be stored in expressionS as O_big.  You'll need to
check that read.c:emit_expr handles pdp endian correctly, and use
#ifdef BFD64 above to handle the high 32 bits.

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list