summaryrefslogtreecommitdiff
path: root/support/splint/examples/ld/ldexample.hw
blob: d9cb7326247c04fc4df4aa796cc48bc7d9b7a1db (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
INCLUDE file.ld

MEMORY
{
 @> @<Some random portion of \ld\ code@> @= 
  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
  FLASH (rx!w) : ORIGIN = 0x8000000, LENGTH = 128K
  ASH (rx) : ORIGIN = 8001000, LENGTH = 128K
 @> @<Some random portion of \ld\ code@> @= 
  CLASH (rx) : ORIGIN = 700000, LENGTH = 128K
  ASH (rx) : ORIGIN = $8000000, LENGTH = 128K
  CLASH (rx) : ORIGIN = 700000B, LENGTH = 128K
  INCLUDE file.mem
 @> @<Some random portion of \ld\ code@> @= 

}

_estack = 0x20005000;
_bstack = a > 0 ? NEXT(11) : 0x19;
 @> @<Some random portion of \ld\ code@> @= 
PROVIDE( var1 = . );
PROVIDE_HIDDEN( var2 = . );
 @> @<Some random portion of \ld\ code@> @= 
HIDDEN( var3 = . );
ENTRY(_entry);

SECTIONS
{
 @> @<Some random portion of \ld\ code@> @= 
    . = ORIGIN(FLASH);
    .isr_vector ALIGN(8) (NOLOAD): AT(.) ALIGN(.) ALIGN_WITH_INPUT SUBALIGN(8) SPECIAL
    {
        . = ALIGN(4);
        KEEP(*(.isr_vector))
        . = ALIGN(4);
    } > FLASH AT > RAM : FLASH : RAM : OTHER = . + 8  
 @> @<Some random portion of \ld\ code@> @= 
    .text :
    {
        /* skip this comment */;
        . = ALIGN(4);
        *(.text)     
        *(.text.*)   
        *(.rodata)   
        *(.rodata*)
        *(.glue_7)
        *(.glue_7t)
        . = ALIGN(4);
   	_etext = . + 8;
   	_sidata = _etext;
        PROVIDE( var1 = . );
        PROVIDE_HIDDEN( var2 = . );
        HIDDEN( var3 = . );
    } >FLASH AT > RAM

 @> @<Some random portion of \ld\ code@> @= 
    .data  : AT ( _sidata )
    {
	    . = ALIGN(4);
        _sdata = . ; 
        *(.data)
        *(.data.*)
	    . = ALIGN(4);
   	 _edata = . ;
    } >RAM    

    .bss :
    {
	    . = ALIGN(4);
        _sbss = .; 
        *(.bss)
        *(COMMON)
	    . = ALIGN(4);
   	 _ebss = . ; 
    } >RAM
 @> @<Some random portion of \ld\ code@> @= 
    . = ALIGN(0x0001ABCD);
    _ffbegin = .;
    OVERLAY : NOCROSSREFS AT ( _ffabs ) {
       .free_func0
       {
            *(.free_func0)
	    . = ALIGN(4);
       }    

       .free_func1
       {
            *(.free_func1)
       }    
    } >RAM
}