Skip to contentSkip to conversation

MIPS: add unified u-boot.lds file

PATCH New Gabor Juhos 4 participants 12 messages Jan 29, 2013 MIPS

lore
Share & tools
lore
#0 lore raw

PATCH 1/7 MIPS: add unified u-boot.lds file

The patch adds an unified linker script file which can be used for all currently supported MIPS targets.

Cc Daniel Schwierzeck <[email protected]>
Cc Vlad Lungu <[email protected]>
Cc Thomas Sailer <[email protected]>
Cc Stefan Roese <[email protected]>
Cc Wolfgang Denk <[email protected]>
Cc Thomas Lange <[email protected]>
Cc Xiangfu Liu <[email protected]>
---
 arch/mips/cpu/u-boot.lds |   90 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 arch/mips/cpu/u-boot.lds
arch/mips/cpu/u-boot.lds new file +90 -0
new file mode 100644
index 0000000..988764d
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk Engineering, <[email protected]>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#if defined(CONFIG_64BIT)
+#define ELF_FMT		elf64
+#define PTR_COUNT_SHIFT	3
+#else
+#define ELF_FMT		elf32
+#define PTR_COUNT_SHIFT	2
+#endif
+
+#if defined(CONFIG_SYS_LITTLE_ENDIAN)
+#define ELF_ENDIAN	tradlittlemips
+#else
+#define ELF_ENDIAN	tradbigmips
+#endif
+
+#define _MIPS_FORMAT2(x)	#x
+#define _MIPS_FORMAT(x,y)	_MIPS_FORMAT2(x-y)
+
+#define MIPS_FORMAT		_MIPS_FORMAT(ELF_FMT,ELF_ENDIAN)
+
+OUTPUT_FORMAT(MIPS_FORMAT, MIPS_FORMAT, MIPS_FORMAT)
+OUTPUT_ARCH(mips)
+ENTRY(_start)
+SECTIONS
+{
+	. = 0x00000000;
+
+	. = ALIGN(4);
+	.text       :
+	{
+	  *(.text*)
+	}
+
+	. = ALIGN(4);
+	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+
+	. = ALIGN(4);
+	.data  : { *(.data*) }
+
+	. = .;
+	_gp = ALIGN(16) +0x7ff0;
+
+	.got  : {
+		__got_start = .;
+		*(.got)
+		__got_end = .;
+	}
+
+	. = ALIGN(4);
+	.sdata  : { *(.sdata*) }
+
+	. = ALIGN(4);
+	.u_boot_list : {
+		#include <u-boot.lst>
+	}
+
+	uboot_end_data = .;
+
+	num_got_entries = (__got_end - __got_start) >> PTR_COUNT_SHIFT;
+
+	. = ALIGN(4);
+	.sbss  : { *(.sbss*) }
+	.bss : {
+		*(.bss*)
+		. = ALIGN(4);
+	}
+	uboot_end = .;
+}
Signature · 1 line
1.7.10
#1 lore raw

PATCH 2/7 MIPS: qemu-mips: use the unified u-boot.lds script

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All qemu_mips targets are producing identical binary images after the change than before.

Cc Daniel Schwierzeck <[email protected]>
Cc Vlad Lungu <[email protected]>
---
 board/qemu-mips/u-boot.lds |   78 --------------------------------------------
 1 file changed, 78 deletions(-)
 delete mode 100644 board/qemu-mips/u-boot.lds
board/qemu-mips/u-boot.lds deleted +0 -78
deleted file mode 100644
index cb2356f..0000000
@@ -1,78 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk Engineering, <[email protected]>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-#if defined(CONFIG_64BIT)
-OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips", "elf64-tradlittlemips")
-#else
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
-#endif
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-
-	. = ALIGN(4);
-	.text       :
-	{
-	  *(.text*)
-	}
-
-	. = ALIGN(4);
-	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-	. = ALIGN(4);
-	.data  : { *(.data*) }
-
-	. = .;
-	_gp = ALIGN(16) +0x7ff0;
-
-	.got  : {
-	__got_start = .;
-		*(.got)
-	__got_end = .;
-	}
-
-	. = ALIGN(4);
-	.sdata  : { *(.sdata*) }
-
-	. = ALIGN(4);
-	.u_boot_list : {
-		#include <u-boot.lst>
-	}
-
-	uboot_end_data = .;
-#if defined(CONFIG_64BIT)
-	num_got_entries = (__got_end - __got_start) >> 3;
-#else
-	num_got_entries = (__got_end - __got_start) >> 2;
-#endif
-
-	. = ALIGN(4);
-	.sbss  : { *(.sbss*) }
-	.bss  : { *(.bss*) . = ALIGN(4); }
-	uboot_end = .;
-}
Signature · 1 line
1.7.10
#2 lore raw

PATCH 3/7 MIPS: pb1x00: remove custom u-boot.lds script

In reply to Gabor Juhos

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All pb1x00 targets are producing identical binary
images after the change than before.

Cc Daniel Schwierzeck <[email protected]>
Cc Thomas Sailer <[email protected]>
---
 board/pb1x00/u-boot.lds |   69 -----------------------------------------------
 1 file changed, 69 deletions(-)
 delete mode 100644 board/pb1x00/u-boot.lds
board/pb1x00/u-boot.lds deleted +0 -69
deleted file mode 100644
index 07ddd36..0000000
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk Engineering, <[email protected]>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips", "elf32-tradlittlemips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-
-	. = ALIGN(4);
-	.text       :
-	{
-	  *(.text*)
-	}
-
-	. = ALIGN(4);
-	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-	. = ALIGN(4);
-	.data  : { *(.data*) }
-
-	. = .;
-	_gp = ALIGN(16) + 0x7ff0;
-
-	.got : {
-	  __got_start = .;
-	  *(.got)
-	  __got_end = .;
-	}
-
-	.sdata  : { *(.sdata*) }
-
-	. = ALIGN(4);
-	.u_boot_list : {
-		#include <u-boot.lst>
-	}
-
-	uboot_end_data = .;
-	num_got_entries = (__got_end - __got_start) >> 2;
-
-	. = ALIGN(4);
-	.sbss (NOLOAD)  : { *(.sbss*) }
-	.bss (NOLOAD)  : { *(.bss*) . = ALIGN(4); }
-	uboot_end = .;
-}
Signature · 1 line
1.7.10
#3 lore raw

PATCH 4/7 MIPS: vct: remove custom u-boot.lds script

In reply to Gabor Juhos

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All vct targets are producing identical binary
images after the change than before.

Cc Daniel Schwierzeck <[email protected]>
Cc Stefan Roese <[email protected]>
---
 board/micronas/vct/u-boot.lds |   69 -----------------------------------------
 1 file changed, 69 deletions(-)
 delete mode 100644 board/micronas/vct/u-boot.lds
board/micronas/vct/u-boot.lds deleted +0 -69
deleted file mode 100644
index 2ce8d0e..0000000
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk Engineering, <[email protected]>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-
-	. = ALIGN(4);
-	.text       :
-	{
-	  *(.text*)
-	}
-
-	. = ALIGN(4);
-	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-	. = ALIGN(4);
-	.data  : { *(.data*) }
-
-	. = .;
-	_gp = ALIGN(16) + 0x7ff0;
-
-	.got : {
-	  __got_start = .;
-	  *(.got)
-	  __got_end = .;
-	}
-
-	. = ALIGN(4);
-	.sdata  : { *(.sdata*) }
-
-	. = ALIGN(4);
-	.u_boot_list : {
-		#include <u-boot.lst>
-	}
-
-	. = ALIGN(4);
-	uboot_end_data = .;
-	num_got_entries = (__got_end - __got_start) >> 2;
-
-	. = ALIGN(4);
-	.sbss (NOLOAD)  : { *(.sbss*) }
-	. = ALIGN(4);
-	.bss (NOLOAD)  : { *(.bss*) }
-	uboot_end = .;
-}
Signature · 1 line
1.7.10
#4 lore raw

PATCH 4/7 MIPS: vct: remove custom u-boot.lds script

Quoted 10 lines · Gabor Juhos

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All vct targets are producing identical binary images after the change than before.

Cc Daniel Schwierzeck <[email protected]>
Cc Stefan Roese <[email protected]>

I can't really test this, but it looks good. So:

Thanks,
Stefan

#5 lore raw

PATCH 4/7 MIPS: vct: remove custom u-boot.lds script

2013.01.29. 10:05 keltez?ssel, Stefan Roese ?rta:

Quoted 8 lines · Gabor Juhos
Quoted 7 lines

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All vct targets are producing identical binary images after the change than before.

Quoted 7 lines
Quoted 3 lines
Cc Daniel Schwierzeck <[email protected]>
Cc Stefan Roese <[email protected]>

I can't really test this, but it looks good. So:

Thanks!

-Gabor

#6 lore raw

PATCH 5/7 MIPS: incaip: remove custom u-boot.lds script

In reply to Gabor Juhos

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All incaip targets are producing identical binary
images after the change than before.

Cc Daniel Schwierzeck <[email protected]>
Cc Wolfgang Denk <[email protected]>
---
 board/incaip/u-boot.lds |   69 -----------------------------------------------
 1 file changed, 69 deletions(-)
 delete mode 100644 board/incaip/u-boot.lds
board/incaip/u-boot.lds deleted +0 -69
deleted file mode 100644
index 8a871cf..0000000
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk Engineering, <[email protected]>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-
-	. = ALIGN(4);
-	.text       :
-	{
-	  *(.text*)
-	}
-
-	. = ALIGN(4);
-	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-	. = ALIGN(4);
-	.data  : { *(.data*) }
-
-	. = .;
-	_gp = ALIGN(16) + 0x7ff0;
-
-	.got : {
-	  __got_start = .;
-	  *(.got)
-	  __got_end = .;
-	}
-
-	.sdata  : { *(.sdata*) }
-
-	. = ALIGN(4);
-	.u_boot_list : {
-		#include <u-boot.lst>
-	}
-
-	uboot_end_data = .;
-	num_got_entries = (__got_end - __got_start) >> 2;
-
-	. = ALIGN(4);
-	.sbss (NOLOAD)  : { *(.sbss*) }
-	.bss (NOLOAD)  : { *(.bss*) . = ALIGN(4); }
-	uboot_end = .;
-}
Signature · 1 line
1.7.10
#7 lore raw

PATCH 6/7 MIPS: dbau1x00: remove custom u-boot.lds script

In reply to Gabor Juhos

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

All dbau1x00 targets are producing identical binary images after the change than before.

Cc Daniel Schwierzeck <[email protected]>
Cc Thomas Lange <[email protected]>
---
 board/dbau1x00/u-boot.lds |   69 ---------------------------------------------
 1 file changed, 69 deletions(-)
 delete mode 100644 board/dbau1x00/u-boot.lds
board/dbau1x00/u-boot.lds deleted +0 -69
deleted file mode 100644
index 8a871cf..0000000
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk Engineering, <[email protected]>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
-*/
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-
-	. = ALIGN(4);
-	.text       :
-	{
-	  *(.text*)
-	}
-
-	. = ALIGN(4);
-	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-	. = ALIGN(4);
-	.data  : { *(.data*) }
-
-	. = .;
-	_gp = ALIGN(16) + 0x7ff0;
-
-	.got : {
-	  __got_start = .;
-	  *(.got)
-	  __got_end = .;
-	}
-
-	.sdata  : { *(.sdata*) }
-
-	. = ALIGN(4);
-	.u_boot_list : {
-		#include <u-boot.lst>
-	}
-
-	uboot_end_data = .;
-	num_got_entries = (__got_end - __got_start) >> 2;
-
-	. = ALIGN(4);
-	.sbss (NOLOAD)  : { *(.sbss*) }
-	.bss (NOLOAD)  : { *(.bss*) . = ALIGN(4); }
-	uboot_end = .;
-}
Signature · 1 line
1.7.10
#8 lore raw

PATCH 7/7 MIPS: qi_lb60: remove custom u-boot.lds script

In reply to Gabor Juhos

Remove the board specific linker script. It is not needed anymore, the unified MIPS linker script can be used instead.

The qi_lb60 target produces a slightly different
image after the change than before. The value of
'num_got_entries' symbol is different:

    @@ -49,7 +49,7 @@
     801000b4:      80122d00        lb      s2,11520(zero)
     801000b8:      80123500        lb      s2,13568(zero)
     801000bc:      80123ef8        lb      s2,16120(zero)
    -801000c0:      00000139        0x139
    +801000c0:      00000136        tne     zero,zero,0x4

     801000c4 <in_ram>:
     801000c4:      8d0bfffc        lw      t3,-4(t0)

This is caused by the different placement of the
'__got_start' and '__got_end' symbols between the
board specific scrip and the unified script.

board specific script:

        __got_start = .;
        .got  : { *(.got) }
        __got_end = .;
  unified script:
        .got  : {
                __got_start = .;
                *(.got)
                __got_end = .;
        }

Despite this difference, the resulting images are
functionally identical.

Cc Daniel Schwierzeck <[email protected]>
Cc Xiangfu Liu <[email protected]>
---
 board/qi/qi_lb60/u-boot.lds |   63 -------------------------------------------
 1 file changed, 63 deletions(-)
 delete mode 100644 board/qi/qi_lb60/u-boot.lds
board/qi/qi_lb60/u-boot.lds deleted +0 -63
deleted file mode 100644
index b3cb869..0000000
@@ -1,63 +0,0 @@
-/*
- * (C) Copyright 2006
- * Ingenic Semiconductor, <[email protected]>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradlittlemips", "elf32-tradlittlemips")
-
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
-	. = 0x00000000;
-
-	. = ALIGN(4);
-	.text :
-	{
-	  *(.text*)
-	}
-
-	. = ALIGN(4);
-	.rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-	. = ALIGN(4);
-	.data  : { *(.data*) }
-
-	. = .;
-	_gp = ALIGN(16) + 0x7ff0;
-
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
-
-	.sdata  : { *(.sdata*) }
-
-
-	. = ALIGN(4);
-	.u_boot_list : {
-	#include <u-boot.lst>
-	}
-
-	uboot_end_data = .;
-	num_got_entries = (__got_end - __got_start) >> 2;
-
-	. = ALIGN(4);
-	.sbss  : { *(.sbss*) }
-	.bss  : { *(.bss*) . = ALIGN(4); }
-	uboot_end = .;
-}
Signature · 1 line
1.7.10
#9 lore raw

PATCH 1/7 MIPS: add unified u-boot.lds file

In reply to Gabor Juhos

2013/1/29 Gabor Juhos <[email protected]>:

Quoted 11 lines

The patch adds an unified linker script file which can be used for all currently supported MIPS targets.

Cc Daniel Schwierzeck <[email protected]>
Cc Vlad Lungu <[email protected]>
Cc Thomas Sailer <[email protected]>
Cc Stefan Roese <[email protected]>
Cc Wolfgang Denk <[email protected]>
Cc Thomas Lange <[email protected]>
Cc Xiangfu Liu <[email protected]>

AFAIK you can remove Vlad Lungu and Thomas Lange from the list of board maintainers

Quoted 44 lines
---
 arch/mips/cpu/u-boot.lds |   90 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 arch/mips/cpu/u-boot.lds
arch/mips/cpu/u-boot.lds new file +33 -0
new file mode 100644
index 0000000..988764d
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk Engineering, <[email protected]>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#if defined(CONFIG_64BIT)
+#define ELF_FMT                elf64
+#define PTR_COUNT_SHIFT        3
+#else
+#define ELF_FMT                elf32
+#define PTR_COUNT_SHIFT        2
+#endif
+
+#if defined(CONFIG_SYS_LITTLE_ENDIAN)
+#define ELF_ENDIAN     tradlittlemips

arch/mips/cpu/u-boot.lds line 43

Quoted 10 lines
arch/mips/cpu/u-boot.lds new file +10 -0
+#else
+#define ELF_ENDIAN     tradbigmips
+#endif
+
+#define _MIPS_FORMAT2(x)       #x
+#define _MIPS_FORMAT(x,y)      _MIPS_FORMAT2(x-y)
+
+#define MIPS_FORMAT            _MIPS_FORMAT(ELF_FMT,ELF_ENDIAN)
+
+OUTPUT_FORMAT(MIPS_FORMAT, MIPS_FORMAT, MIPS_FORMAT)

we need to get rid of OUTPUT_FORMAT. This was always misused due to some endianess and toolchain problems which have been resolved in the meantime.

We should use gcc flags like it is done in linux kernel. The config.mk of mips64 already
has those flags. Mips32 and xburst need to be extended with:

PLATFORM_CPPFLAGS += -mabi=32 -DCONFIG_32BIT
ifdef CONFIG_SYS_BIG_ENDIAN
PLATFORM_LDFLAGS += -m elf32btsmip
else
PLATFORM_LDFLAGS += -m elf32ltsmip
endif

arch/mips/cpu/u-boot.lds line 54

Quoted 11 lines
arch/mips/cpu/u-boot.lds new file +11 -0
+OUTPUT_ARCH(mips)
+ENTRY(_start)
+SECTIONS
+{
+       . = 0x00000000;
+
+       . = ALIGN(4);
+       .text       :
+       {
+         *(.text*)
+       }

please fix the style globally to

.text : {
        *(.text*)
}
Quoted 8 lines
arch/mips/cpu/u-boot.lds new file +8 -0
+
+       . = ALIGN(4);
+       .rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+
+       . = ALIGN(4);
+       .data  : { *(.data*) }
+
+       . = .;

arch/mips/cpu/u-boot.lds line 72

Quoted 10 lines
arch/mips/cpu/u-boot.lds new file +10 -0
+       _gp = ALIGN(16) +0x7ff0;
+
+       .got  : {
+               __got_start = .;
+               *(.got)
+               __got_end = .;
+       }
+
+       . = ALIGN(4);
+       .sdata  : { *(.sdata*) }

*(.sdata*) should be merged with .data

Quoted 6 lines
arch/mips/cpu/u-boot.lds new file +6 -0
+
+       . = ALIGN(4);
+       .u_boot_list : {
+               #include <u-boot.lst>
+       }
+

arch/mips/cpu/u-boot.lds line 88

Quoted 10 lines
arch/mips/cpu/u-boot.lds new file +10 -0
+       uboot_end_data = .;
+
+       num_got_entries = (__got_end - __got_start) >> PTR_COUNT_SHIFT;
+
+       . = ALIGN(4);
+       .sbss  : { *(.sbss*) }
+       .bss : {
+               *(.bss*)
+               . = ALIGN(4);
+       }

. = ALIGN(4);

.bss : {
        *(.bss*)
        *(.sbss*)
        . = ALIGN(4);
}
Quoted 5 lines
arch/mips/cpu/u-boot.lds new file +2 -1
+       uboot_end = .;
+}
--

1.7.10

Signature · 2 lines
Best regards,
Daniel
#10 lore raw

PATCH 1/7 MIPS: add unified u-boot.lds file

2013.01.29. 11:44 keltez?ssel, Daniel Schwierzeck ?rta:

Quoted 13 lines

2013/1/29 Gabor Juhos <[email protected]>:

Quoted 11 lines

The patch adds an unified linker script file which can be used for all currently supported MIPS targets.

Cc Daniel Schwierzeck <[email protected]>
Cc Vlad Lungu <[email protected]>
Cc Thomas Sailer <[email protected]>
Cc Stefan Roese <[email protected]>
Cc Wolfgang Denk <[email protected]>
Cc Thomas Lange <[email protected]>
Cc Xiangfu Liu <[email protected]>
Quoted 2 lines

AFAIK you can remove Vlad Lungu and Thomas Lange from the list of board maintainers

Ok. I will remove Thomas Sailer as well because his e-mail address bounces.

Quoted 5 lines
Quoted 5 lines
---
 arch/mips/cpu/u-boot.lds |   90 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 arch/mips/cpu/u-boot.lds

<...>

Quoted 9 lines
Quoted 1 line

+OUTPUT_FORMAT(MIPS_FORMAT, MIPS_FORMAT, MIPS_FORMAT)

we need to get rid of OUTPUT_FORMAT. This was always misused due to some endianess and toolchain problems which have been resolved in the meantime.

We should use gcc flags like it is done in linux kernel. The config.mk of mips64 already
has those flags. Mips32 and xburst need to be extended with:

Quoted 6 lines

PLATFORM_CPPFLAGS += -mabi=32 -DCONFIG_32BIT
ifdef CONFIG_SYS_BIG_ENDIAN
PLATFORM_LDFLAGS += -m elf32btsmip
else
PLATFORM_LDFLAGS += -m elf32ltsmip
endif

Makes sense. However I would do that in a separate change. Either before or after the current series.

Quoted 15 lines

arch/mips/cpu/u-boot.lds line 54

Quoted 12 lines
arch/mips/cpu/u-boot.lds new file +11 -0
+OUTPUT_ARCH(mips)
+ENTRY(_start)
+SECTIONS
+{
+       . = 0x00000000;
+
+       . = ALIGN(4);
+       .text       :
+       {
+         *(.text*)
+       }

please fix the style globally to

Quoted 3 lines
.text : {
        *(.text*)
}

Ok, will change it.

Quoted 13 lines
Quoted 13 lines
arch/mips/cpu/u-boot.lds new file +12 -0
+
+       . = ALIGN(4);
+       .rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+
+       . = ALIGN(4);
+       .data  : { *(.data*) }
+
+       . = .;
+       _gp = ALIGN(16) +0x7ff0;
+
+       .got  : {
+               __got_start = .;
Quoted 8 lines

arch/mips/cpu/u-boot.lds line 72

Quoted 6 lines
arch/mips/cpu/u-boot.lds new file +6 -0
+               *(.got)
+               __got_end = .;
+       }
+
+       . = ALIGN(4);
+       .sdata  : { *(.sdata*) }

*(.sdata*) should be merged with .data

This is separated in all current linker scripts, so the merge should be done in a separate patch IMHO.

Quoted 19 lines
Quoted 7 lines
arch/mips/cpu/u-boot.lds new file +6 -0
+
+       . = ALIGN(4);
+       .u_boot_list : {
+               #include <u-boot.lst>
+       }
+

arch/mips/cpu/u-boot.lds line 88

Quoted 10 lines
arch/mips/cpu/u-boot.lds new file +10 -0
+       uboot_end_data = .;
+
+       num_got_entries = (__got_end - __got_start) >> PTR_COUNT_SHIFT;
+
+       . = ALIGN(4);
+       .sbss  : { *(.sbss*) }
+       .bss : {
+               *(.bss*)
+               . = ALIGN(4);
+       }

. = ALIGN(4);

Quoted 5 lines
.bss : {
        *(.bss*)
        *(.sbss*)
        . = ALIGN(4);
}

Same as above.

Thank you for the review!

-Gabor

#11 lore raw

PATCH 1/7 MIPS: add unified u-boot.lds file

Quoted 91 lines · Gabor Juhos

2013.01.29. 11:44 keltez?ssel, Daniel Schwierzeck ?rta:

Quoted 13 lines

2013/1/29 Gabor Juhos <[email protected]>:

Quoted 11 lines

The patch adds an unified linker script file which can be used for all currently supported MIPS targets.

Cc Daniel Schwierzeck <[email protected]>
Cc Vlad Lungu <[email protected]>
Cc Thomas Sailer <[email protected]>
Cc Stefan Roese <[email protected]>
Cc Wolfgang Denk <[email protected]>
Cc Thomas Lange <[email protected]>
Cc Xiangfu Liu <[email protected]>
Quoted 2 lines

AFAIK you can remove Vlad Lungu and Thomas Lange from the list of board maintainers

Ok. I will remove Thomas Sailer as well because his e-mail address bounces.

Quoted 2 lines
Quoted 2 lines
---
 arch/mips/cpu/u-boot.lds |   90

++++++++++++++++++++++++++++++++++++++++++++++

Quoted 3 lines
Quoted 3 lines
 1 file changed, 90 insertions(+)
 create mode 100644 arch/mips/cpu/u-boot.lds

<...>

Quoted 4 lines
Quoted 1 line

+OUTPUT_FORMAT(MIPS_FORMAT, MIPS_FORMAT, MIPS_FORMAT)

we need to get rid of OUTPUT_FORMAT. This was always misused due to some endianess and toolchain problems which have been resolved in the

meantime.

Quoted 11 lines

We should use gcc flags like it is done in linux kernel. The config.mk of mips64 already
has those flags. Mips32 and xburst need to be extended with:

PLATFORM_CPPFLAGS += -mabi=32 -DCONFIG_32BIT
ifdef CONFIG_SYS_BIG_ENDIAN
PLATFORM_LDFLAGS += -m elf32btsmip
else
PLATFORM_LDFLAGS += -m elf32ltsmip
endif

Makes sense. However I would do that in a separate change. Either before or after the current series.

Quoted 15 lines

arch/mips/cpu/u-boot.lds line 54

Quoted 12 lines
arch/mips/cpu/u-boot.lds new file +11 -0
+OUTPUT_ARCH(mips)
+ENTRY(_start)
+SECTIONS
+{
+       . = 0x00000000;
+
+       . = ALIGN(4);
+       .text       :
+       {
+         *(.text*)
+       }

please fix the style globally to

Quoted 3 lines
.text : {
        *(.text*)
}

Ok, will change it.

Quoted 13 lines
Quoted 13 lines
arch/mips/cpu/u-boot.lds new file +12 -0
+
+       . = ALIGN(4);
+       .rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+
+       . = ALIGN(4);
+       .data  : { *(.data*) }
+
+       . = .;
+       _gp = ALIGN(16) +0x7ff0;
+
+       .got  : {
+               __got_start = .;
Quoted 8 lines

arch/mips/cpu/u-boot.lds line 72

Quoted 6 lines
arch/mips/cpu/u-boot.lds new file +6 -0
+               *(.got)
+               __got_end = .;
+       }
+
+       . = ALIGN(4);
+       .sdata  : { *(.sdata*) }

*(.sdata*) should be merged with .data

Quoted 4 lines

This is separated in all current linker scripts, so the merge should be done in
a separate patch IMHO.

IIRC, If you put .sdata in with .data, you also have to adjust the _gp initialization so the .sdata section is within the signed 16 bit address offset allowed.

Quoted 35 lines
Quoted 19 lines
Quoted 7 lines
arch/mips/cpu/u-boot.lds new file +6 -0
+
+       . = ALIGN(4);
+       .u_boot_list : {
+               #include <u-boot.lst>
+       }
+

arch/mips/cpu/u-boot.lds line 88

Quoted 10 lines
arch/mips/cpu/u-boot.lds new file +10 -0
+       uboot_end_data = .;
+
+       num_got_entries = (__got_end - __got_start) >> PTR_COUNT_SHIFT;
+
+       . = ALIGN(4);
+       .sbss  : { *(.sbss*) }
+       .bss : {
+               *(.bss*)
+               . = ALIGN(4);
+       }

. = ALIGN(4);

Quoted 5 lines
.bss : {
        *(.bss*)
        *(.sbss*)
        . = ALIGN(4);
}

Same as above.

Thank you for the review!

-Gabor
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot