ARM: fix linker file for newer ld support
authorAlbert Aribaud <albert.aribaud@free.fr>
Mon, 15 Nov 2010 20:46:03 +0000 (21:46 +0100)
committerWolfgang Denk <wd@denx.de>
Wed, 17 Nov 2010 19:44:32 +0000 (20:44 +0100)
older ld emitted all ELF relocations in input sections named
.rel.dyn, whereas newer ld uses names of the form .rel*. The
linker script only collected .rel.dyn input sections. Rewrite
to collect all .rel* input sections.

Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
arch/arm/cpu/arm1136/start.S
arch/arm/cpu/arm1136/u-boot.lds
arch/arm/cpu/arm1176/u-boot.lds
arch/arm/cpu/arm926ejs/u-boot.lds
arch/arm/cpu/armv7/start.S
arch/arm/cpu/armv7/u-boot.lds
arch/arm/cpu/pxa/u-boot.lds

index aecc943c8e980be314a38bd0582fa790da87b674..eec8bee7eb2c8c5c55ee1a4a7de1a489548c292c 100644 (file)
@@ -104,22 +104,6 @@ _bss_start_ofs:
 _bss_end_ofs:
        .word _end - _start
 
-.globl _datarel_start_ofs
-_datarel_start_ofs:
-       .word __datarel_start - _start
-
-.globl _datarelrolocal_start_ofs
-_datarelrolocal_start_ofs:
-       .word __datarelrolocal_start - _start
-
-.globl _datarellocal_start_ofs
-_datarellocal_start_ofs:
-       .word __datarellocal_start - _start
-
-.globl _datarelro_start_ofs
-_datarelro_start_ofs:
-       .word __datarelro_start - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
index 31f43f0e084b96838f62f58c89f56c7656c283bf..253adbe479cf997ea1cccd899b1018e74f8bc47b 100644 (file)
@@ -20,7 +20,8 @@
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
@@ -49,23 +50,9 @@ SECTIONS
        . = ALIGN(4);
        .data : {
                *(.data)
-       __datarel_start = .;
-               *(.data.rel)
-       __datarelrolocal_start = .;
-               *(.data.rel.ro.local)
-       __datarellocal_start = .;
-               *(.data.rel.local)
-       __datarelro_start = .;
-               *(.data.rel.ro)
        }
 
        . = ALIGN(4);
-       __rel_dyn_start = .;
-       .rel.dyn : { *(.rel.dyn) }
-       __rel_dyn_end = .;
-
-       __dynsym_start = .;
-       .dynsym : { *(.dynsym) }
 
        . = .;
        __u_boot_cmd_start = .;
@@ -73,9 +60,24 @@ SECTIONS
        __u_boot_cmd_end = .;
 
        . = ALIGN(4);
-       __bss_start = .;
-       .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
-       _end = .;
+
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+
+       .bss __rel_dyn_start (OVERLAY) : {
+               __bss_start = .;
+               *(.bss)
+                . = ALIGN(4);
+               _end = .;
+       }
 
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
index d9ed95405d848784b6e50eadcb51bfba0e08f36e..fe3180053277b2b1cd9a37a82b6c1423c37e7308 100644 (file)
@@ -41,33 +41,32 @@ SECTIONS
        . = ALIGN(4);
        .data : {
                *(.data)
-       __datarel_start = .;
-               *(.data.rel)
-       __datarelrolocal_start = .;
-               *(.data.rel.ro.local)
-       __datarellocal_start = .;
-               *(.data.rel.local)
-       __datarelro_start = .;
-               *(.data.rel.ro)
        }
 
-       . = ALIGN(4);
-       __rel_dyn_start = .;
-       .rel.dyn : { *(.rel.dyn) }
-       __rel_dyn_end = .;
-
-       __dynsym_start = .;
-       .dynsym : { *(.dynsym) }
-
        . = .;
        __u_boot_cmd_start = .;
        .u_boot_cmd : { *(.u_boot_cmd) }
        __u_boot_cmd_end = .;
 
        . = ALIGN(4);
-       __bss_start = .;
-       .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
-       _end = .;
+
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+
+       .bss __rel_dyn_start (OVERLAY) : {
+               __bss_start = .;
+               *(.bss)
+                . = ALIGN(4);
+               _end = .;
+       }
 
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
index 72f45f80040cf1fe644349edda6f187da7cc3698..28c91f937c612509be85fc5ea3c662f90adde670 100644 (file)
@@ -45,24 +45,30 @@ SECTIONS
 
        . = ALIGN(4);
 
-       __rel_dyn_start = .;
-       .rel.dyn : { *(.rel.dyn) }
-       __rel_dyn_end = .;
-
-       __dynsym_start = .;
-       .dynsym : { *(.dynsym) }
-
-       . = ALIGN(4);
-
        . = .;
        __u_boot_cmd_start = .;
        .u_boot_cmd : { *(.u_boot_cmd) }
        __u_boot_cmd_end = .;
 
        . = ALIGN(4);
-       __bss_start = .;
-       .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
-       _end = .;
+
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+
+       .bss __rel_dyn_start (OVERLAY) : {
+               __bss_start = .;
+               *(.bss)
+                . = ALIGN(4);
+               _end = .;
+       }
 
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
index bb3948d401cc30f34c9e748e53bdbda99ad5cbba..2dfdafe9826e9a54b6ad305c8e3878261156af59 100644 (file)
@@ -98,30 +98,6 @@ FIQ_STACK_START:
 IRQ_STACK_START_IN:
        .word   0x0badc0de
 
-.globl _datarel_start_ofs
-_datarel_start_ofs:
-       .word __datarel_start - _start
-
-.globl _datarelrolocal_start_ofs
-_datarelrolocal_start_ofs:
-       .word __datarelrolocal_start - _start
-
-.globl _datarellocal_start_ofs
-_datarellocal_start_ofs:
-       .word __datarellocal_start - _start
-
-.globl _datarelro_start_ofs
-_datarelro_start_ofs:
-       .word __datarelro_start - _start
-
-.globl _got_start_ofs
-_got_start_ofs:
-       .word __got_start - _start
-
-.globl _got_end_Ofs
-_got_end_ofs:
-       .word __got_end - _start
-
 /*
  * the actual reset code
  */
index 88a0fecd86b2ac510b945f8bde3b3276d617da9e..5725c30c69918676a4092ad25ddb7283f827738a 100644 (file)
@@ -44,34 +44,38 @@ SECTIONS
        . = ALIGN(4);
        .data : {
                *(.data)
-       __datarel_start = .;
-               *(.data.rel)
-       __datarelrolocal_start = .;
-               *(.data.rel.ro.local)
-       __datarellocal_start = .;
-               *(.data.rel.local)
-       __datarelro_start = .;
-               *(.data.rel.ro)
        }
-       . = ALIGN(4);
-       __rel_dyn_start = .;
-       .rel.dyn : { *(.rel.dyn) }
-       __rel_dyn_end = .;
-
-       __dynsym_start = .;
-       .dynsym : { *(.dynsym) }
 
-       __got_start = .;
        . = ALIGN(4);
-       .got : { *(.got) }
-       __got_end = .;
 
+       . = .;
        __u_boot_cmd_start = .;
        .u_boot_cmd : { *(.u_boot_cmd) }
        __u_boot_cmd_end = .;
 
        . = ALIGN(4);
-       __bss_start = .;
-       .bss : { *(.bss) }
-       _end = .;
+
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+
+       .bss __rel_dyn_start (OVERLAY) : {
+               __bss_start = .;
+               *(.bss)
+                . = ALIGN(4);
+               _end = .;
+       }
+
+       /DISCARD/ : { *(.dynstr*) }
+       /DISCARD/ : { *(.dynamic*) }
+       /DISCARD/ : { *(.plt*) }
+       /DISCARD/ : { *(.interp*) }
+       /DISCARD/ : { *(.gnu*) }
 }
index d6643f9529b2f95473a2dca4643f00dbfa04c66b..0818d0b6ea11341706e93ca65c51c92d34f8c33a 100644 (file)
@@ -43,14 +43,6 @@ SECTIONS
                *(.data)
        }
 
-       . = ALIGN(4);
-       __rel_dyn_start = .;
-       .rel.dyn : { *(.rel.dyn) }
-       __rel_dyn_end = .;
-
-       __dynsym_start = .;
-       .dynsym : { *(.dynsym) }
-
        . = ALIGN(4);
 
        . = .;
@@ -59,7 +51,28 @@ SECTIONS
        __u_boot_cmd_end = .;
 
        . = ALIGN(4);
-       __bss_start = .;
-       .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
-       _end = .;
+
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+
+       .bss __rel_dyn_start (OVERLAY) : {
+               __bss_start = .;
+               *(.bss)
+                . = ALIGN(4);
+               _end = .;
+       }
+
+       /DISCARD/ : { *(.dynstr*) }
+       /DISCARD/ : { *(.dynamic*) }
+       /DISCARD/ : { *(.plt*) }
+       /DISCARD/ : { *(.interp*) }
+       /DISCARD/ : { *(.gnu*) }
 }