Commit 62bbc2f25aab6010042dc1d22e9f8449fc946449

Authored by Albert ARIBAUD
1 parent fae56934a0

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