aboutsummaryrefslogtreecommitdiff
path: root/pk/pk.ld
blob: 5be7ab845c0c301272d8dd7d9b856dd63ab7d36e (plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
OUTPUT_ARCH( "mips:riscv" )

ENTRY( __start )

SECTIONS
{

  /*--------------------------------------------------------------------*/
  /* Code and read-only segment                                         */
  /*--------------------------------------------------------------------*/

  /* Begining of code and text segment */
  . = 0x00000000;
  _ftext = .;
  PROVIDE( eprol = . );

  .text :
  {
    riscv-pk.o(.text)
  }

  /* text: Program code section */
  .text : 
  {
    *(.text)
    *(.text.*)
    *(.gnu.linkonce.t.*)
  }

  /* rodata: Read-only data */
  .rodata : 
  {
    *(.rdata)
    *(.rodata)
    *(.rodata.*)
    *(.gnu.linkonce.r.*)
  }

  /* End of code and read-only segment */
  PROVIDE( etext = . );
  _etext = .;

  /*--------------------------------------------------------------------*/
  /* Initialized data segment                                           */
  /*--------------------------------------------------------------------*/

  /* Start of initialized data segment */
  . = ALIGN(16);
   _fdata = .;

  /* data: Writable data */
  .data : 
  {
    *(.data)
    *(.data.*)
    *(.gnu.linkonce.d.*)
  }

  /* lit4: Single precision floating point constants created by gas */
  .lit4 : 
  {
    *(.lit4)
  }

  /* lit8: Double precision floating point constants created by gas */
  .lit8 : 
  {
    *(.lit8)
  }

  /* End of initialized data segment */
  . = ALIGN(4);
  PROVIDE( edata = . );
  _edata = .;

  /*--------------------------------------------------------------------*/
  /* Uninitialized data segment                                         */
  /*--------------------------------------------------------------------*/

  /* Start of uninitialized data segment */
  . = .;
  _fbss = .;

  /* sbss: Uninitialized writeable small data section */
  . = .;
  _sbss_start = .;
  .sbss : 
  {
    *(.sbss)
    *(.sbss.*)
    *(.gnu.linkonce.sb.*)
    *(.scommon)
  }

  /* bss: Uninitialized writeable data section */
  . = .;
  _bss_start = .;
  .bss : 
  {
    *(.bss)
    *(.bss.*)
    *(.gnu.linkonce.b.*)
    *(COMMON)
  }

  /* End of uninitialized data segment (used by syscalls.c for heap) */
  PROVIDE( end = . );
  _end = .;

  /*--------------------------------------------------------------------*/
  /* Special gcc sections (this was in idt32.ld)                        */
  /*--------------------------------------------------------------------*/

  .mdebug.abi32        0 : { KEEP(*(.mdebug.abi32))        }
  .mdebug.abiN32       0 : { KEEP(*(.mdebug.abiN32))       }
  .mdebug.abi64        0 : { KEEP(*(.mdebug.abi64))        }
  .mdebug.abiO64       0 : { KEEP(*(.mdebug.abiO64))       }
  .mdebug.eabi32       0 : { KEEP(*(.mdebug.eabi32))       }
  .mdebug.eabi64       0 : { KEEP(*(.mdebug.eabi64))       }
  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }

}