blob: 16a9d6ac5797339913fa46a5782b242ae8315a9b [file] [log] [blame]
Gabor Juhoscb5dbca2013-01-30 04:31:52 +00001/*
2 * (C) Copyright 2003
3 * Wolfgang Denk Engineering, <wd@denx.de>
4 *
Wolfgang Denk1a459662013-07-08 09:37:19 +02005 * SPDX-License-Identifier: GPL-2.0+
Gabor Juhoscb5dbca2013-01-30 04:31:52 +00006 */
7
8#if defined(CONFIG_64BIT)
9#define PTR_COUNT_SHIFT 3
10#else
11#define PTR_COUNT_SHIFT 2
12#endif
13
14OUTPUT_ARCH(mips)
15ENTRY(_start)
16SECTIONS
17{
18 . = 0x00000000;
19
20 . = ALIGN(4);
21 .text : {
22 *(.text*)
23 }
24
25 . = ALIGN(4);
26 .rodata : {
27 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
28 }
29
30 . = ALIGN(4);
31 .data : {
32 *(.data*)
33 }
34
35 . = .;
36 _gp = ALIGN(16) + 0x7ff0;
37
38 .got : {
Gabor Juhoscb5dbca2013-01-30 04:31:52 +000039 *(.got)
Gabor Juhoscb5dbca2013-01-30 04:31:52 +000040 }
41
Gabor Juhos45397812013-02-12 22:22:12 +010042 num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT;
43
Gabor Juhoscb5dbca2013-01-30 04:31:52 +000044 . = ALIGN(4);
45 .sdata : {
46 *(.sdata*)
47 }
48
49 . = ALIGN(4);
50 .u_boot_list : {
Albert ARIBAUDef123c52013-02-25 00:59:00 +000051 KEEP(*(SORT(.u_boot_list*)));
Gabor Juhoscb5dbca2013-01-30 04:31:52 +000052 }
53
Gabor Juhoscb5dbca2013-01-30 04:31:52 +000054 . = ALIGN(4);
Daniel Schwierzeck3420bf12013-02-12 22:22:12 +010055 __image_copy_end = .;
56
Gabor Juhos0ba89262013-02-12 22:22:13 +010057 .rel.dyn : {
58 __rel_dyn_start = .;
59 *(.rel.dyn)
60 __rel_dyn_end = .;
61 }
62
63 .deadcode : {
64 /*
65 * Workaround for a binutils feature (or bug?).
66 *
67 * The GNU ld from binutils puts the dynamic relocation
68 * entries into the .rel.dyn section. Sometimes it
69 * allocates more dynamic relocation entries than it needs
70 * and the unused slots are set to R_MIPS_NONE entries.
71 *
72 * However the size of the .rel.dyn section in the ELF
73 * section header does not cover the unused entries, so
74 * objcopy removes those during stripping.
75 *
76 * Create a small section here to avoid that.
77 */
78 LONG(0xffffffff);
79 }
80
81 .dynsym : {
82 *(.dynsym)
83 }
84
85 .bss __rel_dyn_start (OVERLAY) : {
Daniel Schwierzecka52852c2013-02-12 22:22:12 +010086 __bss_start = .;
87 *(.sbss.*)
88 *(.bss.*)
89 *(COMMON)
90 . = ALIGN(4);
91 __bss_end = .;
Gabor Juhoscb5dbca2013-01-30 04:31:52 +000092 }
Gabor Juhos0ba89262013-02-12 22:22:13 +010093
94 /DISCARD/ : {
95 *(.dynbss)
96 *(.dynstr)
97 *(.dynamic)
98 *(.interp)
99 *(.hash)
100 *(.gnu.*)
101 *(.plt)
102 *(.got.plt)
103 *(.rel.plt)
104 }
Gabor Juhoscb5dbca2013-01-30 04:31:52 +0000105}