Re: [arm-gnu] Linker problems with arm-none-eabi 3.4.4
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [arm-gnu] Linker problems with arm-none-eabi 3.4.4
- To: arm-gnu@xxxxxxxxxxxxxxxx
- Subject: Re: [arm-gnu] Linker problems with arm-none-eabi 3.4.4
- From: Paul Brook <paul@xxxxxxxxxxxxxxxx>
- Date: Fri, 10 Mar 2006 17:30:08 +0000
> Next, I get a linker error for "no memory region specified for loadable
> section '.ARM.extab' (strange, since I didn't get this with v 3.4.3).
>
> Looking at the example linker files, I can add sections to my .lds file
> that will give 0-byte allocations for sections that might be required by
> the linker. I think the sections would look like this:
>
> .ARM.extab 0 : { *(.ARM.extab) }
> .ARM.exidx 0 : { *(.ARM.exidx) }
>
> Once I add these, I get some unresolved reference problems (undefined
> reference to '__exidx_end' ).
>
> Since I don't fully understand these errors, I'm not exactly sure where to
> look next for more information. I looked around for some change notes that
> might describe the linker differences between 3.4.3 and 3.4.4;
> unfortunately I didnt really find anything.
These are all part of the C++ unwinding mechanisms. They may get pulled in
even if your application does not use C++ because some parts of the runtime
library need to be exception safe for use with C++ code.
The __exidx_{start,end} symbols are required so that the runtime library can
locate the .ARM.exidx section. They are defined in the default linker script
as follows:
__exidx_start = .;
.ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
__exidx_end = .;
You can display the default linker script by running
arm-none-eabi-ld --verbose
Paul