source: mainline/kernel/arch/amd64/_link.ld.in@ 1479562

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 1479562 was 9ded977, checked in by Martin Decky <martin@…>, 15 years ago

add initial support for line debugging information and generating disassembly outputs with source code intermixed (useful for analyzing of stack traces)
currently the disassembly and source is intermixed only in the case of amd64 kernel (other linker scripts strip the debugging sections so far)

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/** AMD64 linker script
2 *
3 * umapped section:
4 * kernel text
5 * kernel data
6 * mapped section:
7 * kernel text
8 * kernel data
9 */
10
11#include <arch/boot/boot.h>
12#include <arch/mm/page.h>
13
14SECTIONS {
15 .unmapped BOOT_OFFSET: AT (0) {
16 unmapped_ktext_start = .;
17 *(K_TEXT_START);
18 unmapped_ktext_end = .;
19
20 unmapped_kdata_start = .;
21 *(K_DATA_START);
22 *(K_INI_PTLS);
23 unmapped_kdata_end = .;
24 }
25
26 .mapped (PA2KA(BOOT_OFFSET)+SIZEOF(.unmapped)) : AT (SIZEOF(.unmapped)) {
27 ktext_start = .;
28 *(.text);
29 ktext_end = .;
30
31 kdata_start = .;
32 *(.data); /* initialized data */
33 *(.rodata*); /* string literals */
34 hardcoded_load_address = .;
35 QUAD(PA2KA(BOOT_OFFSET));
36 hardcoded_ktext_size = .;
37 QUAD(ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start));
38 hardcoded_kdata_size = .;
39 QUAD(kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start));
40 hardcoded_unmapped_ktext_size = .;
41 QUAD(unmapped_ktext_end - unmapped_ktext_start);
42 hardcoded_unmapped_kdata_size = .;
43 QUAD(unmapped_kdata_end - unmapped_kdata_start);
44 *(COMMON); /* global variables */
45
46 . = ALIGN(8);
47 symbol_table = .;
48 *(symtab.*); /* Symbol table, must be LAST symbol!*/
49
50 *(.bss); /* uninitialized static variables */
51
52 kdata_end = .;
53 }
54
55#ifdef CONFIG_LINE_DEBUG
56 .comment 0 : { *(.comment); }
57 .debug_abbrev 0 : { *(.debug_abbrev); }
58 .debug_aranges 0 : { *(.debug_aranges); }
59 .debug_info 0 : { *(.debug_info); }
60 .debug_line 0 : { *(.debug_line); }
61 .debug_loc 0 : { *(.debug_loc); }
62 .debug_pubnames 0 : { *(.debug_pubnames); }
63 .debug_pubtypes 0 : { *(.debug_pubtypes); }
64 .debug_ranges 0 : { *(.debug_ranges); }
65 .debug_str 0 : { *(.debug_str); }
66#endif
67
68 /DISCARD/ : {
69 *(*);
70 }
71
72#ifdef CONFIG_SMP
73 _hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + (unmapped_kdata_end - unmapped_kdata_start);
74 ap_boot = unmapped_ap_boot - BOOT_OFFSET + AP_BOOT_OFFSET;
75 ap_gdtr = unmapped_ap_gdtr - BOOT_OFFSET + AP_BOOT_OFFSET;
76 protected_ap_gdtr = PA2KA(ap_gdtr);
77#endif /* CONFIG_SMP */
78
79}
Note: See TracBrowser for help on using the repository browser.