[LinuxBIOS] help from ubuntu and FC6 experts

Segher Boessenkool segher at kernel.crashing.org
Thu Jan 25 20:01:24 CET 2007


> Could we perhaps parse the output of "gcc -v" before compiling,  
> looking for "ubuntu" or "fedora" (or whatever those fedora guys add  
> onto the version name)? Then offer a warning that the compiler may  
> be broken with respect to linuxbios.

It's just as easy to add the -fno-stack-protector flag if the
compiler supports it.

> gcc -m32 -nostdlib -nostartfiles -static -o linuxbios_ram -T /home/ 
> amp/LinuxBIOSv2/src/config/linuxbios_ram.ld linuxbios_ram.o
> linuxbios_ram.o: In function `number':
> vtxprintf.c:(.text+0x547e): undefined reference to `__stack_chk_fail'
> linuxbios_ram.o: In function `report_resource_stored':
> (.text+0x66e6): undefined reference to `__stack_chk_fail'
> linuxbios_ram.o: In function `init_processor_name':
> (.text+0x77fe): undefined reference to `__stack_chk_fail'
> linuxbios_ram.o: In function `amdk8_set_resources':
> northbridge.c:(.text+0xa965): undefined reference to  
> `__stack_chk_fail'
> linuxbios_ram.o: In function `cpu_initialize':
> (.text+0x14c3b): undefined reference to `__stack_chk_fail'
> collect2: ld returned 1 exit status
> make[1]: *** [linuxbios_ram] Error 1
> make[1]: Leaving directory `/home/amp/LinuxBIOSv2/targets/tyan/ 
> s2892/s2892/normal'

That's the failure at hand yes.

> with 3.3.6, also from the repos, it's a bit different:
> gcc -m32 -nostdlib -nostartfiles -static -o linuxbios_ram -T /home/ 
> amp/LinuxBIOSv2/src/config/linuxbios_ram.ld linuxbios_ram.o
> linuxbios_ram.o: In function `idiv_long':
> (.text+0x11cb7): undefined reference to `__divdi3'
> linuxbios_ram.o: In function `idiv_long':
> (.text+0x11ccd): undefined reference to `__moddi3'
> linuxbios_ram.o: In function `div_long':
> (.text+0x11e1c): undefined reference to `__udivdi3'
> linuxbios_ram.o: In function `div_long':
> (.text+0x11e32): undefined reference to `__umoddi3'
> collect2: ld returned 1 exit status

That's different, [i]div_long is asking for a 64-bit division,
which isn't a native instruction but implemented by the GCC
support lib (libgcc), and you're explicitly building without
it.


Segher





More information about the coreboot mailing list