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