Hi Martin,
He was following the instructions on the coreboot website: https://www.coreboot.org/Memtest86%2B
Obviously that must be completely out of date if there’s now a version available from the coreboot site.
Let me see what he can do with that.
We just want to build it as an elf and use it as the primary payload for some validation checks on the memory – the normal/production payload is a Linux kernel.
Thanks,
- Jay
From: coreboot [mailto:coreboot-bounces@coreboot.org] On Behalf Of Martin Roth Sent: Monday, March 12, 2018 10:18 AM To: Jay Talbott Cc: coreboot Subject: Re: [coreboot] Has anyone built the memtest86+ payload recently?
Hi Jay, Are they using the coreboot version of memtest86plus? What commit is being built? What version of GCC?
Building with GCC 7.3.0 from the latest commit at review.coreboot.org/memtest86plus, I do get one warning that should be cleaned up, but it builds fine. The errors you posted look to me like it's being built from the default memtest86+ zipfile.
We also have the Kconfig option in coreboot to build memtest86+ as a secondary payload. That works with no issue.
Below is my build output from the coreboot memtest86plus repo. Hope this helps.
Martin
~/work/git/memtest86plus ((5ca4eb9...))% make rm -f *.o *.pre.s *.iso memtest.bin memtest memtest_shared \ memtest_shared.bin memtest.iso cc -E -traditional head.S -o head.pre.s as -32 -o head.pre.o head.pre.s cc -c -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -fno-strict-aliasing reloc.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o main.o main.c cc -c -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding test.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o init.o init.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o lib.o lib.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o patn.o patn.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o screen_buffer.o screen_buffer.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o config.o config.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o cpuid.o cpuid.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o coreboot.o coreboot.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o pci.o pci.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o memsize.o memsize.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o spd.o spd.c spd.c: In function ‘sb800_get_smb’: spd.c:58:20: warning: variable ‘result’ set but not used [-Wunused-but-set-variable] int lbyte, hbyte, result; ^~~~~~ cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o error.o error.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o dmi.o dmi.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o controller.o controller.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o smp.o smp.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o vmem.o vmem.c cc -c -Wall -march=i486 -m32 -O3 -fomit-frame-pointer -fno-builtin -ffreestanding random.c cc -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fgnu89-inline -c -o multiboot.o multiboot.c ld -z max-page-size=0x1000 --warn-constructors --warn-common -static -T memtest_shared.lds \ -o memtest_shared head.pre.o reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o cpuid.o coreboot.o pci.o memsize.o spd.o error.o dmi.o controller.o smp.o vmem.o random.o multiboot.o && \ ld -z max-page-size=0x1000 -shared -Bsymbolic -T memtest_shared.lds -o memtest_shared head.pre.o reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o cpuid.o coreboot.o pci.o memsize.o spd.o error.o dmi.o controller.o smp.o vmem.o random.o multiboot.o objcopy -O binary memtest_shared memtest_shared.bin cc -E -traditional bootsect.S -o bootsect.pre.s as -32 -o bootsect.pre.o bootsect.pre.s cc -E -traditional setup.S -o setup.pre.s as -32 -o setup.pre.o setup.pre.s ld -z max-page-size=0x1000 -T memtest.bin.lds bootsect.pre.o setup.pre.o -b binary \ memtest_shared.bin -o memtest.bin ld -z max-page-size=0x1000 -s -T memtest.lds -b binary memtest_shared.bin -o memtest
On Mon, Mar 12, 2018 at 10:41 AM, Jay Talbott JayTalbott@sysproconsulting.com wrote:
One of my colleagues is trying to build the memtest86+ payload, and is running into build problems.
Build environment is Ubuntu 16.0.4 LTS.
Has anybody else run into this? Any guidance on how to resolve it?
I’m hoping it’s just something simple that needs to be changed in the build environment that I can pass along to him.
Thanks,
- Jay
$ make clean
rm -f *.o *.s *.iso memtest.bin memtest memtest_shared \
memtest_shared.bin memtest.iso
$ make
rm -f *.o *.s *.iso memtest.bin memtest memtest_shared \
memtest_shared.bin memtest.iso
gcc -E -traditional head.S -o head.s
as -32 -o head.o head.s
gcc -c -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -fno-strict-aliasing reloc.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o main.o main.c
gcc -c -Wall -march=i486 -m32 -O0 -fomit-frame-pointer -fno-builtin -ffreestanding test.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o init.o init.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o lib.o lib.c
lib.c: In function ‘serial_echo_init’:
lib.c:807:19: warning: variable ‘lo’ set but not used [-Wunused-but-set-variable]
int comstat, hi, lo, serial_div;
^
lib.c:807:15: warning: variable ‘hi’ set but not used [-Wunused-but-set-variable]
int comstat, hi, lo, serial_div;
^
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o patn.o patn.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o screen_buffer.o screen_buffer.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o config.o config.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o cpuid.o cpuid.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o linuxbios.o linuxbios.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o pci.o pci.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o memsize.o memsize.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o spd.o spd.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o error.o error.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o dmi.o dmi.c
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o controller.o controller.c
controller.c: In function ‘poll_timings_k16’:
controller.c:3683:20: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
int cas, rcd, rp, rc, ras;
^
controller.c: In function ‘setup_nhm32’:
controller.c:331:34: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations]
pci_conf_read( possible_nhm_bus[i], 3, 4, 0x00, 2, &vid);
^
controller.c:330:2: note: containing loop
for(i = 0; i < sizeof(possible_nhm_bus); i++) {
^
controller.c: In function ‘setup_nhm’:
controller.c:296:34: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations]
pci_conf_read( possible_nhm_bus[i], 3, 4, 0x00, 2, &vid);
^
controller.c:295:2: note: containing loop
for(i = 0; i < sizeof(possible_nhm_bus); i++) {
^
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o smp.o smp.c
smp.c: In function ‘smp_find_cpus’:
smp.c:513:11: warning: passing argument 1 of ‘memset’ discards ‘volatile’ qualifier from pointer target type [-Wdiscarded-array-qualifiers]
memset(&AP, 0, sizeof AP); ^
smp.c:170:1: note: expected ‘void *’ but argument is of type ‘volatile ap_info_t (*)[32] {aka volatile struct <anonymous> (*)[32]}’
memset (void *dst,
^
gcc -Wall -march=i486 -m32 -O1 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC -fno-stack-protector -c -o vmem.o vmem.c
gcc -c -Wall -march=i486 -m32 -O3 -fomit-frame-pointer -fno-builtin -ffreestanding random.c
ld --warn-constructors --warn-common -static -T memtest_shared.lds \
-o memtest_shared head.o reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o cpuid.o linuxbios.o pci.o memsize.o spd.o error.o dmi.o controller.o smp.o vmem.o random.o && \
ld -shared -Bsymbolic -T memtest_shared.lds -o memtest_shared head.o reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o cpuid.o linuxbios.o pci.o memsize.o spd.o error.o dmi.o controller.o smp.o vmem.o random.o
lib.o: In function `__inb':
lib.c:(.text+0x0): multiple definition of `__inb'
init.o:init.c:(.text+0x0): first defined here
lib.o: In function `__inbc':
lib.c:(.text+0x6): multiple definition of `__inbc'
init.o:init.c:(.text+0x6): first defined here
lib.o: In function `__inb_p':
lib.c:(.text+0xc): multiple definition of `__inb_p'
init.o:init.c:(.text+0xc): first defined here
lib.o: In function `__inbc_p':
lib.c:(.text+0x14): multiple definition of `__inbc_p'
init.o:init.c:(.text+0x14): first defined here
lib.o: In function `__inw':
lib.c:(.text+0x1c): multiple definition of `__inw'
init.o:init.c:(.text+0x1c): first defined here
lib.o: In function `__inwc':
lib.c:(.text+0x23): multiple definition of `__inwc'
init.o:init.c:(.text+0x23): first defined here
lib.o: In function `__inw_p':
lib.c:(.text+0x2a): multiple definition of `__inw_p'
init.o:init.c:(.text+0x2a): first defined here
lib.o: In function `__inwc_p':
lib.c:(.text+0x33): multiple definition of `__inwc_p'
init.o:init.c:(.text+0x33): first defined here
lib.o: In function `__inl':
lib.c:(.text+0x3c): multiple definition of `__inl'
init.o:init.c:(.text+0x3c): first defined here
lib.o: In function `__inlc':
lib.c:(.text+0x42): multiple definition of `__inlc'
init.o:init.c:(.text+0x42): first defined here
lib.o: In function `__inl_p':
lib.c:(.text+0x48): multiple definition of `__inl_p'
init.o:init.c:(.text+0x48): first defined here
lib.o: In function `__inlc_p':
lib.c:(.text+0x50): multiple definition of `__inlc_p'
init.o:init.c:(.text+0x50): first defined here
lib.o: In function `__outb':
lib.c:(.text+0x58): multiple definition of `__outb'
init.o:init.c:(.text+0x58): first defined here
lib.o: In function `__outbc':
lib.c:(.text+0x62): multiple definition of `__outbc'
init.o:init.c:(.text+0x62): first defined here
lib.o: In function `__outb_p':
lib.c:(.text+0x6c): multiple definition of `__outb_p'
init.o:init.c:(.text+0x6c): first defined here
lib.o: In function `__outbc_p':
lib.c:(.text+0x78): multiple definition of `__outbc_p'
init.o:init.c:(.text+0x78): first defined here
lib.o: In function `__outw':
lib.c:(.text+0x84): multiple definition of `__outw'
init.o:init.c:(.text+0x84): first defined here
lib.o: In function `__outwc':
lib.c:(.text+0x8f): multiple definition of `__outwc'
init.o:init.c:(.text+0x8f): first defined here
lib.o: In function `__outw_p':
lib.c:(.text+0x9a): multiple definition of `__outw_p'
init.o:init.c:(.text+0x9a): first defined here
lib.o: In function `__outwc_p':
lib.c:(.text+0xa7): multiple definition of `__outwc_p'
init.o:init.c:(.text+0xa7): first defined here
lib.o: In function `__outl':
lib.c:(.text+0xb4): multiple definition of `__outl'
init.o:init.c:(.text+0xb4): first defined here
lib.o: In function `__outlc':
lib.c:(.text+0xbe): multiple definition of `__outlc'
init.o:init.c:(.text+0xbe): first defined here
lib.o: In function `__outl_p':
lib.c:(.text+0xc8): multiple definition of `__outl_p'
init.o:init.c:(.text+0xc8): first defined here
lib.o: In function `__outlc_p':
lib.c:(.text+0xd4): multiple definition of `__outlc_p'
init.o:init.c:(.text+0xd4): first defined here
lib.o: In function `outsb':
lib.c:(.text+0xe0): multiple definition of `outsb'
init.o:init.c:(.text+0xe0): first defined here
lib.o: In function `outsw':
lib.c:(.text+0xf2): multiple definition of `outsw'
init.o:init.c:(.text+0xf2): first defined here
lib.o: In function `outsl':
lib.c:(.text+0x105): multiple definition of `outsl'
init.o:init.c:(.text+0x105): first defined here
pci.o: In function `__inb':
pci.c:(.text+0x0): multiple definition of `__inb'
init.o:init.c:(.text+0x0): first defined here
pci.o: In function `__inbc':
pci.c:(.text+0x6): multiple definition of `__inbc'
init.o:init.c:(.text+0x6): first defined here
pci.o: In function `__inb_p':
pci.c:(.text+0xc): multiple definition of `__inb_p'
init.o:init.c:(.text+0xc): first defined here
pci.o: In function `__inbc_p':
pci.c:(.text+0x14): multiple definition of `__inbc_p'
init.o:init.c:(.text+0x14): first defined here
pci.o: In function `__inw':
pci.c:(.text+0x1c): multiple definition of `__inw'
init.o:init.c:(.text+0x1c): first defined here
pci.o: In function `__inwc':
pci.c:(.text+0x23): multiple definition of `__inwc'
init.o:init.c:(.text+0x23): first defined here
pci.o: In function `__inw_p':
pci.c:(.text+0x2a): multiple definition of `__inw_p'
init.o:init.c:(.text+0x2a): first defined here
pci.o: In function `__inwc_p':
pci.c:(.text+0x33): multiple definition of `__inwc_p'
init.o:init.c:(.text+0x33): first defined here
pci.o: In function `__inl':
pci.c:(.text+0x3c): multiple definition of `__inl'
init.o:init.c:(.text+0x3c): first defined here
pci.o: In function `__inlc':
pci.c:(.text+0x42): multiple definition of `__inlc'
init.o:init.c:(.text+0x42): first defined here
pci.o: In function `__inl_p':
pci.c:(.text+0x48): multiple definition of `__inl_p'
init.o:init.c:(.text+0x48): first defined here
pci.o: In function `__inlc_p':
pci.c:(.text+0x50): multiple definition of `__inlc_p'
init.o:init.c:(.text+0x50): first defined here
pci.o: In function `__outb':
pci.c:(.text+0x58): multiple definition of `__outb'
init.o:init.c:(.text+0x58): first defined here
pci.o: In function `__outbc':
pci.c:(.text+0x62): multiple definition of `__outbc'
init.o:init.c:(.text+0x62): first defined here
pci.o: In function `__outb_p':
pci.c:(.text+0x6c): multiple definition of `__outb_p'
init.o:init.c:(.text+0x6c): first defined here
pci.o: In function `__outbc_p':
pci.c:(.text+0x78): multiple definition of `__outbc_p'
init.o:init.c:(.text+0x78): first defined here
pci.o: In function `__outw':
pci.c:(.text+0x84): multiple definition of `__outw'
init.o:init.c:(.text+0x84): first defined here
pci.o: In function `__outwc':
pci.c:(.text+0x8f): multiple definition of `__outwc'
init.o:init.c:(.text+0x8f): first defined here
pci.o: In function `__outw_p':
pci.c:(.text+0x9a): multiple definition of `__outw_p'
init.o:init.c:(.text+0x9a): first defined here
pci.o: In function `__outwc_p':
pci.c:(.text+0xa7): multiple definition of `__outwc_p'
init.o:init.c:(.text+0xa7): first defined here
pci.o: In function `__outl':
pci.c:(.text+0xb4): multiple definition of `__outl'
init.o:init.c:(.text+0xb4): first defined here
pci.o: In function `__outlc':
pci.c:(.text+0xbe): multiple definition of `__outlc'
init.o:init.c:(.text+0xbe): first defined here
pci.o: In function `__outl_p':
pci.c:(.text+0xc8): multiple definition of `__outl_p'
init.o:init.c:(.text+0xc8): first defined here
pci.o: In function `__outlc_p':
pci.c:(.text+0xd4): multiple definition of `__outlc_p'
init.o:init.c:(.text+0xd4): first defined here
pci.o: In function `outsb':
pci.c:(.text+0xe0): multiple definition of `outsb'
init.o:init.c:(.text+0xe0): first defined here
pci.o: In function `outsw':
pci.c:(.text+0xf2): multiple definition of `outsw'
init.o:init.c:(.text+0xf2): first defined here
pci.o: In function `outsl':
pci.c:(.text+0x105): multiple definition of `outsl'
init.o:init.c:(.text+0x105): first defined here
spd.o: In function `__inb':
spd.c:(.text+0x162): multiple definition of `__inb'
init.o:init.c:(.text+0x0): first defined here
spd.o: In function `__inbc':
spd.c:(.text+0x168): multiple definition of `__inbc'
init.o:init.c:(.text+0x6): first defined here
spd.o: In function `__inb_p':
spd.c:(.text+0x16e): multiple definition of `__inb_p'
init.o:init.c:(.text+0xc): first defined here
spd.o: In function `__inbc_p':
spd.c:(.text+0x176): multiple definition of `__inbc_p'
init.o:init.c:(.text+0x14): first defined here
spd.o: In function `__inw':
spd.c:(.text+0x17e): multiple definition of `__inw'
init.o:init.c:(.text+0x1c): first defined here
spd.o: In function `__inwc':
spd.c:(.text+0x185): multiple definition of `__inwc'
init.o:init.c:(.text+0x23): first defined here
spd.o: In function `__inw_p':
spd.c:(.text+0x18c): multiple definition of `__inw_p'
init.o:init.c:(.text+0x2a): first defined here
spd.o: In function `__inwc_p':
spd.c:(.text+0x195): multiple definition of `__inwc_p'
init.o:init.c:(.text+0x33): first defined here
spd.o: In function `__inl':
spd.c:(.text+0x19e): multiple definition of `__inl'
init.o:init.c:(.text+0x3c): first defined here
spd.o: In function `__inlc':
spd.c:(.text+0x1a4): multiple definition of `__inlc'
init.o:init.c:(.text+0x42): first defined here
spd.o: In function `__inl_p':
spd.c:(.text+0x1aa): multiple definition of `__inl_p'
init.o:init.c:(.text+0x48): first defined here
spd.o: In function `__inlc_p':
spd.c:(.text+0x1b2): multiple definition of `__inlc_p'
init.o:init.c:(.text+0x50): first defined here
spd.o: In function `__outb':
spd.c:(.text+0x1ba): multiple definition of `__outb'
init.o:init.c:(.text+0x58): first defined here
spd.o: In function `__outbc':
spd.c:(.text+0x1c4): multiple definition of `__outbc'
init.o:init.c:(.text+0x62): first defined here
spd.o: In function `__outb_p':
spd.c:(.text+0x1ce): multiple definition of `__outb_p'
init.o:init.c:(.text+0x6c): first defined here
spd.o: In function `__outbc_p':
spd.c:(.text+0x1da): multiple definition of `__outbc_p'
init.o:init.c:(.text+0x78): first defined here
spd.o: In function `__outw':
spd.c:(.text+0x1e6): multiple definition of `__outw'
init.o:init.c:(.text+0x84): first defined here
spd.o: In function `__outwc':
spd.c:(.text+0x1f1): multiple definition of `__outwc'
init.o:init.c:(.text+0x8f): first defined here
spd.o: In function `__outw_p':
spd.c:(.text+0x1fc): multiple definition of `__outw_p'
init.o:init.c:(.text+0x9a): first defined here
spd.o: In function `__outwc_p':
spd.c:(.text+0x209): multiple definition of `__outwc_p'
init.o:init.c:(.text+0xa7): first defined here
spd.o: In function `__outl':
spd.c:(.text+0x216): multiple definition of `__outl'
init.o:init.c:(.text+0xb4): first defined here
spd.o: In function `__outlc':
spd.c:(.text+0x220): multiple definition of `__outlc'
init.o:init.c:(.text+0xbe): first defined here
spd.o: In function `__outl_p':
spd.c:(.text+0x22a): multiple definition of `__outl_p'
init.o:init.c:(.text+0xc8): first defined here
spd.o: In function `__outlc_p':
spd.c:(.text+0x236): multiple definition of `__outlc_p'
init.o:init.c:(.text+0xd4): first defined here
spd.o: In function `outsb':
spd.c:(.text+0x242): multiple definition of `outsb'
init.o:init.c:(.text+0xe0): first defined here
spd.o: In function `outsw':
spd.c:(.text+0x254): multiple definition of `outsw'
init.o:init.c:(.text+0xf2): first defined here
spd.o: In function `outsl':
spd.c:(.text+0x267): multiple definition of `outsl'
init.o:init.c:(.text+0x105): first defined here
main.o: In function `test_start':
main.c:(.text+0x2143): undefined reference to `reboot'
Makefile:30: recipe for target 'memtest_shared' failed
make: *** [memtest_shared] Error 1
-- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot