49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
/*
|
|
* svr3z.ifile - for collectless G++ on i386 System V.
|
|
* Leaves memory unconfigured at address 0.
|
|
*
|
|
* Install this file as $prefix/gcc-lib/TARGET/VERSION/gccz.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 excludes page 0 from being mapped. The value
|
|
* used for BLOCK should be or'd into this value. Here I'm setting BLOCK
|
|
* to 0x200 and BIND to ( 0x400000 | 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(0x400200) 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 : { }
|
|
}
|
|
}
|