blob: 32b3ddc2bf321f2f6a3dd0d95fce4d1e4b98d6ca (
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
|
/*
* svr3.ifile - for collectless G++ on i386 System V.
* Leaves memory configured at address 0.
*
* Install this file as $prefix/gcc-lib/TARGET/VERSION/gcc.ifile
*
* BLOCK to an offset that leaves room for many headers ( the value
* here allows for a file header, an outheader, and up to 11 section
* headers on most systems.
* BIND to an address that includes page 0 in mapped memory. The value
* used for BLOCK should be or'd into this value. Here I'm setting BLOCK
* to 0x200 and BIND to ( value_used_for(BLOCK) )
* If you are using shared libraries, watch that you don't overlap the
* address ranges assigned for shared libs.
*
* GROUP BIND to a location in the next segment. Here, the only value
* that you should change (I think) is that within NEXT, which I've set
* to my hardware segment size. You can always use a larger size, but not
* a smaller one.
*/
SECTIONS
{
.text BIND(0x000200) BLOCK (0x200) :
{
/* plenty for room for headers */
*(.init)
*(.text)
vfork = fork; /* I got tired of editing peoples sloppy code */
*(.fini)
}
.stab BIND(ADDR(.text) + SIZEOF(.text)): { }
.stabstr BIND(ADDR(.stab) + SIZEOF(.stab)): { }
GROUP BIND( NEXT(0x400000) +
(ADDR(.stabstr) + (SIZEOF(.stabstr)) % 0x1000)):
{
.data : {
__CTOR_LIST__ = . ;
. += 4 ; /* leading NULL */
*(.ctor)
. += 4 ; /* trailing NULL */
__DTOR_LIST__ = . ;
. += 4 ; /* leading NULL */
*(.dtor)
. += 4 ; /* trailing NULL */
}
.bss : { }
}
}
|