On Tue, Dec 25, 2007 at 08:21:50PM +0100, Robert Millan wrote: > On Tue, Dec 25, 2007 at 01:06:12PM +0100, Philipp Kern wrote: > > On Tue, Dec 25, 2007 at 11:52:47AM +0100, Robert Millan wrote: > > > Philipp, I'm attaching a patch for the __floatundisf. There might be > > > others, > > > though. Please, could you check and report ? > > > > With the patch applied, on Debian Lenny: > > > > cc -o kernel.elf kernel_elf-kern_powerpc_ieee1275_crt0.o > > kernel_elf-kern_powerpc_ieee1275_cmain.o > > kernel_elf-kern_ieee1275_ieee1275.o kernel_elf-kern_main.o > > kernel_elf-kern_device.o kernel_elf-kern_disk.o kernel_elf-kern_dl.o > > kernel_elf-kern_err.o kernel_elf-kern_file.o kernel_elf-kern_fs.o > > kernel_elf-kern_misc.o kernel_elf-kern_mm.o kernel_elf-kern_loader.o > > kernel_elf-kern_rescue.o kernel_elf-kern_term.o > > kernel_elf-kern_powerpc_ieee1275_init.o > > kernel_elf-term_ieee1275_ofconsole.o > > kernel_elf-kern_powerpc_ieee1275_openfw.o kernel_elf-disk_ieee1275_ofdisk.o > > kernel_elf-kern_parser.o kernel_elf-kern_partition.o kernel_elf-kern_env.o > > kernel_elf-kern_powerpc_dl.o kernel_elf-kernel_elf_symlist.o > > kernel_elf-kern_powerpc_cache.o -nostdlib -static-libgcc -lgcc > > -Wl,-N,-S,-Ttext,0x10000,-Bstatic > > kernel_elf-kernel_elf_symlist.o:(.data+0x584): undefined reference to > > `__make_dp' > > kernel_elf-kernel_elf_symlist.o:(.data+0x58c): undefined reference to > > `__make_fp' > > kernel_elf-kernel_elf_symlist.o:(.data+0x5bc): undefined reference to > > `__pack_d' > > kernel_elf-kernel_elf_symlist.o:(.data+0x5c4): undefined reference to > > `__pack_f' > > kernel_elf-kernel_elf_symlist.o:(.data+0x5dc): undefined reference to > > `__thenan_df' > > kernel_elf-kernel_elf_symlist.o:(.data+0x5e4): undefined reference to > > `__thenan_sf' > > kernel_elf-kernel_elf_symlist.o:(.data+0x5fc): undefined reference to > > `__unpack_d' > > kernel_elf-kernel_elf_symlist.o:(.data+0x604): undefined reference to > > `__unpack_f'
Those were present in older versions of gcc, but not anymore. The following patch fixes the problem (while also breaking backwards compatibility): diff -ur grub2-1.95+20071101/include/grub/powerpc/libgcc.h grub2-1.95+20071101.new/include/grub/powerpc/libgcc.h --- grub2-1.95+20071101/include/grub/powerpc/libgcc.h 2007-07-21 23:32:24.000000000 +0000 +++ grub2-1.95+20071101.new/include/grub/powerpc/libgcc.h 2007-12-26 08:42:49.000000000 +0000 @@ -26,19 +26,12 @@ void EXPORT_FUNC (__floatsidf) (void); void EXPORT_FUNC (__floatsisf) (void); void EXPORT_FUNC (__lshrdi3) (void); -void EXPORT_FUNC (__make_dp) (void); -void EXPORT_FUNC (__make_fp) (void); void EXPORT_FUNC (__muldf3) (void); void EXPORT_FUNC (__mulsf3) (void); -void EXPORT_FUNC (__pack_d) (void); -void EXPORT_FUNC (__pack_f) (void); void EXPORT_FUNC (__subdf3) (void); void EXPORT_FUNC (__subsf3) (void); -void EXPORT_FUNC (__thenan_df) (void); -void EXPORT_FUNC (__thenan_sf) (void); void EXPORT_FUNC (__trampoline_setup) (void); void EXPORT_FUNC (__truncdfsf2) (void); -void EXPORT_FUNC (__unpack_d) (void); -void EXPORT_FUNC (__unpack_f) (void); void EXPORT_FUNC (__floatdisf) (void); +void EXPORT_FUNC (__floatundisf) (void); void EXPORT_FUNC (__cmpdi2) (void); Is there any way we can preserve compatibility with gcc 3.x ? Perhaps obtain a list of symbols dynamicaly, but maybe this would bloat the kernel too much. -- Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call, if you are unable to speak? (as seen on /.) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]