diff --git a/src/arch/i386/prefix/dskprefix.S b/src/arch/i386/prefix/dskprefix.S index 09622219..e3a39cce 100644 --- a/src/arch/i386/prefix/dskprefix.S +++ b/src/arch/i386/prefix/dskprefix.S @@ -145,7 +145,7 @@ got_sectors: ljmp $SYSSEG, $start_runtime endseg: .word SYSSEG + _filesz_pgh - .section ".zinfo.fixup", "a" /* Compressor fixup information */ + .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */ .ascii "SUBW" .long endseg .long 16 diff --git a/src/arch/i386/prefix/hdprefix.S b/src/arch/i386/prefix/hdprefix.S index fd82e405..ffe1ee57 100644 --- a/src/arch/i386/prefix/hdprefix.S +++ b/src/arch/i386/prefix/hdprefix.S @@ -65,7 +65,7 @@ max_head: load_length: .long _filesz_sect - .section ".zinfo.fixup", "a" /* Compressor fixup information */ + .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */ .ascii "SUBL" .long load_length .long 512 diff --git a/src/arch/i386/prefix/libprefix.S b/src/arch/i386/prefix/libprefix.S index 8d9ab956..60dce8e4 100644 --- a/src/arch/i386/prefix/libprefix.S +++ b/src/arch/i386/prefix/libprefix.S @@ -679,7 +679,7 @@ prot_call_vector: /* File split information for the compressor */ #if COMPRESS - .section ".zinfo", "a" + .section ".zinfo", "a", @progbits .ascii "COPY" .long _prefix_lma .long _prefix_filesz @@ -697,7 +697,7 @@ prot_call_vector: .long _textdata_filesz .long _max_align #else /* COMPRESS */ - .section ".zinfo", "a" + .section ".zinfo", "a", @progbits .ascii "COPY" .long _prefix_lma .long _filesz diff --git a/src/arch/i386/prefix/lkrnprefix.S b/src/arch/i386/prefix/lkrnprefix.S index f9fba7d8..f23e4076 100644 --- a/src/arch/i386/prefix/lkrnprefix.S +++ b/src/arch/i386/prefix/lkrnprefix.S @@ -94,7 +94,7 @@ root_flags: syssize: .long _filesz_pgh - PREFIXPGH - .section ".zinfo.fixup", "a" /* Compressor fixup information */ + .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */ .ascii "SUBL" .long syssize .long 16 diff --git a/src/arch/i386/prefix/nbiprefix.S b/src/arch/i386/prefix/nbiprefix.S index 7a814b7a..ec210094 100644 --- a/src/arch/i386/prefix/nbiprefix.S +++ b/src/arch/i386/prefix/nbiprefix.S @@ -36,7 +36,7 @@ imglen: .long _filesz - 512 memlen: .long _filesz - 512 .size segment_header, . - segment_header - .section ".zinfo.fixup", "a" /* Compressor fixup information */ + .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */ .ascii "SUBL" .long imglen .long 1 diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S index 00f7abc7..ca32a441 100644 --- a/src/arch/i386/prefix/romprefix.S +++ b/src/arch/i386/prefix/romprefix.S @@ -42,7 +42,7 @@ checksum: .word pnpheader .size romheader, . - romheader - .section ".zinfo.fixup", "a" /* Compressor fixup information */ + .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */ .ascii "SUBB" .long romheader_size .long 512 @@ -69,7 +69,7 @@ pciheader_runtime_length: .equ pciheader_len, . - pciheader .size pciheader, . - pciheader - .section ".zinfo.fixup", "a" /* Compressor fixup information */ + .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */ .ascii "SUBW" .long pciheader_image_length .long 512 diff --git a/src/arch/i386/scripts/i386.lds b/src/arch/i386/scripts/i386.lds index 71bb9fdd..575cb881 100644 --- a/src/arch/i386/scripts/i386.lds +++ b/src/arch/i386/scripts/i386.lds @@ -34,7 +34,7 @@ SECTIONS { *(.prefix) *(.prefix.*) _mprefix = .; - } .prefix_bss (NOLOAD) : { + } .prefix_bss (NOLOAD) : AT ( _end_lma ) { _eprefix = .; } _prefix_filesz = ABSOLUTE ( _mprefix - _prefix ); @@ -52,7 +52,7 @@ SECTIONS { *(.text16) *(.text16.*) _mtext16 = .; - } .text16_bss (NOLOAD) : { + } .text16_bss (NOLOAD) : AT ( _end_lma ) { _etext16 = .; } _text16_filesz = ABSOLUTE ( _mtext16 - _text16 ); @@ -71,7 +71,7 @@ SECTIONS { *(.data16) *(.data16.*) _mdata16 = .; - } .data16_bss (NOLOAD) : { + } .data16_bss (NOLOAD) : AT ( _end_lma ) { *(.bss16) *(.bss16.*) *(.stack16) @@ -98,7 +98,7 @@ SECTIONS { *(.data.*) *(SORT(.tbl.*)) /* Various tables. See include/tables.h */ _mtextdata = .; - } .textdata_bss (NOLOAD) : { + } .textdata_bss (NOLOAD) : AT ( _end_lma ) { *(.bss) *(.bss.*) *(COMMON) @@ -119,7 +119,7 @@ SECTIONS { *(.zinfo) *(.zinfo.*) _mzinfo = .; - } .zinfo_bss (NOLOAD) : { + } .zinfo_bss (NOLOAD) : AT ( _end_lma ) { _ezinfo = .; } _zinfo_filesz = ABSOLUTE ( _mzinfo - _zinfo ); @@ -130,7 +130,7 @@ SECTIONS { * */ - .weak 0x0 : { + .weak 0x0 : AT ( _end_lma ) { _weak = .; *(.weak) _eweak = .; @@ -181,6 +181,8 @@ SECTIONS { . += _zinfo_filesz; . = ALIGN ( _max_align ); + _end_lma = .; + /* * Values calculated to save code from doing it *