diff -x CVS -ur ../grub2/kern/elf.c ./kern/elf.c --- ../grub2/kern/elf.c 2007-07-22 01:32:26.000000000 +0200 +++ ./kern/elf.c 2008-01-16 23:43:17.000000000 +0100 @@ -160,6 +160,8 @@ (unsigned long) phdr->p_paddr, (unsigned long) phdr->p_memsz, (unsigned long) phdr->p_filesz); + grub_printf ("grub_elf32_phdr_iterate: going to call hook=%p using hook_arg=%p as hook\n", hook, hook_arg); + if (hook (elf, phdr, hook_arg)) break; } @@ -230,6 +232,7 @@ return 0; load_addr = phdr->p_paddr; + grub_printf ("grub_elf32_load_segment: going to call load_hook=%p\n", load_hook); if (load_hook && load_hook (phdr, &load_addr)) return 1; @@ -271,6 +274,8 @@ return 0; } + grub_printf ("grub_elf32_load: going to call grub_elf32_phdr_iterate using grub_elf32_load_segment=%p as hook, and _load_hook=%p as hook's hook\n", grub_elf32_load_segment, _load_hook); + err = grub_elf32_phdr_iterate (_elf, grub_elf32_load_segment, _load_hook); if (base) diff -x CVS -ur ../grub2/loader/i386/pc/multiboot2.c ./loader/i386/pc/multiboot2.c --- ../grub2/loader/i386/pc/multiboot2.c 2007-07-25 02:44:02.000000000 +0200 +++ ./loader/i386/pc/multiboot2.c 2008-01-16 23:48:40.000000000 +0100 @@ -27,7 +27,12 @@ grub_err_t grub_mb2_arch_elf32_hook (Elf32_Phdr *phdr, UNUSED grub_addr_t *addr) { - Elf32_Addr paddr = phdr->p_paddr; + Elf32_Addr paddr; + + grub_printf ("success! we reached grub_mb2_arch_elf32_hook\n"); + while (1); + + paddr = phdr->p_paddr; if ((paddr < grub_os_area_addr) || (paddr + phdr->p_memsz > grub_os_area_addr + grub_os_area_size)) diff -x CVS -ur ../grub2/loader/multiboot2.c ./loader/multiboot2.c --- ../grub2/loader/multiboot2.c 2007-07-25 02:44:02.000000000 +0200 +++ ./loader/multiboot2.c 2008-01-16 23:42:17.000000000 +0100 @@ -279,6 +279,7 @@ if (grub_elf_is_elf32 (elf)) { entry = elf->ehdr.ehdr32.e_entry; + grub_printf ("grub_mb2_load_elf: going to call grub_elf32_load using grub_mb2_arch_elf32_hook=%p as hook\n", grub_mb2_arch_elf32_hook); err = grub_elf32_load (elf, grub_mb2_arch_elf32_hook, &kern_base, &kern_size); }