I'm having trouble building emulation/qemu-i386 in the latest LinuxBIOSv2 snapshot on Fedora 8 (GNU ld version 2.17.50.0.18-1 20070731, gcc version 4.1.2 20070925 (Red Hat 4.1.2-33).
First, ld segfaults unless I apply the attached patch. That one was fun to figure out :-) Now, ld is unable to find a home for the ".id" section: echo '/*ldoptions*/' > ldscript.ld; cat ldoptions >> ldscript.ld ; for file in /home/eswierk/LinuxBIOSv2-2976/src/arch/i386/init/ldscript.lb /home/eswierk/LinuxBIOSv2-2976/src//c\ pu/x86/16bit/entry16.lds /home/eswierk/LinuxBIOSv2-2976/src//cpu/x86/32bit/entry32.lds /home/eswierk/LinuxBIOSv2-2976/src//cpu/x86/16bit/reset16.lds /home/eswierk/LinuxBIOSv2-2976\ /src//arch/i386/lib/id.lds ; do echo /\* $file \*/ >> ldscript.ld; cat $file >> ldscript.ld ; done gcc -m32 -nostdlib -nostartfiles -static -o linuxbios -T ldscript.ld crt0.o /usr/bin/ld: linuxbios: section `.id' can't be allocated in segment 2 /usr/bin/ld: final link failed: Bad value collect2: ld returned 1 exit status Any clues about this one? The ldscript.ld is attached. --Ed
linuxbios-ld-build-id.patch
Description: Binary data
/*ldoptions*/
HAVE_MOVNTI = 0;
CONFIG_USE_INIT = 0;
HAVE_FALLBACK_BOOT = 1;
HAVE_FAILOVER_BOOT = 0;
ROM_IMAGE_SIZE = 0x10000;
PAYLOAD_SIZE = 0x30000;
_ROMBASE = 0xffff0000;
_RESET = 0xffff0000;
_EXCEPTION_VECTORS = 0xffff0100;
STACK_SIZE = 0x2000;
HEAP_SIZE = 0x4000;
_RAMBASE = 0x4000;
USE_DCACHE_RAM = 0;
DCACHE_RAM_BASE = 0xc0000;
DCACHE_RAM_SIZE = 0x1000;
DCACHE_RAM_GLOBAL_VAR_SIZE = 0x0;
CONFIG_AP_CODE_IN_CAR = 0;
MEM_TRAIN_SEQ = 0;
WAIT_BEFORE_CPUS_INIT = 0;
CONFIG_COMPRESS = 1;
CONFIG_UNCOMPRESSED = 0;
CONFIG_LB_MEM_TOPK = 2048;
HAVE_OPTION_TABLE = 1;
USE_OPTION_TABLE = 0;
LB_CKS_RANGE_START = 49;
LB_CKS_RANGE_END = 125;
LB_CKS_LOC = 126;
DEBUG = 1;
CONFIG_CONSOLE_VGA = 0;
CONFIG_CONSOLE_VGA_MULTI = 0;
CONFIG_CONSOLE_VGA_ONBOARD_AT_FIRST = 0;
CONFIG_CONSOLE_BTEXT = 0;
CONFIG_CONSOLE_LOGBUF = 0;
CONFIG_CONSOLE_SROM = 0;
CONFIG_CONSOLE_SERIAL8250 = 1;
CONFIG_USBDEBUG_DIRECT = 0;
DEFAULT_CONSOLE_LOGLEVEL = 8;
MAXIMUM_CONSOLE_LOGLEVEL = 8;
CONFIG_SERIAL_POST = 0;
TTYS0_BASE = 0x3f8;
TTYS0_BAUD = 115200;
TTYS0_LCS = 0x3;
CONFIG_USE_PRINTK_IN_CAR = 0;
MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID = 0;
MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID = 0x0;
CONFIG_MAX_PCI_BUSES = 255;
CONFIG_SMP = 0;
CONFIG_MAX_CPUS = 1;
CONFIG_MAX_PHYSICAL_CPUS = 1;
CONFIG_LOGICAL_CPUS = 0;
SERIAL_CPU_INIT = 1;
APIC_ID_OFFSET = 0;
ENABLE_APIC_EXT_ID = 0;
LIFT_BSP_APIC_ID = 0;
CONFIG_IDE_PAYLOAD = 0;
CONFIG_ROM_PAYLOAD = 1;
CONFIG_ROM_PAYLOAD_START = 0xfffc0000;
CONFIG_COMPRESSED_PAYLOAD_NRV2B = 0;
CONFIG_COMPRESSED_PAYLOAD_LZMA = 0;
CONFIG_PRECOMPRESSED_PAYLOAD = 0;
CONFIG_SERIAL_PAYLOAD = 0;
CONFIG_FS_PAYLOAD = 0;
CONFIG_FS_EXT2 = 0;
CONFIG_FS_ISO9660 = 0;
CONFIG_FS_FAT = 0;
AUTOBOOT_DELAY = 2;
USE_WATCHDOG_ON_BOOT = 0;
CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT = 1;
CONFIG_AGP_PLUGIN_SUPPORT = 1;
CONFIG_CARDBUS_PLUGIN_SUPPORT = 1;
CONFIG_PCIX_PLUGIN_SUPPORT = 1;
CONFIG_PCIEXP_PLUGIN_SUPPORT = 1;
CONFIG_IDE = 0;
IDE_BOOT_DRIVE = 0;
IDE_OFFSET = 0;
PCI_IO_CFG_EXT = 0;
CONFIG_CHIP_NAME = 0;
HAVE_INIT_TIMER = 0;
MAX_REBOOT_CNT = 3;
FAKE_SPDROM = 0;
HAVE_ACPI_TABLES = 0;
ACPI_SSDTX_NUM = 0;
HT_CHAIN_UNITID_BASE = 1;
HT_CHAIN_END_UNITID_BASE = 32;
SB_HT_CHAIN_UNITID_OFFSET_ONLY = 1;
SB_HT_CHAIN_ON_BUS0 = 0;
PCI_BUS_SEGN_BITS = 0;
MMCONF_SUPPORT = 0;
HW_MEM_HOLE_SIZEK = 0;
HW_MEM_HOLE_SIZE_AUTO_INC = 0;
K8_HT_FREQ_1G_SUPPORT = 0;
K8_REV_F_SUPPORT = 0;
CBB = 0;
CDB = 24;
DIMM_SUPPORT = 0x108;
CPU_SOCKET_TYPE = 16;
CPU_ADDR_BITS = 36;
CONFIG_PCI_ROM_RUN = 0;
CONFIG_PCI_64BIT_PREF_MEM = 0;
CONFIG_AGESA = 0;
HAVE_MP_TABLE = 0;
HAVE_PIRQ_TABLE = 1;
USE_FALLBACK_IMAGE = 0;
HAVE_HARD_RESET = 0;
IRQ_SLOT_COUNT = 6;
FALLBACK_SIZE = 0x20000;
ROM_SIZE = 0x40000;
ROM_SECTION_SIZE = 0x40000;
ROM_SECTION_OFFSET = 0x0;
XIP_ROM_SIZE = 0x8000;
XIP_ROM_BASE = 0xffff8000;
CONFIG_UDELAY_IO = 0;
USE_FAILOVER_IMAGE = 0;
/* /home/eswierk/LinuxBIOSv2-2976/src/arch/i386/init/ldscript.lb */
/*
* Memory map:
*
* _RAMBASE
* : data segment
* : bss segment
* : heap
* : stack
* _ROMBASE
* : linuxbios text
* : readonly text
*/
/*
* Bootstrap code for the STPC Consumer
* Copyright (c) 1999 by Net Insight AB. All Rights Reserved.
*
*/
/*
* Written by Johan Rydberg, based on work by Daniel Kahlin.
* Rewritten by Eric Biederman
*/
/*
* We use ELF as output format. So that we can
* debug the code in some form.
*/
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
/*
ENTRY(_start)
*/
TARGET(binary)
INPUT(linuxbios_ram.rom)
SECTIONS
{
. = _ROMBASE;
.ram . : {
_ram = . ;
linuxbios_ram.rom(*)
_eram = . ;
}
/* This section might be better named .setup */
.rom . : {
_rom = .;
*(.rom.text);
*(.rom.data);
*(.rom.data.*);
. = ALIGN(16);
_erom = .;
}
_lrom = LOADADDR(.rom);
_elrom = LOADADDR(.rom) + SIZEOF(.rom);
_iseg = _RAMBASE;
_eiseg = _iseg + SIZEOF(.ram);
_liseg = _ram;
_eliseg = _eram;
/DISCARD/ : {
*(.comment)
*(.note)
}
}
/* /home/eswierk/LinuxBIOSv2-2976/src//cpu/x86/16bit/entry16.lds */
gdtptr16_offset = gdtptr16 & 0xffff;
_start_offset = _start & 0xffff;
/* /home/eswierk/LinuxBIOSv2-2976/src//cpu/x86/32bit/entry32.lds */
/* /home/eswierk/LinuxBIOSv2-2976/src//cpu/x86/16bit/reset16.lds */
/*
* _ROMTOP : The top of the rom used where we
* need to put the reset vector.
*/
SECTIONS {
/* Trigger an error if I have an unuseable start address */
_bogus = ASSERT(_start >= 0xffff0000, "_start to low please decrease
ROM_IMAGE_SIZE");
_ROMTOP = 0xfffffff0;
. = _ROMTOP;
.reset . : {
*(.reset)
. = 15 ;
BYTE(0x00);
}
}
/* /home/eswierk/LinuxBIOSv2-2976/src//arch/i386/lib/id.lds */
SECTIONS {
. = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start);
.id (.): {
*(.id)
}
}
-- linuxbios mailing list [email protected] http://www.linuxbios.org/mailman/listinfo/linuxbios
