[U-Boot] [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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Vlad Lungu vlad@comsys.ro Cc: Thomas Sailer sailer@scs.ch Cc: Stefan Roese sr@denx.de Cc: Wolfgang Denk wd@denx.de Cc: Thomas Lange thomas@corelatus.se Cc: Xiangfu Liu xiangfu@openmobilefree.net --- arch/mips/cpu/u-boot.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 arch/mips/cpu/u-boot.lds
diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds new file mode 100644 index 0000000..988764d --- /dev/null +++ b/arch/mips/cpu/u-boot.lds @@ -0,0 +1,90 @@ +/* + * (C) Copyright 2003 + * Wolfgang Denk Engineering, wd@denx.de + * + * 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 = .; +}

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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Vlad Lungu vlad@comsys.ro --- board/qemu-mips/u-boot.lds | 78 -------------------------------------------- 1 file changed, 78 deletions(-) delete mode 100644 board/qemu-mips/u-boot.lds
diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds deleted file mode 100644 index cb2356f..0000000 --- a/board/qemu-mips/u-boot.lds +++ /dev/null @@ -1,78 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk Engineering, wd@denx.de - * - * 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 = .; -}

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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Thomas Sailer sailer@scs.ch --- board/pb1x00/u-boot.lds | 69 ----------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 board/pb1x00/u-boot.lds
diff --git a/board/pb1x00/u-boot.lds b/board/pb1x00/u-boot.lds deleted file mode 100644 index 07ddd36..0000000 --- a/board/pb1x00/u-boot.lds +++ /dev/null @@ -1,69 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk Engineering, wd@denx.de - * - * 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 = .; -}

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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Stefan Roese sr@denx.de --- board/micronas/vct/u-boot.lds | 69 ----------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 board/micronas/vct/u-boot.lds
diff --git a/board/micronas/vct/u-boot.lds b/board/micronas/vct/u-boot.lds deleted file mode 100644 index 2ce8d0e..0000000 --- a/board/micronas/vct/u-boot.lds +++ /dev/null @@ -1,69 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk Engineering, wd@denx.de - * - * 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 = .; -}

On 01/29/2013 09:31 AM, Gabor Juhos wrote:
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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Stefan Roese sr@denx.de
I can't really test this, but it looks good. So:
Acked-by: Stefan Roese sr@denx.de
Thanks, Stefan

2013.01.29. 10:05 keltezéssel, Stefan Roese írta:
On 01/29/2013 09:31 AM, Gabor Juhos wrote:
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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Stefan Roese sr@denx.de
I can't really test this, but it looks good. So:
Acked-by: Stefan Roese sr@denx.de
Thanks!
-Gabor

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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Wolfgang Denk wd@denx.de --- board/incaip/u-boot.lds | 69 ----------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 board/incaip/u-boot.lds
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds deleted file mode 100644 index 8a871cf..0000000 --- a/board/incaip/u-boot.lds +++ /dev/null @@ -1,69 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk Engineering, wd@denx.de - * - * 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 = .; -}

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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Thomas Lange thomas@corelatus.se --- board/dbau1x00/u-boot.lds | 69 --------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 board/dbau1x00/u-boot.lds
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds deleted file mode 100644 index 8a871cf..0000000 --- a/board/dbau1x00/u-boot.lds +++ /dev/null @@ -1,69 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk Engineering, wd@denx.de - * - * 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 = .; -}

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.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Xiangfu Liu xiangfu@openmobilefree.net --- board/qi/qi_lb60/u-boot.lds | 63 ------------------------------------------- 1 file changed, 63 deletions(-) delete mode 100644 board/qi/qi_lb60/u-boot.lds
diff --git a/board/qi/qi_lb60/u-boot.lds b/board/qi/qi_lb60/u-boot.lds deleted file mode 100644 index b3cb869..0000000 --- a/board/qi/qi_lb60/u-boot.lds +++ /dev/null @@ -1,63 +0,0 @@ -/* - * (C) Copyright 2006 - * Ingenic Semiconductor, jlwei@ingenic.cn - * - * 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 = .; -}

2013/1/29 Gabor Juhos juhosg@openwrt.org:
The patch adds an unified linker script file which can be used for all currently supported MIPS targets.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Vlad Lungu vlad@comsys.ro Cc: Thomas Sailer sailer@scs.ch Cc: Stefan Roese sr@denx.de Cc: Wolfgang Denk wd@denx.de Cc: Thomas Lange thomas@corelatus.se Cc: Xiangfu Liu xiangfu@openmobilefree.net
AFAIK you can remove Vlad Lungu and Thomas Lange from the list of board maintainers
arch/mips/cpu/u-boot.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 arch/mips/cpu/u-boot.lds
diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds new file mode 100644 index 0000000..988764d --- /dev/null +++ b/arch/mips/cpu/u-boot.lds @@ -0,0 +1,90 @@ +/*
- (C) Copyright 2003
- Wolfgang Denk Engineering, wd@denx.de
- 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)
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
+OUTPUT_ARCH(mips) +ENTRY(_start) +SECTIONS +{
. = 0x00000000;
. = ALIGN(4);
.text :
{
*(.text*)
}
please fix the style globally to
.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*) }
*(.sdata*) should be merged with .data
. = 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);
}
. = ALIGN(4); .bss : { *(.bss*) *(.sbss*) . = ALIGN(4); }
uboot_end = .;
+}
1.7.10

2013.01.29. 11:44 keltezéssel, Daniel Schwierzeck írta:
2013/1/29 Gabor Juhos juhosg@openwrt.org:
The patch adds an unified linker script file which can be used for all currently supported MIPS targets.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Vlad Lungu vlad@comsys.ro Cc: Thomas Sailer sailer@scs.ch Cc: Stefan Roese sr@denx.de Cc: Wolfgang Denk wd@denx.de Cc: Thomas Lange thomas@corelatus.se Cc: Xiangfu Liu xiangfu@openmobilefree.net
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.
arch/mips/cpu/u-boot.lds | 90 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 arch/mips/cpu/u-boot.lds
<...>
+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
Makes sense. However I would do that in a separate change. Either before or after the current series.
+OUTPUT_ARCH(mips) +ENTRY(_start) +SECTIONS +{
. = 0x00000000;
. = ALIGN(4);
.text :
{
*(.text*)
}
please fix the style globally to
.text : { *(.text*) }
Ok, will change it.
. = 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*) }
*(.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.
. = 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);
}
. = ALIGN(4); .bss : { *(.bss*) *(.sbss*) . = ALIGN(4); }
Same as above.
Thank you for the review!
-Gabor

On Tue, Jan 29, 2013 at 11:13 AM, Gabor Juhos juhosg@openwrt.org wrote:
2013.01.29. 11:44 keltezéssel, Daniel Schwierzeck írta:
2013/1/29 Gabor Juhos juhosg@openwrt.org:
The patch adds an unified linker script file which can be used for all currently supported MIPS targets.
Signed-off-by: Gabor Juhos juhosg@openwrt.org Cc: Daniel Schwierzeck daniel.schwierzeck@googlemail.com Cc: Vlad Lungu vlad@comsys.ro Cc: Thomas Sailer sailer@scs.ch Cc: Stefan Roese sr@denx.de Cc: Wolfgang Denk wd@denx.de Cc: Thomas Lange thomas@corelatus.se Cc: Xiangfu Liu xiangfu@openmobilefree.net
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.
arch/mips/cpu/u-boot.lds | 90
++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+) create mode 100644 arch/mips/cpu/u-boot.lds
<...>
+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
Makes sense. However I would do that in a separate change. Either before or after the current series.
+OUTPUT_ARCH(mips) +ENTRY(_start) +SECTIONS +{
. = 0x00000000;
. = ALIGN(4);
.text :
{
*(.text*)
}
please fix the style globally to
.text : { *(.text*) }
Ok, will change it.
. = 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*) }
*(.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.
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.
. = 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);
}
. = ALIGN(4); .bss : { *(.bss*) *(.sbss*) . = ALIGN(4); }
Same as above.
Thank you for the review!
-Gabor _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
participants (4)
-
Andrew Dyer
-
Daniel Schwierzeck
-
Gabor Juhos
-
Stefan Roese