Commit 62bbc2f25aab6010042dc1d22e9f8449fc946449
1 parent
fae56934a0
Exists in
master
and in
49 other branches
cm_t335: fix linker file to produce full ELF
Newly added cm_t335 was missed in commit 47ed5dd0 which made ARM targets produce full ELF files. Fix its linker script. This change is binary-invariant when only .dynsym, .dynstr, .dynamic, .plt, .interp and .gun sections are declared. Sections .hash, .got.plt, .dynbss and .ARM.exidx are also declared so that their (unused) content is moved out of the u-boot binary. Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
Showing 1 changed file with 10 additions and 6 deletions Inline Diff
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 | 65 | ||
66 | /* | 66 | /* |
67 | * Deprecated: this MMU section is used by pxa at present but | 67 | * Deprecated: this MMU section is used by pxa at present but |
68 | * should not be used by new boards/CPUs. | 68 | * should not be used by new boards/CPUs. |
69 | */ | 69 | */ |
70 | . = ALIGN(4096); | 70 | . = ALIGN(4096); |
71 | .mmutable : { | 71 | .mmutable : { |
72 | *(.mmutable) | 72 | *(.mmutable) |
73 | } | 73 | } |
74 | 74 | ||
75 | /* | 75 | /* |
76 | * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c | 76 | * 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) | 77 | * __bss_base and __bss_limit are for linker only (overlay ordering) |
78 | */ | 78 | */ |
79 | 79 | ||
80 | .bss_start __rel_dyn_start (OVERLAY) : { | 80 | .bss_start __rel_dyn_start (OVERLAY) : { |
81 | KEEP(*(.__bss_start)); | 81 | KEEP(*(.__bss_start)); |
82 | __bss_base = .; | 82 | __bss_base = .; |
83 | } | 83 | } |
84 | 84 | ||
85 | .bss __bss_base (OVERLAY) : { | 85 | .bss __bss_base (OVERLAY) : { |
86 | *(.bss*) | 86 | *(.bss*) |
87 | . = ALIGN(4); | 87 | . = ALIGN(4); |
88 | __bss_limit = .; | 88 | __bss_limit = .; |
89 | } | 89 | } |
90 | 90 | ||
91 | .bss_end __bss_limit (OVERLAY) : { | 91 | .bss_end __bss_limit (OVERLAY) : { |
92 | KEEP(*(.__bss_end)); | 92 | KEEP(*(.__bss_end)); |
93 | } | 93 | } |
94 | 94 | ||
95 | /DISCARD/ : { *(.dynsym) } | 95 | .dynsym _end : { *(.dynsym) } |
96 | /DISCARD/ : { *(.dynstr*) } | 96 | .hash : { *(.hash) } |
97 | /DISCARD/ : { *(.dynamic*) } | 97 | .got.plt : { *(.got.plt) } |
98 | /DISCARD/ : { *(.plt*) } | 98 | .dynbss : { *(.dynbss) } |
99 | /DISCARD/ : { *(.interp*) } | 99 | .dynstr : { *(.dynstr*) } |
100 | /DISCARD/ : { *(.gnu*) } | 100 | .dynamic : { *(.dynamic*) } |
101 | .plt : { *(.plt*) } | ||
102 | .interp : { *(.interp*) } | ||
103 | .gnu : { *(.gnu*) } | ||
104 | .ARM.exidx : { *(.ARM.exidx*) } | ||
101 | } | 105 | } |
102 | 106 |