diff --git a/simulator/i386pe.x b/simulator/i386pe.x index 6ea1c29..a066a35 100644 --- a/simulator/i386pe.x +++ b/simulator/i386pe.x @@ -24,6 +24,7 @@ SECTIONS /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); + PROVIDE (_etext = .); *(.gcc_except_table) } /* The Cygwin32 library uses a section to avoid copying certain data @@ -40,7 +41,7 @@ SECTIONS *(.jcr) __eeprom_start__ = . ; *(.eeprom) - __game_descriptors_start__ = . ; + __game_descriptors_start__ = . ; *(.game_descriptors) __game_descriptors_end__ = . ; __data_end__ = . ; @@ -120,12 +121,18 @@ SECTIONS *(SORT(.CRT$XT*)) /* Termination */ ___crt_xt_end__ = . ; } + /* Windows TLS expects .tls$AAA to be at the start and .tls$ZZZ to be + at the end of section. This is important because _tls_start MUST + be at the beginning of the section to enable SECREL32 relocations with TLS + data. */ .tls BLOCK(__section_alignment__) : { ___tls_start__ = . ; + *(.tls$AAA) *(.tls) *(.tls$) *(SORT(.tls$*)) + *(.tls$ZZZ) ___tls_end__ = . ; } .endjunk BLOCK(__section_alignment__) : @@ -161,72 +168,140 @@ SECTIONS { *(.debug_aranges) } + .zdebug_aranges BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_aranges) + } .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } + .zdebug_pubnames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_pubnames) + } .debug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } + .zdebug_pubtypes BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_pubtypes) + } /* DWARF 2. */ .debug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_info .gnu.linkonce.wi.*) } + .zdebug_info BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_info .zdebug.gnu.linkonce.wi.*) + } .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } + .zdebug_abbrev BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_abbrev) + } .debug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line) } + .zdebug_line BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_line) + } .debug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_frame*) } + .zdebug_frame BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_frame*) + } .debug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str) } + .zdebug_str BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_str) + } .debug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loc) } + .zdebug_loc BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_loc) + } .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } + .zdebug_macinfo BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_macinfo) + } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } + .zdebug_weaknames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_weaknames) + } .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } + .zdebug_funcnames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_funcnames) + } .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } + .zdebug_typenames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_typenames) + } .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } + .zdebug_varnames BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_varnames) + } .debug_macro BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macro) } + .zdebug_macro BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_macro) + } /* DWARF 3. */ .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } + .zdebug_ranges BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_ranges) + } /* DWARF 4. */ .debug_types BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_types .gnu.linkonce.wt.*) } + .zdebug_types BLOCK(__section_alignment__) (NOLOAD) : + { + *(.zdebug_types .gnu.linkonce.wt.*) + } }