huangcm
2025-08-30 0269911b91ed7e03c24005924cc6423abf245fb8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/* ld script to make Meta Linux kernel */
 
#include <asm/thread_info.h>
#include <asm/page.h>
#include <asm/cache.h>
 
#include <asm-generic/vmlinux.lds.h>
 
OUTPUT_FORMAT("elf32-metag", "elf32-metag", "elf32-metag")
OUTPUT_ARCH(metag)
ENTRY(__start)
 
_jiffies = _jiffies_64;
SECTIONS
{
  . = CONFIG_PAGE_OFFSET;
  _text = .;
  __text = .;
  __stext = .;
  HEAD_TEXT_SECTION
  .text : {
   TEXT_TEXT
   SCHED_TEXT
   CPUIDLE_TEXT
   LOCK_TEXT
   KPROBES_TEXT
   IRQENTRY_TEXT
   SOFTIRQENTRY_TEXT
   *(.text.*)
   *(.gnu.warning)
   }
 
  __etext = .;            /* End of text section */
 
  __sdata = .;
  RO_DATA_SECTION(PAGE_SIZE)
  RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
  __edata = .;            /* End of data section */
 
  EXCEPTION_TABLE(16)
  NOTES
 
  . = ALIGN(PAGE_SIZE);        /* Init code and data */
  ___init_begin = .;
  INIT_TEXT_SECTION(PAGE_SIZE)
  INIT_DATA_SECTION(16)
 
  .init.arch.info : {
     ___arch_info_begin = .;
     *(.arch.info.init)
     ___arch_info_end = .;
  }
 
  PERCPU_SECTION(L1_CACHE_BYTES)
 
  ___init_end = .;
 
  BSS_SECTION(0, PAGE_SIZE, 0)
 
  __end = .;
 
  . = ALIGN(PAGE_SIZE);
  __heap_start = .;
 
  DWARF_DEBUG
 
  /* When something in the kernel is NOT compiled as a module, the
   * module cleanup code and data are put into these segments.  Both
   * can then be thrown away, as cleanup code is never called unless
   * it's a module.
   */
  DISCARDS
}