Commit d0b5d9da5de280120b73e776663f6a3024f225f4
1 parent
62bbc2f25a
Exists in
master
and in
49 other branches
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
- arch/arm/cpu/arm920t/ep93xx/u-boot.lds
- arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
- arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
- arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
- arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
- arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
- arch/arm/cpu/armv7/zynq/u-boot.lds
- arch/arm/cpu/at91-common/u-boot-spl.lds
- arch/arm/cpu/u-boot-spl.lds
- arch/arm/cpu/u-boot.lds
- arch/arm/lib/Makefile
- arch/arm/lib/sections.c
- board/Barix/ipam390/u-boot-spl-ipam390.lds
- board/ait/cam_enc_4xx/u-boot-spl.lds
- board/compulab/cm_t335/u-boot.lds
- board/davinci/da8xxevm/u-boot-spl-da850evm.lds
- board/davinci/da8xxevm/u-boot-spl-hawk.lds
- board/freescale/mx31ads/u-boot.lds
- board/samsung/common/exynos-uboot-spl.lds
- board/ti/am335x/u-boot.lds
- board/vpac270/u-boot-spl.lds
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 |