fix bug with loadaddr and load regions

Nathan Sidwell nathan@codesourcery.com
Tue Aug 29 11:15:00 GMT 2006


Alan Modra wrote:
> On Fri, Aug 25, 2006 at 11:52:18AM +0100, Nathan Sidwell wrote:
>> I fell over a problem with using a load region and loadaddr, to create a 
>> romable image.  With
>> 	.data { data_load = LOADADDR(.data); ... } >ram AT>rom
>> I found that data_load's value became load address + execution address, 
>> because it was interpreted as a data-relative value.  The same problem 
>> didn't manifest with
>> 	.data : AT(EXPR) { data_load = LOADADDR(.data); ...} >ram
>> but of course here I have to calculate EXPR myself.
> 
> I think this has been fixed by my 2006-08-23 fold_name change.

I'm not sure that it will have been.  Your change altered the !os->load_base 
case, but with AT> we explicitly set os->load_base to an integer expression.

> I committed your new testcases.

The "-z" options aren't elf-universal.  Need to gate on
 > #target: *-*-linux*

Perhaps the -z option isn't needed on this testcase at all.  Perhaps that would 
be a better change. (I'm not sure if I'd need to increase the memory region 
addresses in the linker script, to cover other targets though.)

nathan

-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::         CodeSourcery
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk



More information about the Binutils mailing list