[golan] Do not assume all devices are identical
[ipxe.git] / src / scripts / efi.lds
1 /* -*- sh -*- */
2
3 /*
4  * Linker script for EFI images
5  *
6  */
7
8 SECTIONS {
9
10     /* The file starts at a virtual address of zero, and sections are
11      * contiguous.  Each section is aligned to at least _max_align,
12      * which defaults to 32.  Load addresses are equal to virtual
13      * addresses.
14      */
15
16     _max_align = 32;
17
18     /* Allow plenty of space for file headers */
19     . = 0x1000;
20
21     /*
22      * The text section
23      *
24      */
25
26     . = ALIGN ( _max_align );
27     .text : {
28         _text = .;
29         *(.text)
30         *(.text.*)
31         _etext = .;
32     }
33
34     /*
35      * The rodata section
36      *
37      */
38
39     . = ALIGN ( _max_align );
40     .rodata : {
41         _rodata = .;
42         *(.rodata)
43         *(.rodata.*)
44         _erodata = .;
45     }
46
47     /*
48      * The data section
49      *
50      */
51
52     . = ALIGN ( _max_align );
53     .data : {
54         _data = .;
55         *(.data)
56         *(.data.*)
57         KEEP(*(SORT(.tbl.*)))   /* Various tables.  See include/tables.h */
58         KEEP(*(.provided))
59         KEEP(*(.provided.*))
60         _edata = .;
61     }
62
63     /*
64      * The bss section
65      *
66      */
67
68     . = ALIGN ( _max_align );
69     .bss : {
70         _bss = .;
71         *(.bss)
72         *(.bss.*)
73         *(COMMON)
74         _ebss = .;
75     }
76
77     /*
78      * Weak symbols that need zero values if not otherwise defined
79      *
80      */
81
82     .weak 0x0 : {
83         _weak = .;
84         *(.weak)
85         *(.weak.*)
86         _eweak = .;
87     }
88     _assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
89
90     /*
91      * Dispose of the comment and note sections to make the link map
92      * easier to read
93      *
94      */
95
96     /DISCARD/ : {
97         *(.comment)
98         *(.comment.*)
99         *(.note)
100         *(.note.*)
101         *(.eh_frame)
102         *(.eh_frame.*)
103         *(.rel)
104         *(.rel.*)
105         *(.einfo)
106         *(.einfo.*)
107         *(.discard)
108         *(.discard.*)
109     }
110 }