On Wed, 2008-01-30 at 08:38 -0800, walt wrote: > Robert Millan wrote: > ...
> > What happens if you define the missing symbols somewhere? Any part of > > the GRUB kernel will do (e.g. kern/main.c). Just add them as empty > > functions: > > > > void > > __sysctl (void) > > { > > } > > > > void > > mprotect (void) > > { > > } > > > > and check if that works. > Anyway, your suggestion helps, but not quite enough. The c code now > compiles and links okay into *.mod files, but now __enable_execute_stack > shows up in several und-*.lst files... I've been hacking the various flags for elf.mod just to get *any* module to link properly but no luck. Here is the actual text printed by gcc as it links elf.mod: gcc -m32 -nostdlib -lgcc -L/usr/lib -Wl,-r,-d,-lgcc,-L/usr/lib -o elf.mod pre-elf.o mod-elf.o You can tell I'm desperate because I'm putting -lgcc everywhere I can think of. Here is the symbol in libgcc.a: _enable_execute_stack.o: 00000000 T __enable_execute_stack And here is the symbol table from the resulting elf.mod: # nm elf.mod U __enable_execute_stack <======= WTF? 0000038a T grub_elf32_load 000003fe T grub_elf32_size Okay, I found one *more* place to put libgcc: gcc -m32 -nostdlib -lgcc -L/usr/lib -Wl,-r,-d,-lgcc,-L/usr/lib -o elf.mod pre-elf.o mod-elf.o /usr/lib/libgcc.a Here is the puzzling (to me) result: # nm elf.mod 00000784 T __enable_execute_stack U __sysctl 0000038a T grub_elf32_load 000003fe T grub_elf32_size _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel