Commit d0b5d9da5de280120b73e776663f6a3024f225f4

Authored by Albert ARIBAUD
1 parent 62bbc2f25a

arm: make _end compiler-generated

This prevents references to _end from generating absolute
relocation records.

This change is binary invariant for ARM targets.

Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>

Showing 22 changed files with 117 additions and 29 deletions Inline Diff

arch/arm/cpu/arm1136/u-boot-spl.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2010 5 * (C) Copyright 2010
6 * Texas Instruments, <www.ti.com> 6 * Texas Instruments, <www.ti.com>
7 * Aneesh V <aneesh@ti.com> 7 * Aneesh V <aneesh@ti.com>
8 * 8 *
9 * SPDX-License-Identifier: GPL-2.0+ 9 * SPDX-License-Identifier: GPL-2.0+
10 */ 10 */
11 11
12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ 12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
13 LENGTH = CONFIG_SPL_MAX_SIZE } 13 LENGTH = CONFIG_SPL_MAX_SIZE }
14 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \ 14 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
15 LENGTH = CONFIG_SPL_BSS_MAX_SIZE } 15 LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
16 16
17 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 17 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
18 OUTPUT_ARCH(arm) 18 OUTPUT_ARCH(arm)
19 ENTRY(_start) 19 ENTRY(_start)
20 SECTIONS 20 SECTIONS
21 { 21 {
22 .text : 22 .text :
23 { 23 {
24 __start = .; 24 __start = .;
25 arch/arm/cpu/arm1136/start.o (.text*) 25 arch/arm/cpu/arm1136/start.o (.text*)
26 *(.text*) 26 *(.text*)
27 } >.sram 27 } >.sram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
34 . = ALIGN(4); 34 . = ALIGN(4);
35 __image_copy_end = .; 35 __image_copy_end = .;
36 _end = .; 36
37 .end :
38 {
39 *(.__end)
40 }
37 41
38 .bss : 42 .bss :
39 { 43 {
40 . = ALIGN(4); 44 . = ALIGN(4);
41 __bss_start = .; 45 __bss_start = .;
42 *(.bss*) 46 *(.bss*)
43 . = ALIGN(4); 47 . = ALIGN(4);
44 __bss_end = .; 48 __bss_end = .;
45 } >.sdram 49 } >.sdram
46 } 50 }
47 51
arch/arm/cpu/arm920t/ep93xx/u-boot.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <gj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
4 * 4 *
5 * SPDX-License-Identifier: GPL-2.0+ 5 * SPDX-License-Identifier: GPL-2.0+
6 */ 6 */
7 7
8 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 8 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
9 OUTPUT_ARCH(arm) 9 OUTPUT_ARCH(arm)
10 ENTRY(_start) 10 ENTRY(_start)
11 SECTIONS 11 SECTIONS
12 { 12 {
13 . = 0x00000000; 13 . = 0x00000000;
14 14
15 . = ALIGN(4); 15 . = ALIGN(4);
16 .text : 16 .text :
17 { 17 {
18 *(.__image_copy_start) 18 *(.__image_copy_start)
19 arch/arm/cpu/arm920t/start.o (.text*) 19 arch/arm/cpu/arm920t/start.o (.text*)
20 /* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */ 20 /* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */
21 . = 0x1000; 21 . = 0x1000;
22 LONG(0x53555243) 22 LONG(0x53555243)
23 *(.text*) 23 *(.text*)
24 } 24 }
25 25
26 . = ALIGN(4); 26 . = ALIGN(4);
27 .rodata : { *(.rodata*) } 27 .rodata : { *(.rodata*) }
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .data : { *(.data*) } 30 .data : { *(.data*) }
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .got : { *(.got) } 33 .got : { *(.got) }
34 34
35 . = .; 35 . = .;
36 36
37 . = ALIGN(4); 37 . = ALIGN(4);
38 .u_boot_list : { 38 .u_boot_list : {
39 KEEP(*(SORT(.u_boot_list*))); 39 KEEP(*(SORT(.u_boot_list*)));
40 } 40 }
41 41
42 . = ALIGN(4); 42 . = ALIGN(4);
43 43
44 .image_copy_end : 44 .image_copy_end :
45 { 45 {
46 *(.__image_copy_end) 46 *(.__image_copy_end)
47 } 47 }
48 48
49 __bss_start = .; 49 __bss_start = .;
50 .bss : { *(.bss*) } 50 .bss : { *(.bss*) }
51 __bss_end = .; 51 __bss_end = .;
52 52
53 _end = .; 53 .end :
54 {
55 *(.__end)
56 }
54 } 57 }
55 58
arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
1 /* 1 /*
2 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com> 2 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
3 * on behalf of DENX Software Engineering GmbH 3 * on behalf of DENX Software Engineering GmbH
4 * 4 *
5 * January 2004 - Changed to support H4 device 5 * January 2004 - Changed to support H4 device
6 * Copyright (c) 2004-2008 Texas Instruments 6 * Copyright (c) 2004-2008 Texas Instruments
7 * 7 *
8 * (C) Copyright 2002 8 * (C) Copyright 2002
9 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 9 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
10 * 10 *
11 * SPDX-License-Identifier: GPL-2.0+ 11 * SPDX-License-Identifier: GPL-2.0+
12 */ 12 */
13 13
14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
15 OUTPUT_ARCH(arm) 15 OUTPUT_ARCH(arm)
16 ENTRY(_start) 16 ENTRY(_start)
17 SECTIONS 17 SECTIONS
18 { 18 {
19 . = 0x00000000; 19 . = 0x00000000;
20 20
21 . = ALIGN(4); 21 . = ALIGN(4);
22 .text : 22 .text :
23 { 23 {
24 arch/arm/cpu/arm926ejs/mxs/start.o (.text*) 24 arch/arm/cpu/arm926ejs/mxs/start.o (.text*)
25 *(.text*) 25 *(.text*)
26 } 26 }
27 27
28 . = ALIGN(4); 28 . = ALIGN(4);
29 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 29 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
30 30
31 . = ALIGN(4); 31 . = ALIGN(4);
32 .data : { 32 .data : {
33 *(.data*) 33 *(.data*)
34 } 34 }
35 35
36 . = ALIGN(4); 36 . = ALIGN(4);
37 37
38 .rel.dyn : { 38 .rel.dyn : {
39 __rel_dyn_start = .; 39 __rel_dyn_start = .;
40 *(.rel*) 40 *(.rel*)
41 __rel_dyn_end = .; 41 __rel_dyn_end = .;
42 } 42 }
43 43
44 .bss : { 44 .bss : {
45 . = ALIGN(4); 45 . = ALIGN(4);
46 __bss_start = .; 46 __bss_start = .;
47 *(.bss*) 47 *(.bss*)
48 . = ALIGN(4); 48 . = ALIGN(4);
49 __bss_end = .; 49 __bss_end = .;
50 } 50 }
51 51
52 _end = .; 52 .end :
53 {
54 *(.__end)
55 }
53 56
54 .dynsym _end : { *(.dynsym) } 57 _image_binary_end = .;
58
59 .dynsym _image_binary_end : { *(.dynsym) }
55 .dynbss : { *(.dynbss) } 60 .dynbss : { *(.dynbss) }
56 .dynstr : { *(.dynstr*) } 61 .dynstr : { *(.dynstr*) }
57 .dynamic : { *(.dynamic*) } 62 .dynamic : { *(.dynamic*) }
58 .hash : { *(.hash*) } 63 .hash : { *(.hash*) }
59 .plt : { *(.plt*) } 64 .plt : { *(.plt*) }
60 .interp : { *(.interp*) } 65 .interp : { *(.interp*) }
61 .gnu : { *(.gnu*) } 66 .gnu : { *(.gnu*) }
62 .ARM.exidx : { *(.ARM.exidx*) } 67 .ARM.exidx : { *(.ARM.exidx*) }
63 } 68 }
64 69
arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
1 /* 1 /*
2 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com> 2 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
3 * on behalf of DENX Software Engineering GmbH 3 * on behalf of DENX Software Engineering GmbH
4 * 4 *
5 * January 2004 - Changed to support H4 device 5 * January 2004 - Changed to support H4 device
6 * Copyright (c) 2004-2008 Texas Instruments 6 * Copyright (c) 2004-2008 Texas Instruments
7 * 7 *
8 * (C) Copyright 2002 8 * (C) Copyright 2002
9 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 9 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
10 * 10 *
11 * SPDX-License-Identifier: GPL-2.0+ 11 * SPDX-License-Identifier: GPL-2.0+
12 */ 12 */
13 13
14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
15 OUTPUT_ARCH(arm) 15 OUTPUT_ARCH(arm)
16 ENTRY(_start) 16 ENTRY(_start)
17 SECTIONS 17 SECTIONS
18 { 18 {
19 . = 0x00000000; 19 . = 0x00000000;
20 20
21 . = ALIGN(4); 21 . = ALIGN(4);
22 .text : 22 .text :
23 { 23 {
24 arch/arm/cpu/arm926ejs/spear/start.o (.text*) 24 arch/arm/cpu/arm926ejs/spear/start.o (.text*)
25 *(.text*) 25 *(.text*)
26 } 26 }
27 27
28 . = ALIGN(4); 28 . = ALIGN(4);
29 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 29 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
30 30
31 . = ALIGN(4); 31 . = ALIGN(4);
32 .data : { 32 .data : {
33 *(.data*) 33 *(.data*)
34 } 34 }
35 35
36 . = ALIGN(4); 36 . = ALIGN(4);
37 37
38 .rel.dyn : { 38 .rel.dyn : {
39 __rel_dyn_start = .; 39 __rel_dyn_start = .;
40 *(.rel*) 40 *(.rel*)
41 __rel_dyn_end = .; 41 __rel_dyn_end = .;
42 } 42 }
43 43
44 .bss : { 44 .bss : {
45 . = ALIGN(4); 45 . = ALIGN(4);
46 __bss_start = .; 46 __bss_start = .;
47 *(.bss*) 47 *(.bss*)
48 . = ALIGN(4); 48 . = ALIGN(4);
49 __bss_end = .; 49 __bss_end = .;
50 } 50 }
51 51
52 _end = .; 52 .end :
53 {
54 *(.__end)
55 }
53 56
54 .dynsym _end : { *(.dynsym) } 57 _image_binary_end = .;
58
59 .dynsym _image_binary_end : { *(.dynsym) }
55 .dynbss : { *(.dynbss) } 60 .dynbss : { *(.dynbss) }
56 .dynstr : { *(.dynstr*) } 61 .dynstr : { *(.dynstr*) }
57 .dynamic : { *(.dynamic*) } 62 .dynamic : { *(.dynamic*) }
58 .hash : { *(.hash*) } 63 .hash : { *(.hash*) }
59 .plt : { *(.plt*) } 64 .plt : { *(.plt*) }
60 .interp : { *(.interp*) } 65 .interp : { *(.interp*) }
61 .gnu : { *(.gnu*) } 66 .gnu : { *(.gnu*) }
62 .ARM.exidx : { *(.ARM.exidx*) } 67 .ARM.exidx : { *(.ARM.exidx*) }
63 } 68 }
64 69
arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2010 5 * (C) Copyright 2010
6 * Texas Instruments, <www.ti.com> 6 * Texas Instruments, <www.ti.com>
7 * Aneesh V <aneesh@ti.com> 7 * Aneesh V <aneesh@ti.com>
8 * 8 *
9 * SPDX-License-Identifier: GPL-2.0+ 9 * SPDX-License-Identifier: GPL-2.0+
10 */ 10 */
11 11
12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ 12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
13 LENGTH = CONFIG_SPL_MAX_SIZE } 13 LENGTH = CONFIG_SPL_MAX_SIZE }
14 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \ 14 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
15 LENGTH = CONFIG_SPL_BSS_MAX_SIZE } 15 LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
16 16
17 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 17 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
18 OUTPUT_ARCH(arm) 18 OUTPUT_ARCH(arm)
19 ENTRY(_start) 19 ENTRY(_start)
20 SECTIONS 20 SECTIONS
21 { 21 {
22 .text : 22 .text :
23 { 23 {
24 __start = .; 24 __start = .;
25 arch/arm/cpu/armv7/start.o (.text) 25 arch/arm/cpu/armv7/start.o (.text)
26 *(.text*) 26 *(.text*)
27 } >.sram 27 } >.sram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
34 34
35 .u_boot_list : { 35 .u_boot_list : {
36 KEEP(*(SORT(.u_boot_list*))); 36 KEEP(*(SORT(.u_boot_list*)));
37 } >.sram 37 } >.sram
38 38
39 . = ALIGN(4); 39 . = ALIGN(4);
40 __image_copy_end = .; 40 __image_copy_end = .;
41 _end = .; 41
42 .end :
43 {
44 *(.__end)
45 } >.sram
42 46
43 .bss : 47 .bss :
44 { 48 {
45 . = ALIGN(4); 49 . = ALIGN(4);
46 __bss_start = .; 50 __bss_start = .;
47 *(.bss*) 51 *(.bss*)
48 . = ALIGN(4); 52 . = ALIGN(4);
49 __bss_end = .; 53 __bss_end = .;
50 } >.sdram 54 } >.sdram
51 } 55 }
52 56
arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2010 5 * (C) Copyright 2010
6 * Texas Instruments, <www.ti.com> 6 * Texas Instruments, <www.ti.com>
7 * Aneesh V <aneesh@ti.com> 7 * Aneesh V <aneesh@ti.com>
8 * 8 *
9 * SPDX-License-Identifier: GPL-2.0+ 9 * SPDX-License-Identifier: GPL-2.0+
10 */ 10 */
11 11
12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ 12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
13 LENGTH = CONFIG_SPL_MAX_SIZE } 13 LENGTH = CONFIG_SPL_MAX_SIZE }
14 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \ 14 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
15 LENGTH = CONFIG_SPL_BSS_MAX_SIZE } 15 LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
16 16
17 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 17 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
18 OUTPUT_ARCH(arm) 18 OUTPUT_ARCH(arm)
19 ENTRY(_start) 19 ENTRY(_start)
20 SECTIONS 20 SECTIONS
21 { 21 {
22 .text : 22 .text :
23 { 23 {
24 __start = .; 24 __start = .;
25 arch/arm/cpu/armv7/start.o (.text*) 25 arch/arm/cpu/armv7/start.o (.text*)
26 *(.text*) 26 *(.text*)
27 } >.sram 27 } >.sram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
34 34
35 . = ALIGN(4); 35 . = ALIGN(4);
36 .u_boot_list : { 36 .u_boot_list : {
37 KEEP(*(SORT(.u_boot_list*_i2c_*))); 37 KEEP(*(SORT(.u_boot_list*_i2c_*)));
38 } >.sram 38 } >.sram
39 39
40 . = ALIGN(4); 40 . = ALIGN(4);
41 __image_copy_end = .; 41 __image_copy_end = .;
42 _end = .; 42
43 .end :
44 {
45 *(.__end)
46 }
43 47
44 .bss : 48 .bss :
45 { 49 {
46 . = ALIGN(4); 50 . = ALIGN(4);
47 __bss_start = .; 51 __bss_start = .;
48 *(.bss*) 52 *(.bss*)
49 . = ALIGN(4); 53 . = ALIGN(4);
50 __bss_end = .; 54 __bss_end = .;
51 } >.sdram 55 } >.sdram
52 } 56 }
53 57
arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
1 /* 1 /*
2 * Copyright (C) 2012 Altera Corporation <www.altera.com> 2 * Copyright (C) 2012 Altera Corporation <www.altera.com>
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 MEMORY { .sdram : ORIGIN = (0), LENGTH = (0xffffffff) } 7 MEMORY { .sdram : ORIGIN = (0), LENGTH = (0xffffffff) }
8 8
9 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 9 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
10 OUTPUT_ARCH(arm) 10 OUTPUT_ARCH(arm)
11 ENTRY(_start) 11 ENTRY(_start)
12 SECTIONS 12 SECTIONS
13 { 13 {
14 . = 0x00000000; 14 . = 0x00000000;
15 15
16 . = ALIGN(4); 16 . = ALIGN(4);
17 .text : 17 .text :
18 { 18 {
19 arch/arm/cpu/armv7/start.o (.text*) 19 arch/arm/cpu/armv7/start.o (.text*)
20 *(.text*) 20 *(.text*)
21 } >.sdram 21 } >.sdram
22 22
23 . = ALIGN(4); 23 . = ALIGN(4);
24 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } >.sdram 24 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } >.sdram
25 25
26 . = ALIGN(4); 26 . = ALIGN(4);
27 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sdram 27 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sdram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 __image_copy_end = .; 30 __image_copy_end = .;
31 _end = .; 31
32 .end :
33 {
34 *(.__end)
35 }
32 36
33 .bss : { 37 .bss : {
34 . = ALIGN(4); 38 . = ALIGN(4);
35 __bss_start = .; 39 __bss_start = .;
36 *(.bss*) 40 *(.bss*)
37 . = ALIGN(4); 41 . = ALIGN(4);
38 __bss_end = .; 42 __bss_end = .;
39 } >.sdram 43 } >.sdram
40 44
41 . = ALIGN(8); 45 . = ALIGN(8);
42 __malloc_start = .; 46 __malloc_start = .;
43 . = . + CONFIG_SPL_MALLOC_SIZE; 47 . = . + CONFIG_SPL_MALLOC_SIZE;
44 __malloc_end = .; 48 __malloc_end = .;
45 49
46 . = . + CONFIG_SPL_STACK_SIZE; 50 . = . + CONFIG_SPL_STACK_SIZE;
47 . = ALIGN(8); 51 . = ALIGN(8);
48 __stack_start = .; 52 __stack_start = .;
49 } 53 }
50 54
arch/arm/cpu/armv7/zynq/u-boot.lds
1 /* 1 /*
2 * Copyright (c) 2004-2008 Texas Instruments 2 * Copyright (c) 2004-2008 Texas Instruments
3 * 3 *
4 * (C) Copyright 2002 4 * (C) Copyright 2002
5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
6 * 6 *
7 * SPDX-License-Identifier: GPL-2.0+ 7 * SPDX-License-Identifier: GPL-2.0+
8 */ 8 */
9 9
10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
11 OUTPUT_ARCH(arm) 11 OUTPUT_ARCH(arm)
12 ENTRY(_start) 12 ENTRY(_start)
13 SECTIONS 13 SECTIONS
14 { 14 {
15 . = 0x00000000; 15 . = 0x00000000;
16 16
17 . = ALIGN(4); 17 . = ALIGN(4);
18 .text : 18 .text :
19 { 19 {
20 *(.__image_copy_start) 20 *(.__image_copy_start)
21 CPUDIR/start.o (.text*) 21 CPUDIR/start.o (.text*)
22 *(.text*) 22 *(.text*)
23 } 23 }
24 24
25 . = ALIGN(4); 25 . = ALIGN(4);
26 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 26 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
27 27
28 . = ALIGN(4); 28 . = ALIGN(4);
29 .data : { 29 .data : {
30 *(.data*) 30 *(.data*)
31 } 31 }
32 32
33 . = ALIGN(4); 33 . = ALIGN(4);
34 34
35 . = .; 35 . = .;
36 36
37 . = ALIGN(4); 37 . = ALIGN(4);
38 .u_boot_list : { 38 .u_boot_list : {
39 KEEP(*(SORT(.u_boot_list*))); 39 KEEP(*(SORT(.u_boot_list*)));
40 } 40 }
41 41
42 . = ALIGN(4); 42 . = ALIGN(4);
43 43
44 .image_copy_end : 44 .image_copy_end :
45 { 45 {
46 *(.__image_copy_end) 46 *(.__image_copy_end)
47 } 47 }
48 48
49 .rel_dyn_start : 49 .rel_dyn_start :
50 { 50 {
51 *(.__rel_dyn_start) 51 *(.__rel_dyn_start)
52 } 52 }
53 53
54 .rel.dyn : { 54 .rel.dyn : {
55 *(.rel*) 55 *(.rel*)
56 } 56 }
57 57
58 .rel_dyn_end : 58 .rel_dyn_end :
59 { 59 {
60 *(.__rel_dyn_end) 60 *(.__rel_dyn_end)
61 } 61 }
62 62
63 _end = .; 63 .end :
64 {
65 *(.__end)
66 }
67
68 _image_binary_end = .;
64 69
65 /* 70 /*
66 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c 71 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
67 * __bss_base and __bss_limit are for linker only (overlay ordering) 72 * __bss_base and __bss_limit are for linker only (overlay ordering)
68 */ 73 */
69 74
70 .bss_start __rel_dyn_start (OVERLAY) : { 75 .bss_start __rel_dyn_start (OVERLAY) : {
71 KEEP(*(.__bss_start)); 76 KEEP(*(.__bss_start));
72 __bss_base = .; 77 __bss_base = .;
73 } 78 }
74 79
75 .bss __bss_base (OVERLAY) : { 80 .bss __bss_base (OVERLAY) : {
76 *(.bss*) 81 *(.bss*)
77 . = ALIGN(4); 82 . = ALIGN(4);
78 __bss_limit = .; 83 __bss_limit = .;
79 } 84 }
80 85
81 .bss_end __bss_limit (OVERLAY) : { 86 .bss_end __bss_limit (OVERLAY) : {
82 KEEP(*(.__bss_end)); 87 KEEP(*(.__bss_end));
83 } 88 }
84 89
85 /* 90 /*
86 * Zynq needs to discard more sections because the user 91 * Zynq needs to discard more sections because the user
87 * is expected to pass this image on to tools for boot.bin 92 * is expected to pass this image on to tools for boot.bin
88 * generation that require them to be dropped. 93 * generation that require them to be dropped.
89 */ 94 */
90 /DISCARD/ : { *(.dynsym) } 95 /DISCARD/ : { *(.dynsym) }
91 /DISCARD/ : { *(.dynbss*) } 96 /DISCARD/ : { *(.dynbss*) }
92 /DISCARD/ : { *(.dynstr*) } 97 /DISCARD/ : { *(.dynstr*) }
93 /DISCARD/ : { *(.dynamic*) } 98 /DISCARD/ : { *(.dynamic*) }
94 /DISCARD/ : { *(.plt*) } 99 /DISCARD/ : { *(.plt*) }
95 /DISCARD/ : { *(.interp*) } 100 /DISCARD/ : { *(.interp*) }
96 /DISCARD/ : { *(.gnu*) } 101 /DISCARD/ : { *(.gnu*) }
97 /DISCARD/ : { *(.ARM.exidx*) } 102 /DISCARD/ : { *(.ARM.exidx*) }
98 /DISCARD/ : { *(.gnu.linkonce.armexidx.*) } 103 /DISCARD/ : { *(.gnu.linkonce.armexidx.*) }
99 } 104 }
100 105
arch/arm/cpu/at91-common/u-boot-spl.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2010 5 * (C) Copyright 2010
6 * Texas Instruments, <www.ti.com> 6 * Texas Instruments, <www.ti.com>
7 * Aneesh V <aneesh@ti.com> 7 * Aneesh V <aneesh@ti.com>
8 * 8 *
9 * (C) 2013 Atmel Corporation 9 * (C) 2013 Atmel Corporation
10 * Bo Shen <voice.shen@atmel.com> 10 * Bo Shen <voice.shen@atmel.com>
11 * 11 *
12 * SPDX-License-Identifier: GPL-2.0+ 12 * SPDX-License-Identifier: GPL-2.0+
13 */ 13 */
14 14
15 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE, \ 15 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE, \
16 LENGTH = CONFIG_SPL_MAX_SIZE } 16 LENGTH = CONFIG_SPL_MAX_SIZE }
17 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \ 17 MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
18 LENGTH = CONFIG_SPL_BSS_MAX_SIZE } 18 LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
19 19
20 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 20 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
21 OUTPUT_ARCH(arm) 21 OUTPUT_ARCH(arm)
22 ENTRY(_start) 22 ENTRY(_start)
23 SECTIONS 23 SECTIONS
24 { 24 {
25 .text : 25 .text :
26 { 26 {
27 __start = .; 27 __start = .;
28 arch/arm/cpu/armv7/start.o (.text*) 28 arch/arm/cpu/armv7/start.o (.text*)
29 *(.text*) 29 *(.text*)
30 } >.sram 30 } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 33 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
34 34
35 . = ALIGN(4); 35 . = ALIGN(4);
36 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 36 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
37 37
38 . = ALIGN(4); 38 . = ALIGN(4);
39 __image_copy_end = .; 39 __image_copy_end = .;
40 _end = .; 40
41 .end :
42 {
43 *(.__end)
44 } >.sram
41 45
42 .bss : 46 .bss :
43 { 47 {
44 . = ALIGN(4); 48 . = ALIGN(4);
45 __bss_start = .; 49 __bss_start = .;
46 *(.bss*) 50 *(.bss*)
47 . = ALIGN(4); 51 . = ALIGN(4);
48 __bss_end = .; 52 __bss_end = .;
49 } >.sdram 53 } >.sdram
50 } 54 }
51 55
arch/arm/cpu/u-boot-spl.lds
1 /* 1 /*
2 * Copyright (c) 2004-2008 Texas Instruments 2 * Copyright (c) 2004-2008 Texas Instruments
3 * 3 *
4 * (C) Copyright 2002 4 * (C) Copyright 2002
5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
6 * 6 *
7 * SPDX-License-Identifier: GPL-2.0+ 7 * SPDX-License-Identifier: GPL-2.0+
8 */ 8 */
9 9
10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
11 OUTPUT_ARCH(arm) 11 OUTPUT_ARCH(arm)
12 ENTRY(_start) 12 ENTRY(_start)
13 SECTIONS 13 SECTIONS
14 { 14 {
15 . = 0x00000000; 15 . = 0x00000000;
16 16
17 . = ALIGN(4); 17 . = ALIGN(4);
18 .text : 18 .text :
19 { 19 {
20 __image_copy_start = .; 20 __image_copy_start = .;
21 CPUDIR/start.o (.text*) 21 CPUDIR/start.o (.text*)
22 *(.text*) 22 *(.text*)
23 } 23 }
24 24
25 . = ALIGN(4); 25 . = ALIGN(4);
26 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 26 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
27 27
28 . = ALIGN(4); 28 . = ALIGN(4);
29 .data : { 29 .data : {
30 *(.data*) 30 *(.data*)
31 } 31 }
32 32
33 . = ALIGN(4); 33 . = ALIGN(4);
34 34
35 . = .; 35 . = .;
36 36
37 __image_copy_end = .; 37 __image_copy_end = .;
38 38
39 .rel.dyn : { 39 .rel.dyn : {
40 __rel_dyn_start = .; 40 __rel_dyn_start = .;
41 *(.rel*) 41 *(.rel*)
42 __rel_dyn_end = .; 42 __rel_dyn_end = .;
43 } 43 }
44 44
45 _end = .; 45 .end :
46 {
47 *(.__end)
48 }
46 49
50 _image_binary_end = .;
51
47 .bss __rel_dyn_start (OVERLAY) : { 52 .bss __rel_dyn_start (OVERLAY) : {
48 __bss_start = .; 53 __bss_start = .;
49 *(.bss*) 54 *(.bss*)
50 . = ALIGN(4); 55 . = ALIGN(4);
51 __bss_end = .; 56 __bss_end = .;
52 } 57 }
53 58
54 .dynsym _end : { *(.dynsym) } 59 .dynsym _image_binary_end : { *(.dynsym) }
55 .dynbss : { *(.dynbss) } 60 .dynbss : { *(.dynbss) }
56 .dynstr : { *(.dynstr*) } 61 .dynstr : { *(.dynstr*) }
57 .dynamic : { *(.dynamic*) } 62 .dynamic : { *(.dynamic*) }
58 .hash : { *(.hash*) } 63 .hash : { *(.hash*) }
59 .plt : { *(.plt*) } 64 .plt : { *(.plt*) }
60 .interp : { *(.interp*) } 65 .interp : { *(.interp*) }
61 .gnu : { *(.gnu*) } 66 .gnu : { *(.gnu*) }
62 .ARM.exidx : { *(.ARM.exidx*) } 67 .ARM.exidx : { *(.ARM.exidx*) }
63 } 68 }
64 69
65 #if defined(CONFIG_SPL_MAX_SIZE) 70 #if defined(CONFIG_SPL_MAX_SIZE)
66 ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \ 71 ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \
67 "SPL image too big"); 72 "SPL image too big");
68 #endif 73 #endif
69 74
70 #if defined(CONFIG_SPL_BSS_MAX_SIZE) 75 #if defined(CONFIG_SPL_BSS_MAX_SIZE)
71 ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \ 76 ASSERT(__bss_end - __bss_start < (CONFIG_SPL_BSS_MAX_SIZE), \
72 "SPL image BSS too big"); 77 "SPL image BSS too big");
73 #endif 78 #endif
74 79
75 #if defined(CONFIG_SPL_MAX_FOOTPRINT) 80 #if defined(CONFIG_SPL_MAX_FOOTPRINT)
76 ASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \ 81 ASSERT(__bss_end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
77 "SPL image plus BSS too big"); 82 "SPL image plus BSS too big");
78 #endif 83 #endif
79 84
arch/arm/cpu/u-boot.lds
1 /* 1 /*
2 * Copyright (c) 2004-2008 Texas Instruments 2 * Copyright (c) 2004-2008 Texas Instruments
3 * 3 *
4 * (C) Copyright 2002 4 * (C) Copyright 2002
5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
6 * 6 *
7 * SPDX-License-Identifier: GPL-2.0+ 7 * SPDX-License-Identifier: GPL-2.0+
8 */ 8 */
9 9
10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
11 OUTPUT_ARCH(arm) 11 OUTPUT_ARCH(arm)
12 ENTRY(_start) 12 ENTRY(_start)
13 SECTIONS 13 SECTIONS
14 { 14 {
15 . = 0x00000000; 15 . = 0x00000000;
16 16
17 . = ALIGN(4); 17 . = ALIGN(4);
18 .text : 18 .text :
19 { 19 {
20 *(.__image_copy_start) 20 *(.__image_copy_start)
21 CPUDIR/start.o (.text*) 21 CPUDIR/start.o (.text*)
22 *(.text*) 22 *(.text*)
23 } 23 }
24 24
25 . = ALIGN(4); 25 . = ALIGN(4);
26 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 26 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
27 27
28 . = ALIGN(4); 28 . = ALIGN(4);
29 .data : { 29 .data : {
30 *(.data*) 30 *(.data*)
31 } 31 }
32 32
33 . = ALIGN(4); 33 . = ALIGN(4);
34 34
35 . = .; 35 . = .;
36 36
37 . = ALIGN(4); 37 . = ALIGN(4);
38 .u_boot_list : { 38 .u_boot_list : {
39 KEEP(*(SORT(.u_boot_list*))); 39 KEEP(*(SORT(.u_boot_list*)));
40 } 40 }
41 41
42 . = ALIGN(4); 42 . = ALIGN(4);
43 43
44 .image_copy_end : 44 .image_copy_end :
45 { 45 {
46 *(.__image_copy_end) 46 *(.__image_copy_end)
47 } 47 }
48 48
49 .rel_dyn_start : 49 .rel_dyn_start :
50 { 50 {
51 *(.__rel_dyn_start) 51 *(.__rel_dyn_start)
52 } 52 }
53 53
54 .rel.dyn : { 54 .rel.dyn : {
55 *(.rel*) 55 *(.rel*)
56 } 56 }
57 57
58 .rel_dyn_end : 58 .rel_dyn_end :
59 { 59 {
60 *(.__rel_dyn_end) 60 *(.__rel_dyn_end)
61 } 61 }
62 62
63 _end = .; 63 .end :
64 {
65 *(.__end)
66 }
64 67
68 _image_binary_end = .;
69
65 /* 70 /*
66 * Deprecated: this MMU section is used by pxa at present but 71 * Deprecated: this MMU section is used by pxa at present but
67 * should not be used by new boards/CPUs. 72 * should not be used by new boards/CPUs.
68 */ 73 */
69 . = ALIGN(4096); 74 . = ALIGN(4096);
70 .mmutable : { 75 .mmutable : {
71 *(.mmutable) 76 *(.mmutable)
72 } 77 }
73 78
74 /* 79 /*
75 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c 80 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
76 * __bss_base and __bss_limit are for linker only (overlay ordering) 81 * __bss_base and __bss_limit are for linker only (overlay ordering)
77 */ 82 */
78 83
79 .bss_start __rel_dyn_start (OVERLAY) : { 84 .bss_start __rel_dyn_start (OVERLAY) : {
80 KEEP(*(.__bss_start)); 85 KEEP(*(.__bss_start));
81 __bss_base = .; 86 __bss_base = .;
82 } 87 }
83 88
84 .bss __bss_base (OVERLAY) : { 89 .bss __bss_base (OVERLAY) : {
85 *(.bss*) 90 *(.bss*)
86 . = ALIGN(4); 91 . = ALIGN(4);
87 __bss_limit = .; 92 __bss_limit = .;
88 } 93 }
89 94
90 .bss_end __bss_limit (OVERLAY) : { 95 .bss_end __bss_limit (OVERLAY) : {
91 KEEP(*(.__bss_end)); 96 KEEP(*(.__bss_end));
92 } 97 }
93 98
94 .dynsym _end : { *(.dynsym) } 99 .dynsym _image_binary_end : { *(.dynsym) }
95 .dynbss : { *(.dynbss) } 100 .dynbss : { *(.dynbss) }
96 .dynstr : { *(.dynstr*) } 101 .dynstr : { *(.dynstr*) }
97 .dynamic : { *(.dynamic*) } 102 .dynamic : { *(.dynamic*) }
98 .plt : { *(.plt*) } 103 .plt : { *(.plt*) }
99 .interp : { *(.interp*) } 104 .interp : { *(.interp*) }
100 .gnu : { *(.gnu*) } 105 .gnu : { *(.gnu*) }
101 .ARM.exidx : { *(.ARM.exidx*) } 106 .ARM.exidx : { *(.ARM.exidx*) }
102 .gnu.linkonce.armexidx : { *(.gnu.linkonce.armexidx.*) } 107 .gnu.linkonce.armexidx : { *(.gnu.linkonce.armexidx.*) }
103 } 108 }
104 109
arch/arm/lib/Makefile
1 # 1 #
2 # (C) Copyright 2002-2006 2 # (C) Copyright 2002-2006
3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. 3 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 # 4 #
5 # SPDX-License-Identifier: GPL-2.0+ 5 # SPDX-License-Identifier: GPL-2.0+
6 # 6 #
7 7
8 # Build private libgcc only when asked for 8 # Build private libgcc only when asked for
9 ifdef USE_PRIVATE_LIBGCC 9 ifdef USE_PRIVATE_LIBGCC
10 lib-y += _ashldi3.o 10 lib-y += _ashldi3.o
11 lib-y += _ashrdi3.o 11 lib-y += _ashrdi3.o
12 lib-y += _divsi3.o 12 lib-y += _divsi3.o
13 lib-y += _lshrdi3.o 13 lib-y += _lshrdi3.o
14 lib-y += _modsi3.o 14 lib-y += _modsi3.o
15 lib-y += _udivsi3.o 15 lib-y += _udivsi3.o
16 lib-y += _umodsi3.o 16 lib-y += _umodsi3.o
17 lib-y += div0.o 17 lib-y += div0.o
18 endif 18 endif
19 19
20 ifdef CONFIG_ARM64 20 ifdef CONFIG_ARM64
21 obj-y += crt0_64.o 21 obj-y += crt0_64.o
22 else 22 else
23 obj-y += crt0.o 23 obj-y += crt0.o
24 endif 24 endif
25 25
26 ifndef CONFIG_SPL_BUILD 26 ifndef CONFIG_SPL_BUILD
27 ifdef CONFIG_ARM64 27 ifdef CONFIG_ARM64
28 obj-y += relocate_64.o 28 obj-y += relocate_64.o
29 else 29 else
30 obj-y += relocate.o 30 obj-y += relocate.o
31 endif 31 endif
32 ifndef CONFIG_SYS_GENERIC_BOARD 32 ifndef CONFIG_SYS_GENERIC_BOARD
33 obj-y += board.o 33 obj-y += board.o
34 endif 34 endif
35 obj-y += sections.o
36 35
37 obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o 36 obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
38 obj-$(CONFIG_CMD_BOOTM) += bootm.o 37 obj-$(CONFIG_CMD_BOOTM) += bootm.o
39 obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o 38 obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
40 obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o 39 obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o
41 obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o 40 obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
42 else 41 else
43 obj-$(CONFIG_SPL_FRAMEWORK) += spl.o 42 obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
44 endif 43 endif
45 44
45 obj-y += sections.o
46 ifdef CONFIG_ARM64 46 ifdef CONFIG_ARM64
47 obj-y += interrupts_64.o 47 obj-y += interrupts_64.o
48 else 48 else
49 obj-y += interrupts.o 49 obj-y += interrupts.o
50 endif 50 endif
51 obj-y += reset.o 51 obj-y += reset.o
52 52
53 obj-y += cache.o 53 obj-y += cache.o
54 ifndef CONFIG_ARM64 54 ifndef CONFIG_ARM64
55 obj-y += cache-cp15.o 55 obj-y += cache-cp15.o
56 endif 56 endif
57 57
58 # For EABI conformant tool chains, provide eabi_compat() 58 # For EABI conformant tool chains, provide eabi_compat()
59 ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS))) 59 ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS)))
60 extra-y += eabi_compat.o 60 extra-y += eabi_compat.o
61 endif 61 endif
arch/arm/lib/sections.c
1 /* 1 /*
2 * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net> 2 * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 /** 7 /**
8 * These two symbols are declared in a C file so that the linker 8 * These two symbols are declared in a C file so that the linker
9 * uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one 9 * uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one
10 * it would use if the symbols were defined in the linker file. 10 * it would use if the symbols were defined in the linker file.
11 * Using only R_ARM_RELATIVE relocation ensures that references to 11 * Using only R_ARM_RELATIVE relocation ensures that references to
12 * the symbols are correct after as well as before relocation. 12 * the symbols are correct after as well as before relocation.
13 * 13 *
14 * We need a 0-byte-size type for these symbols, and the compiler 14 * We need a 0-byte-size type for these symbols, and the compiler
15 * does not allow defining objects of C type 'void'. Using an empty 15 * does not allow defining objects of C type 'void'. Using an empty
16 * struct is allowed by the compiler, but causes gcc versions 4.4 and 16 * struct is allowed by the compiler, but causes gcc versions 4.4 and
17 * below to complain about aliasing. Therefore we use the next best 17 * below to complain about aliasing. Therefore we use the next best
18 * thing: zero-sized arrays, which are both 0-byte-size and exempt from 18 * thing: zero-sized arrays, which are both 0-byte-size and exempt from
19 * aliasing warnings. 19 * aliasing warnings.
20 */ 20 */
21 21
22 char __bss_start[0] __attribute__((section(".__bss_start"))); 22 char __bss_start[0] __attribute__((section(".__bss_start")));
23 char __bss_end[0] __attribute__((section(".__bss_end"))); 23 char __bss_end[0] __attribute__((section(".__bss_end")));
24 char __image_copy_start[0] __attribute__((section(".__image_copy_start"))); 24 char __image_copy_start[0] __attribute__((section(".__image_copy_start")));
25 char __image_copy_end[0] __attribute__((section(".__image_copy_end"))); 25 char __image_copy_end[0] __attribute__((section(".__image_copy_end")));
26 char __rel_dyn_start[0] __attribute__((section(".__rel_dyn_start"))); 26 char __rel_dyn_start[0] __attribute__((section(".__rel_dyn_start")));
27 char __rel_dyn_end[0] __attribute__((section(".__rel_dyn_end"))); 27 char __rel_dyn_end[0] __attribute__((section(".__rel_dyn_end")));
28 char _end[0] __attribute__((section(".__end")));
28 29
board/Barix/ipam390/u-boot-spl-ipam390.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2008 5 * (C) Copyright 2008
6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de> 6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
7 * 7 *
8 * SPDX-License-Identifier: GPL-2.0+ 8 * SPDX-License-Identifier: GPL-2.0+
9 */ 9 */
10 10
11 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ 11 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
12 LENGTH = CONFIG_SPL_MAX_FOOTPRINT } 12 LENGTH = CONFIG_SPL_MAX_FOOTPRINT }
13 13
14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
15 OUTPUT_ARCH(arm) 15 OUTPUT_ARCH(arm)
16 ENTRY(_start) 16 ENTRY(_start)
17 SECTIONS 17 SECTIONS
18 { 18 {
19 . = 0x00000000; 19 . = 0x00000000;
20 20
21 . = ALIGN(4); 21 . = ALIGN(4);
22 .text : 22 .text :
23 { 23 {
24 __start = .; 24 __start = .;
25 arch/arm/cpu/arm926ejs/start.o (.text*) 25 arch/arm/cpu/arm926ejs/start.o (.text*)
26 *(.text*) 26 *(.text*)
27 } >.sram 27 } >.sram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
34 34
35 . = ALIGN(4); 35 . = ALIGN(4);
36 .rel.dyn : { 36 .rel.dyn : {
37 __rel_dyn_start = .; 37 __rel_dyn_start = .;
38 *(.rel*) 38 *(.rel*)
39 __rel_dyn_end = .; 39 __rel_dyn_end = .;
40 } >.sram 40 } >.sram
41 41
42 .bss : 42 .bss :
43 { 43 {
44 . = ALIGN(4); 44 . = ALIGN(4);
45 __bss_start = .; 45 __bss_start = .;
46 *(.bss*) 46 *(.bss*)
47 . = ALIGN(4); 47 . = ALIGN(4);
48 __bss_end = .; 48 __bss_end = .;
49 } >.sram 49 } >.sram
50 50
51 __image_copy_end = .; 51 __image_copy_end = .;
52 _end = .; 52
53 .end :
54 {
55 *(.__end)
56 } >.sram
53 } 57 }
54 58
board/ait/cam_enc_4xx/u-boot-spl.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2008 5 * (C) Copyright 2008
6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de> 6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
7 * 7 *
8 * SPDX-License-Identifier: GPL-2.0+ 8 * SPDX-License-Identifier: GPL-2.0+
9 */ 9 */
10 10
11 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ 11 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
12 LENGTH = CONFIG_SPL_MAX_FOOTPRINT } 12 LENGTH = CONFIG_SPL_MAX_FOOTPRINT }
13 13
14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
15 OUTPUT_ARCH(arm) 15 OUTPUT_ARCH(arm)
16 ENTRY(_start) 16 ENTRY(_start)
17 SECTIONS 17 SECTIONS
18 { 18 {
19 . = CONFIG_SPL_TEXT_BASE; 19 . = CONFIG_SPL_TEXT_BASE;
20 20
21 . = ALIGN(4); 21 . = ALIGN(4);
22 .text : 22 .text :
23 { 23 {
24 __start = .; 24 __start = .;
25 arch/arm/cpu/arm926ejs/start.o (.text*) 25 arch/arm/cpu/arm926ejs/start.o (.text*)
26 *(.text*) 26 *(.text*)
27 } >.sram 27 } >.sram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
34 . = ALIGN(4); 34 . = ALIGN(4);
35 .rel.dyn : { 35 .rel.dyn : {
36 __rel_dyn_start = .; 36 __rel_dyn_start = .;
37 *(.rel*) 37 *(.rel*)
38 __rel_dyn_end = .; 38 __rel_dyn_end = .;
39 } >.sram 39 } >.sram
40 40
41 .bss : 41 .bss :
42 { 42 {
43 . = ALIGN(4); 43 . = ALIGN(4);
44 __bss_start = .; 44 __bss_start = .;
45 *(.bss*) 45 *(.bss*)
46 . = ALIGN(4); 46 . = ALIGN(4);
47 __bss_end = .; 47 __bss_end = .;
48 } >.sram 48 } >.sram
49 49
50 __image_copy_end = .; 50 __image_copy_end = .;
51 _end = .; 51
52 .end :
53 {
54 *(.__end)
55 }
52 } 56 }
53 57
board/compulab/cm_t335/u-boot.lds
1 /* 1 /*
2 * Copyright (c) 2004-2008 Texas Instruments 2 * Copyright (c) 2004-2008 Texas Instruments
3 * 3 *
4 * (C) Copyright 2002 4 * (C) Copyright 2002
5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
6 * 6 *
7 * SPDX-License-Identifier: GPL-2.0+ 7 * SPDX-License-Identifier: GPL-2.0+
8 */ 8 */
9 9
10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 10 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
11 OUTPUT_ARCH(arm) 11 OUTPUT_ARCH(arm)
12 ENTRY(_start) 12 ENTRY(_start)
13 SECTIONS 13 SECTIONS
14 { 14 {
15 . = 0x00000000; 15 . = 0x00000000;
16 16
17 . = ALIGN(4); 17 . = ALIGN(4);
18 .text : 18 .text :
19 { 19 {
20 *(.__image_copy_start) 20 *(.__image_copy_start)
21 CPUDIR/start.o (.text*) 21 CPUDIR/start.o (.text*)
22 board/compulab/cm_t335/built-in.o (.text*) 22 board/compulab/cm_t335/built-in.o (.text*)
23 *(.text*) 23 *(.text*)
24 } 24 }
25 25
26 . = ALIGN(4); 26 . = ALIGN(4);
27 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 27 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .data : { 30 .data : {
31 *(.data*) 31 *(.data*)
32 } 32 }
33 33
34 . = ALIGN(4); 34 . = ALIGN(4);
35 35
36 . = .; 36 . = .;
37 37
38 . = ALIGN(4); 38 . = ALIGN(4);
39 .u_boot_list : { 39 .u_boot_list : {
40 KEEP(*(SORT(.u_boot_list*))); 40 KEEP(*(SORT(.u_boot_list*)));
41 } 41 }
42 42
43 . = ALIGN(4); 43 . = ALIGN(4);
44 44
45 .image_copy_end : 45 .image_copy_end :
46 { 46 {
47 *(.__image_copy_end) 47 *(.__image_copy_end)
48 } 48 }
49 49
50 .rel_dyn_start : 50 .rel_dyn_start :
51 { 51 {
52 *(.__rel_dyn_start) 52 *(.__rel_dyn_start)
53 } 53 }
54 54
55 .rel.dyn : { 55 .rel.dyn : {
56 *(.rel*) 56 *(.rel*)
57 } 57 }
58 58
59 .rel_dyn_end : 59 .rel_dyn_end :
60 { 60 {
61 *(.__rel_dyn_end) 61 *(.__rel_dyn_end)
62 } 62 }
63 63
64 _end = .; 64 .end :
65 {
66 *(.__end)
67 }
65 68
69 _image_binary_end = .;
70
66 /* 71 /*
67 * Deprecated: this MMU section is used by pxa at present but 72 * Deprecated: this MMU section is used by pxa at present but
68 * should not be used by new boards/CPUs. 73 * should not be used by new boards/CPUs.
69 */ 74 */
70 . = ALIGN(4096); 75 . = ALIGN(4096);
71 .mmutable : { 76 .mmutable : {
72 *(.mmutable) 77 *(.mmutable)
73 } 78 }
74 79
75 /* 80 /*
76 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c 81 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
77 * __bss_base and __bss_limit are for linker only (overlay ordering) 82 * __bss_base and __bss_limit are for linker only (overlay ordering)
78 */ 83 */
79 84
80 .bss_start __rel_dyn_start (OVERLAY) : { 85 .bss_start __rel_dyn_start (OVERLAY) : {
81 KEEP(*(.__bss_start)); 86 KEEP(*(.__bss_start));
82 __bss_base = .; 87 __bss_base = .;
83 } 88 }
84 89
85 .bss __bss_base (OVERLAY) : { 90 .bss __bss_base (OVERLAY) : {
86 *(.bss*) 91 *(.bss*)
87 . = ALIGN(4); 92 . = ALIGN(4);
88 __bss_limit = .; 93 __bss_limit = .;
89 } 94 }
90 95
91 .bss_end __bss_limit (OVERLAY) : { 96 .bss_end __bss_limit (OVERLAY) : {
92 KEEP(*(.__bss_end)); 97 KEEP(*(.__bss_end));
93 } 98 }
94 99
95 .dynsym _end : { *(.dynsym) } 100 .dynsym _image_binary_end : { *(.dynsym) }
96 .hash : { *(.hash) } 101 .hash : { *(.hash) }
97 .got.plt : { *(.got.plt) } 102 .got.plt : { *(.got.plt) }
98 .dynbss : { *(.dynbss) } 103 .dynbss : { *(.dynbss) }
99 .dynstr : { *(.dynstr*) } 104 .dynstr : { *(.dynstr*) }
100 .dynamic : { *(.dynamic*) } 105 .dynamic : { *(.dynamic*) }
101 .plt : { *(.plt*) } 106 .plt : { *(.plt*) }
102 .interp : { *(.interp*) } 107 .interp : { *(.interp*) }
103 .gnu : { *(.gnu*) } 108 .gnu : { *(.gnu*) }
104 .ARM.exidx : { *(.ARM.exidx*) } 109 .ARM.exidx : { *(.ARM.exidx*) }
105 } 110 }
106 111
board/davinci/da8xxevm/u-boot-spl-da850evm.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2008 5 * (C) Copyright 2008
6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de> 6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
7 * 7 *
8 * SPDX-License-Identifier: GPL-2.0+ 8 * SPDX-License-Identifier: GPL-2.0+
9 */ 9 */
10 10
11 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ 11 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
12 LENGTH = CONFIG_SPL_MAX_FOOTPRINT } 12 LENGTH = CONFIG_SPL_MAX_FOOTPRINT }
13 13
14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
15 OUTPUT_ARCH(arm) 15 OUTPUT_ARCH(arm)
16 ENTRY(_start) 16 ENTRY(_start)
17 SECTIONS 17 SECTIONS
18 { 18 {
19 . = 0x00000000; 19 . = 0x00000000;
20 20
21 . = ALIGN(4); 21 . = ALIGN(4);
22 .text : 22 .text :
23 { 23 {
24 __start = .; 24 __start = .;
25 arch/arm/cpu/arm926ejs/start.o (.text*) 25 arch/arm/cpu/arm926ejs/start.o (.text*)
26 *(.text*) 26 *(.text*)
27 } >.sram 27 } >.sram
28 28
29 . = ALIGN(4); 29 . = ALIGN(4);
30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 30 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
31 31
32 . = ALIGN(4); 32 . = ALIGN(4);
33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 33 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
34 34
35 . = ALIGN(4); 35 . = ALIGN(4);
36 .rel.dyn : { 36 .rel.dyn : {
37 __rel_dyn_start = .; 37 __rel_dyn_start = .;
38 *(.rel*) 38 *(.rel*)
39 __rel_dyn_end = .; 39 __rel_dyn_end = .;
40 } >.sram 40 } >.sram
41 41
42 .bss : 42 .bss :
43 { 43 {
44 . = ALIGN(4); 44 . = ALIGN(4);
45 __bss_start = .; 45 __bss_start = .;
46 *(.bss*) 46 *(.bss*)
47 . = ALIGN(4); 47 . = ALIGN(4);
48 __bss_end = .; 48 __bss_end = .;
49 } >.sram 49 } >.sram
50 50
51 __image_copy_end = .; 51 __image_copy_end = .;
52 _end = .; 52
53 .end :
54 {
55 *(.__end)
56 }
53 } 57 }
54 58
board/davinci/da8xxevm/u-boot-spl-hawk.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * (C) Copyright 2008 5 * (C) Copyright 2008
6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de> 6 * Guennadi Liakhovetki, DENX Software Engineering, <lg@denx.de>
7 * 7 *
8 * SPDX-License-Identifier: GPL-2.0+ 8 * SPDX-License-Identifier: GPL-2.0+
9 */ 9 */
10 10
11 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 11 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
12 OUTPUT_ARCH(arm) 12 OUTPUT_ARCH(arm)
13 ENTRY(_start) 13 ENTRY(_start)
14 SECTIONS 14 SECTIONS
15 { 15 {
16 . = 0xc1080000; 16 . = 0xc1080000;
17 17
18 . = ALIGN(4); 18 . = ALIGN(4);
19 .text : 19 .text :
20 { 20 {
21 arch/arm/cpu/arm926ejs/start.o (.text*) 21 arch/arm/cpu/arm926ejs/start.o (.text*)
22 arch/arm/cpu/arm926ejs/davinci/built-in.o (.text*) 22 arch/arm/cpu/arm926ejs/davinci/built-in.o (.text*)
23 drivers/mtd/nand/built-in.o (.text*) 23 drivers/mtd/nand/built-in.o (.text*)
24 24
25 *(.text*) 25 *(.text*)
26 } 26 }
27 27
28 . = ALIGN(4); 28 . = ALIGN(4);
29 .rodata : { *(.rodata*) } 29 .rodata : { *(.rodata*) }
30 30
31 . = ALIGN(4); 31 . = ALIGN(4);
32 .data : { 32 .data : {
33 *(.data) 33 *(.data)
34 __datarel_start = .; 34 __datarel_start = .;
35 *(.data.rel) 35 *(.data.rel)
36 __datarelrolocal_start = .; 36 __datarelrolocal_start = .;
37 *(.data.rel.ro.local) 37 *(.data.rel.ro.local)
38 __datarellocal_start = .; 38 __datarellocal_start = .;
39 *(.data.rel.local) 39 *(.data.rel.local)
40 __datarelro_start = .; 40 __datarelro_start = .;
41 *(.data.rel.ro) 41 *(.data.rel.ro)
42 } 42 }
43 43
44 . = ALIGN(4); 44 . = ALIGN(4);
45 __image_copy_end = .; 45 __image_copy_end = .;
46 __rel_dyn_start = .; 46 __rel_dyn_start = .;
47 __rel_dyn_end = .; 47 __rel_dyn_end = .;
48 48
49 __got_start = .; 49 __got_start = .;
50 . = ALIGN(4); 50 . = ALIGN(4);
51 .got : { *(.got) } 51 .got : { *(.got) }
52 52
53 __got_end = .; 53 __got_end = .;
54 54
55 .bss : 55 .bss :
56 { 56 {
57 . = ALIGN(4); 57 . = ALIGN(4);
58 __bss_start = .; 58 __bss_start = .;
59 *(.bss*) 59 *(.bss*)
60 . = ALIGN(4); 60 . = ALIGN(4);
61 __bss_end = .; 61 __bss_end = .;
62 } 62 }
63 63
64 _end = .; 64 .end :
65 {
66 *(.__end)
67 }
65 } 68 }
66 69
board/freescale/mx31ads/u-boot.lds
1 /* 1 /*
2 * January 2004 - Changed to support H4 device 2 * January 2004 - Changed to support H4 device
3 * Copyright (c) 2004 Texas Instruments 3 * Copyright (c) 2004 Texas Instruments
4 * 4 *
5 * (C) Copyright 2002 5 * (C) Copyright 2002
6 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 6 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
7 * 7 *
8 * SPDX-License-Identifier: GPL-2.0+ 8 * SPDX-License-Identifier: GPL-2.0+
9 */ 9 */
10 10
11 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 11 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
12 OUTPUT_ARCH(arm) 12 OUTPUT_ARCH(arm)
13 ENTRY(_start) 13 ENTRY(_start)
14 SECTIONS 14 SECTIONS
15 { 15 {
16 . = 0x00000000; 16 . = 0x00000000;
17 17
18 . = ALIGN(4); 18 . = ALIGN(4);
19 .text : 19 .text :
20 { 20 {
21 *(.__image_copy_start) 21 *(.__image_copy_start)
22 /* WARNING - the following is hand-optimized to fit within */ 22 /* WARNING - the following is hand-optimized to fit within */
23 /* the sector layout of our flash chips! XXX FIXME XXX */ 23 /* the sector layout of our flash chips! XXX FIXME XXX */
24 24
25 arch/arm/cpu/arm1136/start.o (.text*) 25 arch/arm/cpu/arm1136/start.o (.text*)
26 board/freescale/mx31ads/built-in.o (.text*) 26 board/freescale/mx31ads/built-in.o (.text*)
27 arch/arm/lib/built-in.o (.text*) 27 arch/arm/lib/built-in.o (.text*)
28 net/built-in.o (.text*) 28 net/built-in.o (.text*)
29 drivers/mtd/built-in.o (.text*) 29 drivers/mtd/built-in.o (.text*)
30 30
31 . = DEFINED(env_offset) ? env_offset : .; 31 . = DEFINED(env_offset) ? env_offset : .;
32 common/env_embedded.o(.text*) 32 common/env_embedded.o(.text*)
33 33
34 *(.text*) 34 *(.text*)
35 } 35 }
36 . = ALIGN(4); 36 . = ALIGN(4);
37 .rodata : { *(.rodata*) } 37 .rodata : { *(.rodata*) }
38 38
39 . = ALIGN(4); 39 . = ALIGN(4);
40 .data : { 40 .data : {
41 *(.data*) 41 *(.data*)
42 } 42 }
43 43
44 . = ALIGN(4); 44 . = ALIGN(4);
45 45
46 . = ALIGN(4); 46 . = ALIGN(4);
47 .u_boot_list : { 47 .u_boot_list : {
48 KEEP(*(SORT(.u_boot_list*))); 48 KEEP(*(SORT(.u_boot_list*)));
49 } 49 }
50 50
51 . = ALIGN(4); 51 . = ALIGN(4);
52 52
53 .image_copy_end : 53 .image_copy_end :
54 { 54 {
55 *(.__image_copy_end) 55 *(.__image_copy_end)
56 } 56 }
57 57
58 .rel_dyn_start : 58 .rel_dyn_start :
59 { 59 {
60 *(.__rel_dyn_start) 60 *(.__rel_dyn_start)
61 } 61 }
62 62
63 .rel.dyn : { 63 .rel.dyn : {
64 *(.rel*) 64 *(.rel*)
65 } 65 }
66 66
67 .rel_dyn_end : 67 .rel_dyn_end :
68 { 68 {
69 *(.__rel_dyn_end) 69 *(.__rel_dyn_end)
70 } 70 }
71 71
72 _end = .; 72 .end :
73 {
74 *(.__end)
75 }
73 76
77 _image_binary_end = .;
78
74 /* 79 /*
75 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c 80 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
76 * __bss_base and __bss_limit are for linker only (overlay ordering) 81 * __bss_base and __bss_limit are for linker only (overlay ordering)
77 */ 82 */
78 83
79 .bss_start __rel_dyn_start (OVERLAY) : { 84 .bss_start __rel_dyn_start (OVERLAY) : {
80 KEEP(*(.__bss_start)); 85 KEEP(*(.__bss_start));
81 __bss_base = .; 86 __bss_base = .;
82 } 87 }
83 88
84 .bss __bss_base (OVERLAY) : { 89 .bss __bss_base (OVERLAY) : {
85 *(.bss*) 90 *(.bss*)
86 . = ALIGN(4); 91 . = ALIGN(4);
87 __bss_limit = .; 92 __bss_limit = .;
88 } 93 }
89 .bss_end __bss_limit (OVERLAY) : { 94 .bss_end __bss_limit (OVERLAY) : {
90 KEEP(*(.__bss_end)); 95 KEEP(*(.__bss_end));
91 } 96 }
92 97
93 .dynsym _end : { *(.dynsym) } 98 .dynsym _image_binary_end : { *(.dynsym) }
94 .dynbss : { *(.dynbss) } 99 .dynbss : { *(.dynbss) }
95 .dynstr : { *(.dynstr*) } 100 .dynstr : { *(.dynstr*) }
96 .dynamic : { *(.dynamic*) } 101 .dynamic : { *(.dynamic*) }
97 .hash : { *(.hash*) } 102 .hash : { *(.hash*) }
98 .plt : { *(.plt*) } 103 .plt : { *(.plt*) }
99 .interp : { *(.interp*) } 104 .interp : { *(.interp*) }
100 .gnu : { *(.gnu*) } 105 .gnu : { *(.gnu*) }
101 .ARM.exidx : { *(.ARM.exidx*) } 106 .ARM.exidx : { *(.ARM.exidx*) }
102 } 107 }
103 108
board/samsung/common/exynos-uboot-spl.lds
1 /* 1 /*
2 * (C) Copyright 2002 2 * (C) Copyright 2002
3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 3 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
4 * 4 *
5 * Copyright (C) 2012 Samsung Electronics 5 * Copyright (C) 2012 Samsung Electronics
6 * 6 *
7 * Based on arch/arm/cpu/armv7/omap-common/u-boot-spl.lds 7 * Based on arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
8 * 8 *
9 * SPDX-License-Identifier: GPL-2.0+ 9 * SPDX-License-Identifier: GPL-2.0+
10 */ 10 */
11 11
12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE, \ 12 MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE, \
13 LENGTH = CONFIG_SPL_MAX_FOOTPRINT } 13 LENGTH = CONFIG_SPL_MAX_FOOTPRINT }
14 14
15 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 15 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
16 OUTPUT_ARCH(arm) 16 OUTPUT_ARCH(arm)
17 ENTRY(_start) 17 ENTRY(_start)
18 18
19 SECTIONS 19 SECTIONS
20 { 20 {
21 .text : 21 .text :
22 { 22 {
23 __start = .; 23 __start = .;
24 arch/arm/cpu/armv7/start.o (.text*) 24 arch/arm/cpu/armv7/start.o (.text*)
25 *(.text*) 25 *(.text*)
26 } >.sram 26 } >.sram
27 . = ALIGN(4); 27 . = ALIGN(4);
28 28
29 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram 29 .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
30 . = ALIGN(4); 30 . = ALIGN(4);
31 31
32 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram 32 .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
33 . = ALIGN(4); 33 . = ALIGN(4);
34 34
35 .u_boot_list : { 35 .u_boot_list : {
36 KEEP(*(SORT(.u_boot_list*))); 36 KEEP(*(SORT(.u_boot_list*)));
37 } >.sram 37 } >.sram
38 . = ALIGN(4); 38 . = ALIGN(4);
39 39
40 /* Align .machine_param on 256 byte boundary for easier searching */ 40 /* Align .machine_param on 256 byte boundary for easier searching */
41 .machine_param ALIGN(0x100) : { *(.machine_param) } >.sram 41 .machine_param ALIGN(0x100) : { *(.machine_param) } >.sram
42 . = ALIGN(4); 42 . = ALIGN(4);
43 43
44 __image_copy_end = .; 44 __image_copy_end = .;
45 _end = .; 45
46 .end :
47 {
48 *(.__end)
49 } >.sram
46 50
47 .bss : 51 .bss :
48 { 52 {
49 . = ALIGN(4); 53 . = ALIGN(4);
50 __bss_start = .; 54 __bss_start = .;
51 *(.bss*) 55 *(.bss*)
52 . = ALIGN(4); 56 . = ALIGN(4);
53 __bss_end = .; 57 __bss_end = .;
54 } >.sram 58 } >.sram
55 } 59 }
56 60
board/ti/am335x/u-boot.lds
1 /* 1 /*
2 * Copyright (c) 2004-2008 Texas Instruments 2 * Copyright (c) 2004-2008 Texas Instruments
3 * 3 *
4 * (C) Copyright 2002 4 * (C) Copyright 2002
5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 5 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
6 * 6 *
7 * See file CREDITS for list of people who contributed to this 7 * See file CREDITS for list of people who contributed to this
8 * project. 8 * project.
9 * 9 *
10 * This program is free software; you can redistribute it and/or 10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as 11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of 12 * published by the Free Software Foundation; either version 2 of
13 * the License, or (at your option) any later version. 13 * the License, or (at your option) any later version.
14 * 14 *
15 * This program is distributed in the hope that it will be useful, 15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details. 18 * GNU General Public License for more details.
19 * 19 *
20 * You should have received a copy of the GNU General Public License 20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software 21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
23 * MA 02111-1307 USA 23 * MA 02111-1307 USA
24 */ 24 */
25 25
26 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 26 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
27 OUTPUT_ARCH(arm) 27 OUTPUT_ARCH(arm)
28 ENTRY(_start) 28 ENTRY(_start)
29 SECTIONS 29 SECTIONS
30 { 30 {
31 . = 0x00000000; 31 . = 0x00000000;
32 32
33 . = ALIGN(4); 33 . = ALIGN(4);
34 .text : 34 .text :
35 { 35 {
36 *(.__image_copy_start) 36 *(.__image_copy_start)
37 CPUDIR/start.o (.text*) 37 CPUDIR/start.o (.text*)
38 board/ti/am335x/built-in.o (.text*) 38 board/ti/am335x/built-in.o (.text*)
39 *(.text*) 39 *(.text*)
40 } 40 }
41 41
42 . = ALIGN(4); 42 . = ALIGN(4);
43 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 43 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
44 44
45 . = ALIGN(4); 45 . = ALIGN(4);
46 .data : { 46 .data : {
47 *(.data*) 47 *(.data*)
48 } 48 }
49 49
50 . = ALIGN(4); 50 . = ALIGN(4);
51 51
52 . = .; 52 . = .;
53 53
54 . = ALIGN(4); 54 . = ALIGN(4);
55 .u_boot_list : { 55 .u_boot_list : {
56 KEEP(*(SORT(.u_boot_list*))); 56 KEEP(*(SORT(.u_boot_list*)));
57 } 57 }
58 58
59 . = ALIGN(4); 59 . = ALIGN(4);
60 60
61 .image_copy_end : 61 .image_copy_end :
62 { 62 {
63 *(.__image_copy_end) 63 *(.__image_copy_end)
64 } 64 }
65 65
66 .rel_dyn_start : 66 .rel_dyn_start :
67 { 67 {
68 *(.__rel_dyn_start) 68 *(.__rel_dyn_start)
69 } 69 }
70 70
71 .rel.dyn : { 71 .rel.dyn : {
72 *(.rel*) 72 *(.rel*)
73 } 73 }
74 74
75 .rel_dyn_end : 75 .rel_dyn_end :
76 { 76 {
77 *(.__rel_dyn_end) 77 *(.__rel_dyn_end)
78 } 78 }
79 79
80 _end = .; 80 .end :
81 {
82 *(.__end)
83 }
81 84
85 _image_binary_end = .;
86
82 /* 87 /*
83 * Deprecated: this MMU section is used by pxa at present but 88 * Deprecated: this MMU section is used by pxa at present but
84 * should not be used by new boards/CPUs. 89 * should not be used by new boards/CPUs.
85 */ 90 */
86 . = ALIGN(4096); 91 . = ALIGN(4096);
87 .mmutable : { 92 .mmutable : {
88 *(.mmutable) 93 *(.mmutable)
89 } 94 }
90 95
91 /* 96 /*
92 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c 97 * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
93 * __bss_base and __bss_limit are for linker only (overlay ordering) 98 * __bss_base and __bss_limit are for linker only (overlay ordering)
94 */ 99 */
95 100
96 .bss_start __rel_dyn_start (OVERLAY) : { 101 .bss_start __rel_dyn_start (OVERLAY) : {
97 KEEP(*(.__bss_start)); 102 KEEP(*(.__bss_start));
98 __bss_base = .; 103 __bss_base = .;
99 } 104 }
100 105
101 .bss __bss_base (OVERLAY) : { 106 .bss __bss_base (OVERLAY) : {
102 *(.bss*) 107 *(.bss*)
103 . = ALIGN(4); 108 . = ALIGN(4);
104 __bss_limit = .; 109 __bss_limit = .;
105 } 110 }
106 111
107 .bss_end __bss_limit (OVERLAY) : { 112 .bss_end __bss_limit (OVERLAY) : {
108 KEEP(*(.__bss_end)); 113 KEEP(*(.__bss_end));
109 } 114 }
110 115
111 .dynsym _end : { *(.dynsym) } 116 .dynsym _image_binary_end : { *(.dynsym) }
112 .dynbss : { *(.dynbss) } 117 .dynbss : { *(.dynbss) }
113 .dynstr : { *(.dynstr*) } 118 .dynstr : { *(.dynstr*) }
114 .dynamic : { *(.dynamic*) } 119 .dynamic : { *(.dynamic*) }
115 .hash : { *(.hash*) } 120 .hash : { *(.hash*) }
116 .plt : { *(.plt*) } 121 .plt : { *(.plt*) }
117 .interp : { *(.interp*) } 122 .interp : { *(.interp*) }
118 .gnu : { *(.gnu*) } 123 .gnu : { *(.gnu*) }
119 .ARM.exidx : { *(.ARM.exidx*) } 124 .ARM.exidx : { *(.ARM.exidx*) }
120 } 125 }
121 126
board/vpac270/u-boot-spl.lds
1 /* 1 /*
2 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com> 2 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
3 * on behalf of DENX Software Engineering GmbH 3 * on behalf of DENX Software Engineering GmbH
4 * 4 *
5 * January 2004 - Changed to support H4 device 5 * January 2004 - Changed to support H4 device
6 * Copyright (c) 2004-2008 Texas Instruments 6 * Copyright (c) 2004-2008 Texas Instruments
7 * 7 *
8 * (C) Copyright 2002 8 * (C) Copyright 2002
9 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> 9 * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
10 * 10 *
11 * SPDX-License-Identifier: GPL-2.0+ 11 * SPDX-License-Identifier: GPL-2.0+
12 */ 12 */
13 13
14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") 14 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
15 OUTPUT_ARCH(arm) 15 OUTPUT_ARCH(arm)
16 ENTRY(_start) 16 ENTRY(_start)
17 SECTIONS 17 SECTIONS
18 { 18 {
19 . = CONFIG_SPL_TEXT_BASE; 19 . = CONFIG_SPL_TEXT_BASE;
20 .text.0 : 20 .text.0 :
21 { 21 {
22 arch/arm/cpu/pxa/start.o (.text*) 22 arch/arm/cpu/pxa/start.o (.text*)
23 arch/arm/lib/built-in.o (.text*) 23 arch/arm/lib/built-in.o (.text*)
24 board/vpac270/built-in.o (.text*) 24 board/vpac270/built-in.o (.text*)
25 drivers/mtd/onenand/built-in.o (.text*) 25 drivers/mtd/onenand/built-in.o (.text*)
26 } 26 }
27 27
28 28
29 /* Start of the rest of the SPL */ 29 /* Start of the rest of the SPL */
30 . = CONFIG_SPL_TEXT_BASE + 0x800; 30 . = CONFIG_SPL_TEXT_BASE + 0x800;
31 31
32 .text.1 : 32 .text.1 :
33 { 33 {
34 *(.text*) 34 *(.text*)
35 } 35 }
36 36
37 . = ALIGN(4); 37 . = ALIGN(4);
38 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 38 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
39 39
40 . = ALIGN(4); 40 . = ALIGN(4);
41 .data : { 41 .data : {
42 *(.data*) 42 *(.data*)
43 } 43 }
44 44
45 . = ALIGN(4); 45 . = ALIGN(4);
46 46
47 __image_copy_end = .; 47 __image_copy_end = .;
48 48
49 .rel.dyn : { 49 .rel.dyn : {
50 __rel_dyn_start = .; 50 __rel_dyn_start = .;
51 *(.rel*) 51 *(.rel*)
52 __rel_dyn_end = .; 52 __rel_dyn_end = .;
53 } 53 }
54 54
55 . = ALIGN(0x800); 55 . = ALIGN(0x800);
56 56
57 _end = .; 57 .end :
58 {
59 *(.__end)
60 }
58 61
62 _image_binary_end = .;
63
59 .bss __rel_dyn_start (OVERLAY) : { 64 .bss __rel_dyn_start (OVERLAY) : {
60 __bss_start = .; 65 __bss_start = .;
61 *(.bss*) 66 *(.bss*)
62 . = ALIGN(4); 67 . = ALIGN(4);
63 __bss_end = .; 68 __bss_end = .;
64 } 69 }
65 70
66 .dynsym _end : { *(.dynsym) } 71 .dynsym _image_binary_end : { *(.dynsym) }
67 .dynbss : { *(.dynbss) } 72 .dynbss : { *(.dynbss) }
68 .dynstr : { *(.dynstr*) } 73 .dynstr : { *(.dynstr*) }
69 .dynamic : { *(.dynamic*) } 74 .dynamic : { *(.dynamic*) }
70 .hash : { *(.hash*) } 75 .hash : { *(.hash*) }
71 .plt : { *(.plt*) } 76 .plt : { *(.plt*) }
72 .interp : { *(.interp*) } 77 .interp : { *(.interp*) }
73 .gnu : { *(.gnu*) } 78 .gnu : { *(.gnu*) }
74 .ARM.exidx : { *(.ARM.exidx*) } 79 .ARM.exidx : { *(.ARM.exidx*) }
75 } 80 }
76 81