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

Attachment: 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
linuxbios@linuxbios.org
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to