aboutsummaryrefslogtreecommitdiff
path: root/tip22/ld.script.in
blob: 4f5597cc85c40b2029f4961049b0f7bf27196b77 (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
OUTPUT_FORMAT("@@OUTPUTFORMAT@@")
OUTPUT_ARCH(mips)
ENTRY(_start)
SECTIONS
{
  /* XXX: place the loader after the kernel */
  . = @@LOADADDR@@;

  /* read-only */
  _text = .;			/* Text and read-only data */
  .text : {
    _ftext = .;
    *(.text .text.*)
    *(.rodata*)
  } =0

  _etext = .;			/* End of text section */
  PROVIDE (etext = .);

  . = ALIGN(16);

  /* writeable */
  .data : {
    _fdata = .;
    *(.data .data.*)
  } =0

  _gp = ALIGN(16) + 0x7ff0;
  .lit8 : { *(.lit8) }
  .lit4 : { *(.lit4) }
  /* We want the small data sections together, so single-instruction offsets
     can access them all, and initialized data all before uninitialized, so
     we can shorten the on-disk segment size.  */
  .sdata : { *(.sdata) }

  _edata = .;
  PROVIDE (edata = .);

  __bss_start = .;
  .sbss : {
    *(.sbss)
    *(.scommon)
  }
  .bss : {
    _fbss = .;
    *(.dynbss)
    *(.bss .bss.*)
    *(COMMON)
    /* Align here to ensure that the .bss section occupies space up to
       _end.  Align after .bss to ensure correct alignment even if the
       .bss section disappears because there are no input sections.  */
    . = ALIGN(32 / 8);
  }
  . = ALIGN(32 / 8);
  __bss_stop = .;
  _end = .;
  PROVIDE (end = .);

  /* Sections to be discarded */
  /DISCARD/ : {
        *(.text.exit)
        *(.data.exit)
        *(.exitcall.exit)
	*(.stab)
	*(.stabstr)
	*(.pdr)
	*(.note)
	*(.reginfo)
	*(.options)
	*(.MIPS.options)
        *(.debug*)
        *(.line)
        *(.mdebug*)
        *(.comment*)
        *(.gptab*)
        *(.note)
  }
}