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
"Ronald G. Minnich" rminnich@lanl.gov writes:
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'
It looks like serial.inc or whatever the lowlevel console include is not included. Why the reference have all become lower case is beyond me.
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.
It looks like you put the .globl in another part and the fact that we are even looking in linuxbios.a may be a problem.
This looks like an outgrowth of the CONFIG_COMPRESS stuff; more as I learn it.
The later failures yes but not the original.
Eric
Ron,
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.
It's related to src/arch/i386/include/arch/intel.h which I checked in for EPIA. I have removed those changes. It should build now. Sorry guys, I should have double check this.
-Andrew
On Wed, 12 Feb 2003, Andrew Ip wrote:
It's related to src/arch/i386/include/arch/intel.h which I checked in for EPIA. I have removed those changes. It should build now. Sorry guys, I should have double check this.
it's why being a committer is a double-edged sword. One little mistake and ...
:-)
thanks for fixing this, andrew.
ron