[build] Fix building on Ubuntu 8.04

Not fully understood, but it seems that the LMA of bss sections matters
for some newer binutils builds.  Force all bss sections to have an LMA
at the end of the file, so that they don't interfere with other
sections.

The symptom was that objcopy -O binary -j .zinfo would extract the
.zinfo section from bin/xxx.tmp as a blob of the correct length, but
with zero contents.  This would then cause the [ZBIN] stage of the
build to fail.

Also explicitly state that .zinfo(.*) sections have @progbits, in case
some future assembler or linker variant decides to omit them.
This commit is contained in:
Michael Brown
2008-10-16 20:39:48 -04:00
committed by Michael Brown
parent 58dd6e04c5
commit 04f3206581
7 changed files with 16 additions and 14 deletions

View File

@@ -145,7 +145,7 @@ got_sectors:
ljmp $SYSSEG, $start_runtime ljmp $SYSSEG, $start_runtime
endseg: .word SYSSEG + _filesz_pgh endseg: .word SYSSEG + _filesz_pgh
.section ".zinfo.fixup", "a" /* Compressor fixup information */ .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
.ascii "SUBW" .ascii "SUBW"
.long endseg .long endseg
.long 16 .long 16

View File

@@ -65,7 +65,7 @@ max_head:
load_length: load_length:
.long _filesz_sect .long _filesz_sect
.section ".zinfo.fixup", "a" /* Compressor fixup information */ .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
.ascii "SUBL" .ascii "SUBL"
.long load_length .long load_length
.long 512 .long 512

View File

@@ -679,7 +679,7 @@ prot_call_vector:
/* File split information for the compressor */ /* File split information for the compressor */
#if COMPRESS #if COMPRESS
.section ".zinfo", "a" .section ".zinfo", "a", @progbits
.ascii "COPY" .ascii "COPY"
.long _prefix_lma .long _prefix_lma
.long _prefix_filesz .long _prefix_filesz
@@ -697,7 +697,7 @@ prot_call_vector:
.long _textdata_filesz .long _textdata_filesz
.long _max_align .long _max_align
#else /* COMPRESS */ #else /* COMPRESS */
.section ".zinfo", "a" .section ".zinfo", "a", @progbits
.ascii "COPY" .ascii "COPY"
.long _prefix_lma .long _prefix_lma
.long _filesz .long _filesz

View File

@@ -94,7 +94,7 @@ root_flags:
syssize: syssize:
.long _filesz_pgh - PREFIXPGH .long _filesz_pgh - PREFIXPGH
.section ".zinfo.fixup", "a" /* Compressor fixup information */ .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
.ascii "SUBL" .ascii "SUBL"
.long syssize .long syssize
.long 16 .long 16

View File

@@ -36,7 +36,7 @@ imglen: .long _filesz - 512
memlen: .long _filesz - 512 memlen: .long _filesz - 512
.size segment_header, . - segment_header .size segment_header, . - segment_header
.section ".zinfo.fixup", "a" /* Compressor fixup information */ .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
.ascii "SUBL" .ascii "SUBL"
.long imglen .long imglen
.long 1 .long 1

View File

@@ -42,7 +42,7 @@ checksum:
.word pnpheader .word pnpheader
.size romheader, . - romheader .size romheader, . - romheader
.section ".zinfo.fixup", "a" /* Compressor fixup information */ .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
.ascii "SUBB" .ascii "SUBB"
.long romheader_size .long romheader_size
.long 512 .long 512
@@ -69,7 +69,7 @@ pciheader_runtime_length:
.equ pciheader_len, . - pciheader .equ pciheader_len, . - pciheader
.size pciheader, . - pciheader .size pciheader, . - pciheader
.section ".zinfo.fixup", "a" /* Compressor fixup information */ .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
.ascii "SUBW" .ascii "SUBW"
.long pciheader_image_length .long pciheader_image_length
.long 512 .long 512

View File

@@ -34,7 +34,7 @@ SECTIONS {
*(.prefix) *(.prefix)
*(.prefix.*) *(.prefix.*)
_mprefix = .; _mprefix = .;
} .prefix_bss (NOLOAD) : { } .prefix_bss (NOLOAD) : AT ( _end_lma ) {
_eprefix = .; _eprefix = .;
} }
_prefix_filesz = ABSOLUTE ( _mprefix - _prefix ); _prefix_filesz = ABSOLUTE ( _mprefix - _prefix );
@@ -52,7 +52,7 @@ SECTIONS {
*(.text16) *(.text16)
*(.text16.*) *(.text16.*)
_mtext16 = .; _mtext16 = .;
} .text16_bss (NOLOAD) : { } .text16_bss (NOLOAD) : AT ( _end_lma ) {
_etext16 = .; _etext16 = .;
} }
_text16_filesz = ABSOLUTE ( _mtext16 - _text16 ); _text16_filesz = ABSOLUTE ( _mtext16 - _text16 );
@@ -71,7 +71,7 @@ SECTIONS {
*(.data16) *(.data16)
*(.data16.*) *(.data16.*)
_mdata16 = .; _mdata16 = .;
} .data16_bss (NOLOAD) : { } .data16_bss (NOLOAD) : AT ( _end_lma ) {
*(.bss16) *(.bss16)
*(.bss16.*) *(.bss16.*)
*(.stack16) *(.stack16)
@@ -98,7 +98,7 @@ SECTIONS {
*(.data.*) *(.data.*)
*(SORT(.tbl.*)) /* Various tables. See include/tables.h */ *(SORT(.tbl.*)) /* Various tables. See include/tables.h */
_mtextdata = .; _mtextdata = .;
} .textdata_bss (NOLOAD) : { } .textdata_bss (NOLOAD) : AT ( _end_lma ) {
*(.bss) *(.bss)
*(.bss.*) *(.bss.*)
*(COMMON) *(COMMON)
@@ -119,7 +119,7 @@ SECTIONS {
*(.zinfo) *(.zinfo)
*(.zinfo.*) *(.zinfo.*)
_mzinfo = .; _mzinfo = .;
} .zinfo_bss (NOLOAD) : { } .zinfo_bss (NOLOAD) : AT ( _end_lma ) {
_ezinfo = .; _ezinfo = .;
} }
_zinfo_filesz = ABSOLUTE ( _mzinfo - _zinfo ); _zinfo_filesz = ABSOLUTE ( _mzinfo - _zinfo );
@@ -130,7 +130,7 @@ SECTIONS {
* *
*/ */
.weak 0x0 : { .weak 0x0 : AT ( _end_lma ) {
_weak = .; _weak = .;
*(.weak) *(.weak)
_eweak = .; _eweak = .;
@@ -181,6 +181,8 @@ SECTIONS {
. += _zinfo_filesz; . += _zinfo_filesz;
. = ALIGN ( _max_align ); . = ALIGN ( _max_align );
_end_lma = .;
/* /*
* Values calculated to save code from doing it * Values calculated to save code from doing it
* *