Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[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.
  • Loading branch information
Michael Brown authored and Michael Brown committed Oct 17, 2008
1 parent 58dd6e0 commit 04f3206
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/arch/i386/prefix/dskprefix.S
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/arch/i386/prefix/hdprefix.S
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/arch/i386/prefix/libprefix.S
Expand Up @@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/arch/i386/prefix/lkrnprefix.S
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/arch/i386/prefix/nbiprefix.S
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/arch/i386/prefix/romprefix.S
Expand Up @@ -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
Expand All @@ -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
Expand Down
14 changes: 8 additions & 6 deletions src/arch/i386/scripts/i386.lds
Expand Up @@ -34,7 +34,7 @@ SECTIONS {
*(.prefix)
*(.prefix.*)
_mprefix = .;
} .prefix_bss (NOLOAD) : {
} .prefix_bss (NOLOAD) : AT ( _end_lma ) {
_eprefix = .;
}
_prefix_filesz = ABSOLUTE ( _mprefix - _prefix );
Expand All @@ -52,7 +52,7 @@ SECTIONS {
*(.text16)
*(.text16.*)
_mtext16 = .;
} .text16_bss (NOLOAD) : {
} .text16_bss (NOLOAD) : AT ( _end_lma ) {
_etext16 = .;
}
_text16_filesz = ABSOLUTE ( _mtext16 - _text16 );
Expand All @@ -71,7 +71,7 @@ SECTIONS {
*(.data16)
*(.data16.*)
_mdata16 = .;
} .data16_bss (NOLOAD) : {
} .data16_bss (NOLOAD) : AT ( _end_lma ) {
*(.bss16)
*(.bss16.*)
*(.stack16)
Expand All @@ -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)
Expand All @@ -119,7 +119,7 @@ SECTIONS {
*(.zinfo)
*(.zinfo.*)
_mzinfo = .;
} .zinfo_bss (NOLOAD) : {
} .zinfo_bss (NOLOAD) : AT ( _end_lma ) {
_ezinfo = .;
}
_zinfo_filesz = ABSOLUTE ( _mzinfo - _zinfo );
Expand All @@ -130,7 +130,7 @@ SECTIONS {
*
*/

.weak 0x0 : {
.weak 0x0 : AT ( _end_lma ) {
_weak = .;
*(.weak)
_eweak = .;
Expand Down Expand Up @@ -181,6 +181,8 @@ SECTIONS {
. += _zinfo_filesz;
. = ALIGN ( _max_align );

_end_lma = .;

/*
* Values calculated to save code from doing it
*
Expand Down

0 comments on commit 04f3206

Please sign in to comment.