/* * 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 : { } } }