Skip to contentSkip to conversation

at91bootstrap: fix gcc-4.6.x overlap linker issue

PATCH New Grégory Hermant 2 participants 3 messages Oct 2, 2012 – Oct 9, 2012 Arm/Microchip (AT91) SoC support

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 at91bootstrap: fix gcc-4.6.x overlap linker issue

---
 ...at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch |   53 ++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch
boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch new file +47 -0
new file mode 100644
index 0000000..56947c7
@@ -0,0 +1,53 @@
+From 5a094e959cd216c1be148effc624eb12e2083de9 Mon Sep 17 00:00:00 2001
+From: Gregory Hermant <[email protected]>
+Date: Mon, 1 Oct 2012 16:54:43 +0200
+Subject: [PATCH] at91bootstrap-v1.16-ldscript-fix
+
+---
+ crt0_gnu.S          |    2 +-
+ elf32-littlearm.lds |   12 +++++++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/crt0_gnu.S b/crt0_gnu.S
+index 002feef..ea6581f 100644
+--- a/crt0_gnu.S
++++ b/crt0_gnu.S
+@@ -191,7 +191,7 @@ _go:
+ + 	.align
+ _lp_data:
+-        .word _etext
++        .word _edummy
+         .word _sdata
+         .word _edata
+ +diff --git a/elf32-littlearm.lds b/elf32-littlearm.lds
+index a33952f..17b1646 100644
+--- a/elf32-littlearm.lds
++++ b/elf32-littlearm.lds
+@@ -10,11 +10,21 @@ SECTIONS
+ 		*(.rodata)                 /* read-only data (constants) */
+ 		*(.rodata*)
+ 		. = ALIGN(4);
++		*(.glue_7)
++		. = ALIGN(4);
++		*(.eh_frame)
++		. = ALIGN(4);
+  		_etext = . ;
+ 	}
+ + 	/* collect all initialized .data sections */
+-	.data : AT ( ADDR (.text) + SIZEOF (.text) ) { ++	/* .data : AT ( ADDR (.text) + SIZEOF (.text) ) { */
++	. = ALIGN(4);
++	.dummy : {
++		_edummy = .;
++	}
++ ++	.data : AT (LOADADDR(.dummy)) {
+ 		_sdata = .;
+ 		*(.vectors)
+ 		*(.data)
+-- +1.7.9.5
+
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 at91bootstrap: fix gcc-4.6.x overlap linker issue

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Gr?gory" == Gr?gory Hermant <[email protected]> writes:

Gr?gory> ---

 Gr?gory>  ...at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch |   53 ++++++++++++++++++++

Gr?gory> 1 file changed, 53 insertions(+)
Gr?gory> create mode 100644 boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch

Gr?gory> diff --git a/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch b/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch Gr?gory> new file mode 100644
Gr?gory> index 0000000..56947c7
Gr?gory> --- /dev/null
Gr?gory> +++ b/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch
Gr?gory> @@ -0,0 +1,53 @@
Gr?gory> +From 5a094e959cd216c1be148effc624eb12e2083de9 Mon Sep 17 00:00:00 2001
Gr?gory> +From: Gregory Hermant <[email protected]>
Gr?gory> +Date: Mon, 1 Oct 2012 16:54:43 +0200
Gr?gory> +Subject: [PATCH] at91bootstrap-v1.16-ldscript-fix
Gr?gory> +
Gr?gory> +---

 Gr?gory> + crt0_gnu.S          |    2 +-
 Gr?gory> + elf32-littlearm.lds |   12 +++++++++++-
 Gr?gory> + 2 files changed, 12 insertions(+), 2 deletions(-)
 Gr?gory> +
 Gr?gory> +diff --git a/crt0_gnu.S b/crt0_gnu.S
 Gr?gory> +index 002feef..ea6581f 100644
 Gr?gory> +--- a/crt0_gnu.S
 Gr?gory> ++++ b/crt0_gnu.S
 Gr?gory> +@@ -191,7 +191,7 @@ _go:
 Gr?gory> + + 	.align
 Gr?gory> + _lp_data:
 Gr?gory> +-        .word _etext
 Gr?gory> ++        .word _edummy
 Gr?gory> +         .word _sdata
 Gr?gory> +         .word _edata

Gr?gory> + +diff --git a/elf32-littlearm.lds b/elf32-littlearm.lds Gr?gory> +index a33952f..17b1646 100644
Gr?gory> +--- a/elf32-littlearm.lds
Gr?gory> ++++ b/elf32-littlearm.lds
Gr?gory> +@@ -10,11 +10,21 @@ SECTIONS
Gr?gory> + *(.rodata) /* read-only data (constants) */
Gr?gory> + *(.rodata*)
Gr?gory> + . = ALIGN(4);
Gr?gory> ++ *(.glue_7)
Gr?gory> ++ . = ALIGN(4);
Gr?gory> ++ *(.eh_frame)
Gr?gory> ++ . = ALIGN(4);

Is all of that needed? Isn't it just that gcc 4.6+ adds a bunch of .text.<blah> sections? I've fixed it up for an internal tree at work by just doing:

elf32-littlearm.lds +1 -1
index a33952f..f50c30c 100644
@@ -6,7 +6,7 @@ SECTIONS
         . = ALIGN(4);
        .text : { 
                _stext = .;
-               *(.text)
+               *(.text*)
                *(.rodata)                 /* read-only data (constants) */
                *(.rodata*)
                . = ALIGN(4);
Signature · 1 line
Bye, Peter Korsgaard
#2 lore raw

PATCH 1/1 at91bootstrap: fix gcc-4.6.x overlap linker issue

Hello peter,
You are right there's no need to add the code below in the linker script to fix this issue. Thanks for your time.
gregory

Le 08/10/2012 22:04, Peter Korsgaard a ?crit :

Quoted 65 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Gr?gory" == Gr?gory Hermant <[email protected]> writes:

Gr?gory> ---

 Gr?gory>  ...at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch |   53 ++++++++++++++++++++

Gr?gory> 1 file changed, 53 insertions(+)
Gr?gory> create mode 100644 boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch

Gr?gory> diff --git a/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch b/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch Gr?gory> new file mode 100644
Gr?gory> index 0000000..56947c7
Gr?gory> --- /dev/null
Gr?gory> +++ b/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch
Gr?gory> @@ -0,0 +1,53 @@
Gr?gory> +From 5a094e959cd216c1be148effc624eb12e2083de9 Mon Sep 17 00:00:00 2001
Gr?gory> +From: Gregory Hermant <[email protected]>
Gr?gory> +Date: Mon, 1 Oct 2012 16:54:43 +0200
Gr?gory> +Subject: [PATCH] at91bootstrap-v1.16-ldscript-fix
Gr?gory> +
Gr?gory> +---

 Gr?gory> + crt0_gnu.S          |    2 +-
 Gr?gory> + elf32-littlearm.lds |   12 +++++++++++-
 Gr?gory> + 2 files changed, 12 insertions(+), 2 deletions(-)
 Gr?gory> +
 Gr?gory> +diff --git a/crt0_gnu.S b/crt0_gnu.S
 Gr?gory> +index 002feef..ea6581f 100644
 Gr?gory> +--- a/crt0_gnu.S
 Gr?gory> ++++ b/crt0_gnu.S
 Gr?gory> +@@ -191,7 +191,7 @@ _go:
 Gr?gory> + + 	.align
 Gr?gory> + _lp_data:
 Gr?gory> +-        .word _etext
 Gr?gory> ++        .word _edummy
 Gr?gory> +         .word _sdata
 Gr?gory> +         .word _edata

Gr?gory> + +diff --git a/elf32-littlearm.lds b/elf32-littlearm.lds Gr?gory> +index a33952f..17b1646 100644
Gr?gory> +--- a/elf32-littlearm.lds
Gr?gory> ++++ b/elf32-littlearm.lds
Gr?gory> +@@ -10,11 +10,21 @@ SECTIONS
Gr?gory> + *(.rodata) /* read-only data (constants) */
Gr?gory> + *(.rodata*)
Gr?gory> + . = ALIGN(4);
Gr?gory> ++ *(.glue_7)
Gr?gory> ++ . = ALIGN(4);
Gr?gory> ++ *(.eh_frame)
Gr?gory> ++ . = ALIGN(4);

Is all of that needed? Isn't it just that gcc 4.6+ adds a bunch of .text.<blah> sections? I've fixed it up for an internal tree at work by just doing:

elf32-littlearm.lds +1 -1
index a33952f..f50c30c 100644
@@ -6,7 +6,7 @@ SECTIONS
         . = ALIGN(4);
        .text : { 
                _stext = .;
-               *(.text)
+               *(.text*)
                *(.rodata)                 /* read-only data (constants) */
                *(.rodata*)
                . = ALIGN(4);