1 | /*
|
---|
2 | * IA-64 linker script
|
---|
3 | *
|
---|
4 | * It is ELF format, but its only section looks like this:
|
---|
5 | * kernel text
|
---|
6 | * kernel data
|
---|
7 | *
|
---|
8 | */
|
---|
9 |
|
---|
10 | OUTPUT_FORMAT(elf64-ia64-little)
|
---|
11 | ENTRY(kernel_image_start)
|
---|
12 |
|
---|
13 | SECTIONS {
|
---|
14 | .image 0x0000000000001000: AT (0x0000000000001000) {
|
---|
15 | ktext_start = .;
|
---|
16 | *(.text .stub .text.* .gnu.linkonce.t.*)
|
---|
17 | *(.interp)
|
---|
18 | *(.hash)
|
---|
19 | *(.dynsym)
|
---|
20 | *(.dynstr)
|
---|
21 | *(.rel.init)
|
---|
22 | *(.rela.init)
|
---|
23 | *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
|
---|
24 | *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
|
---|
25 | *(.rel.fini)
|
---|
26 | *(.rela.fini)
|
---|
27 | *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
|
---|
28 | *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
|
---|
29 | *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
|
---|
30 | *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
|
---|
31 | *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
|
---|
32 | *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
|
---|
33 | *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
|
---|
34 | *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
|
---|
35 | *(.rel.got)
|
---|
36 | *(.rela.got)
|
---|
37 | *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
|
---|
38 | *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
|
---|
39 | *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
|
---|
40 | *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
|
---|
41 | *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
|
---|
42 | *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
|
---|
43 | *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
|
---|
44 | *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
|
---|
45 | *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
|
---|
46 | *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
|
---|
47 | *(.rel.plt)
|
---|
48 | *(.rela.plt)
|
---|
49 | *(.rela.IA_64.pltoff)
|
---|
50 | *(.init)
|
---|
51 | *(.plt)
|
---|
52 | *(.fini)
|
---|
53 | ktext_end = .;
|
---|
54 | kdata_start = .;
|
---|
55 | *(.rodata .rodata.* .gnu.linkonce.r.*)
|
---|
56 | *(.rodata1)
|
---|
57 | *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
|
---|
58 | *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
|
---|
59 | *(.opd)
|
---|
60 | *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*)
|
---|
61 | *(.IA_64.unwind* .gnu.linkonce.ia64unw.*)
|
---|
62 | *(.eh_frame_hdr)
|
---|
63 | *(.preinit_array)
|
---|
64 | *(.init_array)
|
---|
65 | *(.fini_array)
|
---|
66 | *(.data .data.* .gnu.linkonce.d.*)
|
---|
67 | *(.data1)
|
---|
68 | *(.tdata .tdata.* .gnu.linkonce.td.*)
|
---|
69 | *(.tcommon)
|
---|
70 | *(.eh_frame)
|
---|
71 | *(.gcc_except_table)
|
---|
72 | *(.dynamic)
|
---|
73 | *(.jcr)
|
---|
74 | *(.got)
|
---|
75 | *(.IA_64.pltoff)
|
---|
76 | *(.sdata .sdata.* .gnu.linkonce.s.*)
|
---|
77 | *(.dynsbss)
|
---|
78 | *(.sbss .sbss.* .gnu.linkonce.sb.*)
|
---|
79 | *(.scommon)
|
---|
80 | *(.dynbss)
|
---|
81 | *(.bss .bss.* .gnu.linkonce.b.*)
|
---|
82 | *(COMMON)
|
---|
83 | kdata_end = .;
|
---|
84 | }
|
---|
85 |
|
---|
86 | . = ABSOLUTE(hardcoded_ktext_size);
|
---|
87 | .patch_1 : {
|
---|
88 | LONG(ktext_end - ktext_start);
|
---|
89 | }
|
---|
90 |
|
---|
91 | . = ABSOLUTE(hardcoded_kdata_size);
|
---|
92 | .patch_2 : {
|
---|
93 | LONG(kdata_end - kdata_start);
|
---|
94 | }
|
---|
95 |
|
---|
96 | . = ABSOLUTE(hardcoded_load_address);
|
---|
97 | .patch_3 : {
|
---|
98 | QUAD(0x0000000000001000);
|
---|
99 | }
|
---|
100 |
|
---|
101 | }
|
---|