Patchwork [U-Boot,RFC] arm: lds: Remove libgcc eabi exception handling tables

login
register
mail settings
Submitter Michal Simek
Date May 9, 2013, 9:35 a.m.
Message ID <40cc0ff325a279f7fe2a51e5a91aa24adcbad373.1368092129.git.michal.simek@xilinx.com>
Download mbox | patch
Permalink /patch/242738/
State RFC
Delegated to: Albert ARIBAUD
Headers show

Comments

Michal Simek - May 9, 2013, 9:35 a.m.
Remove ARM eabi exception handling tables (for frame unwinding).
AFAICT, u-boot stubs away the frame unwiding routines, so the tables will
more or less just consume space. It should be OK to remove them.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
Other options could be to complete u-boot/arch/arm/lib/* so that
libgcc routines with exception handling dont get pulled in. Or
to avoid user code (like the mentioned patch) which causes external
libgcc functions to get pulled in...

---
 arch/arm/cpu/u-boot.lds | 2 ++
 1 file changed, 2 insertions(+)

--
1.8.2.1
Albert ARIBAUD - May 10, 2013, 7:07 p.m.
Hi Michal,

On Thu,  9 May 2013 11:35:33 +0200, Michal Simek
<michal.simek@xilinx.com> wrote:

> Remove ARM eabi exception handling tables (for frame unwinding).
> AFAICT, u-boot stubs away the frame unwiding routines, so the tables will
> more or less just consume space. It should be OK to remove them.
> 
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
> Other options could be to complete u-boot/arch/arm/lib/* so that
> libgcc routines with exception handling dont get pulled in. Or
> to avoid user code (like the mentioned patch) which causes external
> libgcc functions to get pulled in...

Er... which mentioned patch?

Amicalement,

Patch

diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index d9bbee3..e139b90 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -106,4 +106,6 @@  SECTIONS
 	/DISCARD/ : { *(.plt*) }
 	/DISCARD/ : { *(.interp*) }
 	/DISCARD/ : { *(.gnu*) }
+	/DISCARD/ : { *(.ARM.exidx*) }
+	/DISCARD/ : { *(.gnu.linkonce.armexidx.*) }
 }