|
|
1.1 ! root 1: /* ! 2: * svr3z.ifile - for collectless G++ on i386 System V. ! 3: * Leaves memory unconfigured at address 0. ! 4: * ! 5: * Install this file as $prefix/gcc-lib/TARGET/VERSION/gccz.ifile ! 6: * ! 7: * BLOCK to an offset that leaves room for many headers ( the value ! 8: * here allows for a file header, an outheader, and up to 11 section ! 9: * headers on most systems. ! 10: * BIND to an address that excludes page 0 from being mapped. The value ! 11: * used for BLOCK should be or'd into this value. Here I'm setting BLOCK ! 12: * to 0x200 and BIND to ( 0x400000 | value_used_for(BLOCK) ) ! 13: * If you are using shared libraries, watch that you don't overlap the ! 14: * address ranges assigned for shared libs. ! 15: * ! 16: * GROUP BIND to a location in the next segment. Here, the only value ! 17: * that you should change (I think) is that within NEXT, which I've set ! 18: * to my hardware segment size. You can always use a larger size, but not ! 19: * a smaller one. ! 20: */ ! 21: SECTIONS ! 22: { ! 23: .text BIND(0x400200) BLOCK (0x200) : ! 24: { ! 25: /* plenty for room for headers */ ! 26: *(.init) ! 27: *(.text) ! 28: vfork = fork; /* I got tired of editing peoples sloppy code */ ! 29: *(.fini) ! 30: } ! 31: GROUP BIND( NEXT(0x400000) + (ADDR(.text) + (SIZEOF(.text)) % 0x1000)): ! 32: { ! 33: .data : { ! 34: __CTOR_LIST__ = . ; ! 35: . += 4 ; /* leading NULL */ ! 36: *(.ctor) ! 37: . += 4 ; /* trailing NULL */ ! 38: __DTOR_LIST__ = . ; ! 39: . += 4 ; /* leading NULL */ ! 40: *(.dtor) ! 41: . += 4 ; /* trailing NULL */ ! 42: } ! 43: .bss : { } ! 44: } ! 45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.