This is interesting but not fun.
Consider the file: ./src/arch/i386/lib/console.inc
When I build now I get: linuxbios_c.o: In function `_start': linuxbios_c.o(.text+0x28): undefined reference to `console_tx_al' linuxbios_c.o(.text+0x35): undefined reference to `console_tx_hex8' linuxbios_c.o(.text+0x42): undefined reference to `console_tx_al' linuxbios_c.o(.text+0x7b): undefined reference to `console_tx_al' linuxbios_c.o(.text+0x88): undefined reference to `console_tx_hex8' linuxbios_c.o(.text+0x95): undefined reference to `console_tx_al' linuxbios_c.o(.text+0xa9): undefined reference to `console_tx_al' linuxbios_c.o(.text+0xb6): undefined reference to `console_tx_hex8' linuxbios_c.o(.text+0xc3): undefined reference to `console_tx_al'
OK, let's try this: .globl console_tx_al console_tx_al: etc. etc.
Now when I build I get:
linuxbios.a(crt0.o): In function `_start': crt0.o(.rom.text+0x27): multiple definition of `_start' c_start.o(.text+0x0): first defined here
What the @@@@?
Well, what happened, is that the .o was pulled out of linuxbios.a since a symbol in that .o was used. But _start was also defined in there, with the result that we get the multiple definition problem.
This looks like an outgrowth of the CONFIG_COMPRESS stuff; more as I learn it.
ron