diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-11-07 14:21:46 +0100 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-12-07 06:53:58 +0100 | 
| commit | 47ed5dd031d7d2c587e6afd386e79ccec1a1b7f7 (patch) | |
| tree | ee44012f0dbdab4ea6f4f4434dfa85974b659329 | |
| parent | 3064d599afaed1e601479efa372a6e83d4ea9deb (diff) | |
| download | olio-uboot-2014.01-47ed5dd031d7d2c587e6afd386e79ccec1a1b7f7.tar.xz olio-uboot-2014.01-47ed5dd031d7d2c587e6afd386e79ccec1a1b7f7.zip | |
arm: keep all sections in ELF file
Current LDS files /DISCARD/ a lot of sections when linking ELF
files, causing diagnostic tools such as readelf or objdump to
produce partial output. Keep all section at link stage, filter
only at objcopy time so that .bin remains minimal.
Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/config.mk | 3 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 16 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds | 16 | ||||
| -rw-r--r-- | arch/arm/cpu/ixp/u-boot.lds | 15 | ||||
| -rw-r--r-- | arch/arm/cpu/u-boot-spl.lds | 15 | ||||
| -rw-r--r-- | arch/arm/cpu/u-boot.lds | 18 | ||||
| -rw-r--r-- | board/actux1/u-boot.lds | 15 | ||||
| -rw-r--r-- | board/actux2/u-boot.lds | 15 | ||||
| -rw-r--r-- | board/actux3/u-boot.lds | 15 | ||||
| -rw-r--r-- | board/dvlhost/u-boot.lds | 15 | ||||
| -rw-r--r-- | board/freescale/mx31ads/u-boot.lds | 18 | ||||
| -rw-r--r-- | board/ti/am335x/u-boot.lds | 15 | ||||
| -rw-r--r-- | board/vpac270/u-boot-spl.lds | 18 | 
14 files changed, 113 insertions, 83 deletions
| @@ -393,7 +393,7 @@ $(obj)u-boot.hex:	$(obj)u-boot  		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@  $(obj)u-boot.srec:	$(obj)u-boot -		$(OBJCOPY) -O srec $< $@ +		$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@  $(obj)u-boot.bin:	$(obj)u-boot  		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ diff --git a/arch/arm/config.mk b/arch/arm/config.mk index bdabcf407..fd3e5fb66 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -103,3 +103,6 @@ ALL-y += checkarmreloc  # such usage by requiring word relocations.  PLATFORM_CPPFLAGS += $(call cc-option, -mword-relocations)  endif + +# limit ourselves to the sections we want in the .bin. +OBJCFLAGS += -j .text -j .rodata -j .data -j .u_boot_list -j .rel.dyn diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds index 40bcc3132..80fb9bdc8 100644 --- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds @@ -51,11 +51,13 @@ SECTIONS  	_end = .; -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynsym*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.hash*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds index 4927736b9..76b499d87 100644 --- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds @@ -51,11 +51,13 @@ SECTIONS  	_end = .; -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynsym*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.hash*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds index c8d2e126a..676ae2c4f 100644 --- a/arch/arm/cpu/ixp/u-boot.lds +++ b/arch/arm/cpu/ixp/u-boot.lds @@ -79,10 +79,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds index 36cc54a29..4880d0f78 100644 --- a/arch/arm/cpu/u-boot-spl.lds +++ b/arch/arm/cpu/u-boot-spl.lds @@ -51,12 +51,15 @@ SECTIONS  		__bss_end = .;  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  }  #if defined(CONFIG_SPL_MAX_SIZE) diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds index 23bf03065..9463a33dc 100644 --- a/arch/arm/cpu/u-boot.lds +++ b/arch/arm/cpu/u-boot.lds @@ -91,12 +91,14 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } -	/DISCARD/ : { *(.ARM.exidx*) } -	/DISCARD/ : { *(.gnu.linkonce.armexidx.*) } +	.dynsym _end : { *(.dynsym) } +	.hash : { *(.hash) } +	.got.plt : { *(.got.plt) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds index a656fa99d..12e018f31 100644 --- a/board/actux1/u-boot.lds +++ b/board/actux1/u-boot.lds @@ -87,10 +87,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds index 7a1717640..300273bf7 100644 --- a/board/actux2/u-boot.lds +++ b/board/actux2/u-boot.lds @@ -87,10 +87,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds index aadfdd2f5..9c97c533d 100644 --- a/board/actux3/u-boot.lds +++ b/board/actux3/u-boot.lds @@ -87,10 +87,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds index 40c9c8038..057d94b62 100644 --- a/board/dvlhost/u-boot.lds +++ b/board/dvlhost/u-boot.lds @@ -87,10 +87,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds index 3acc4ca54..6cfca2dab 100644 --- a/board/freescale/mx31ads/u-boot.lds +++ b/board/freescale/mx31ads/u-boot.lds @@ -90,13 +90,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.bss*) } -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynsym*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.hash*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/ti/am335x/u-boot.lds b/board/ti/am335x/u-boot.lds index a173f620e..9f96a4389 100644 --- a/board/ti/am335x/u-boot.lds +++ b/board/ti/am335x/u-boot.lds @@ -108,10 +108,13 @@ SECTIONS  		KEEP(*(.__bss_end));  	} -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds index 7eac4975b..08c78b3db 100644 --- a/board/vpac270/u-boot-spl.lds +++ b/board/vpac270/u-boot-spl.lds @@ -62,13 +62,13 @@ SECTIONS  		__bss_end = .;  	} -	/DISCARD/ : { *(.bss*) } -	/DISCARD/ : { *(.dynsym) } -	/DISCARD/ : { *(.dynstr*) } -	/DISCARD/ : { *(.dynsym*) } -	/DISCARD/ : { *(.dynamic*) } -	/DISCARD/ : { *(.hash*) } -	/DISCARD/ : { *(.plt*) } -	/DISCARD/ : { *(.interp*) } -	/DISCARD/ : { *(.gnu*) } +	.dynsym _end : { *(.dynsym) } +	.dynbss : { *(.dynbss) } +	.dynstr : { *(.dynstr*) } +	.dynamic : { *(.dynamic*) } +	.hash : { *(.hash*) } +	.plt : { *(.plt*) } +	.interp : { *(.interp*) } +	.gnu : { *(.gnu*) } +	.ARM.exidx : { *(.ARM.exidx*) }  } |