File grub-0.97-use-gnuefi.patch of Package grub

commit 94c31b2f558bb45ee80f374ceae487e6d737fcb1
Author: Peter Jones <pjones@redhat.com>
Date:   Tue May 6 12:55:40 2008 -0400

    Fix up makesfiles/configure to use gnu-efi versions of setjmp and _relocate.
    Include setjmp/longjmp wrapper until I get a chance to clean up the headers.

diff -urpN grub-0.97/configure.in.gnuefi grub-0.97/configure.in
--- grub-0.97/configure.in.gnuefi	2009-08-20 09:52:01.000000000 -0400
+++ grub-0.97/configure.in	2009-08-20 09:52:45.000000000 -0400
@@ -63,7 +63,7 @@ if test "x$platform" = xefi; then
   AC_SUBST(EFI_ARCH)
 fi
 
-gnuefi_path=/usr/lib/gnuefi
+gnuefi_path=${libdir}/gnuefi
 gnuefi_crt0=${gnuefi_path}/crt0-efi-${EFI_ARCH}.o
 if ! test -f $gnuefi_crt0 ; then
   gnuefi_crt0=crt0-efi.o
@@ -76,6 +76,8 @@ if ! test -f $gnuefi_lds ; then
 fi
 GNUEFI_LDS=${gnuefi_lds}
 AC_SUBST(GNUEFI_LDS)
+LIBGNUEFI=${libdir}/libgnuefi.a
+AC_SUBST(LIBGNUEFI)
 
 AC_SUBST(platform)
 AM_CONDITIONAL(PLATFORM_EFI, test "x$platform" = xefi)
diff -urpN grub-0.97/efi/eficore.c.gnuefi grub-0.97/efi/eficore.c
--- grub-0.97/efi/eficore.c.gnuefi	2009-08-20 09:54:04.000000000 -0400
+++ grub-0.97/efi/eficore.c	2009-08-20 09:54:57.000000000 -0400
@@ -50,6 +50,19 @@ grub_efi_locate_handle_buffer (grub_efi_
 		search_type, protocol, search_key, no_handles, buffer);
 }
 
+/* temporary, until we're using gnu-efi's include files --pjones */
+extern int setjmp(grub_jmp_buf env);
+int grub_setjmp(grub_jmp_buf env)
+{
+	return setjmp(env);
+}
+
+extern void longjmp(grub_jmp_buf env, int val);
+void grub_longjmp(grub_jmp_buf env, int val)
+{
+	longjmp(env, val);
+}
+
 void *
 grub_efi_locate_protocol (grub_efi_guid_t *protocol, void *registration)
 {
diff -urpN grub-0.97/efi/Makefile.am.gnuefi grub-0.97/efi/Makefile.am
--- grub-0.97/efi/Makefile.am.gnuefi	2009-08-20 09:51:41.000000000 -0400
+++ grub-0.97/efi/Makefile.am	2009-08-20 09:53:57.000000000 -0400
@@ -32,8 +32,9 @@ GRUBEFI_FORMAT = efi-app-$(EFI_ARCH)
 GRUBSO_LD_SCRIPT = @GNUEFI_LDS@
 GRUBSO_LD_FLAGS = -T $(GRUBSO_LD_SCRIPT) -nostdlib -shared -Bsymbolic
 
-GRUBSO_OBJS = reloc.o efimain.o @GNUEFI_CRT0@
-GRUBSO_LIBS = $(top_srcdir)/stage2/libstage2.a libgrubefi.a @LIBGCC@
+GRUBSO_OBJS = efimain.o
+GRUBSO_LIBS = @GNUEFI_CRT0@ $(top_srcdir)/stage2/libstage2.a \
+		libgrubefi.a @LIBGCC@
 
 if NETBOOT_SUPPORT
 GRUBSO_LIBS += $(top_srcdir)/netboot/libdrivers.a
@@ -45,7 +46,7 @@ grub.efi: grub.so
 	$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
                    -j .rela -j .reloc --target=$(GRUBEFI_FORMAT) $^ $@
 
-grub.so: $(GRUBSO_OBJS) $(GRUBSO_LIBS)
+grub.so: $(GRUBSO_OBJS) $(GRUBSO_LIBS) @LIBGNUEFI@
 	$(LD) -o $@ $(GRUBSO_LD_FLAGS) $^
 	echo '-------------- unresolved symbols ---------------------'
 	! nm $@ | grep -iw u
@@ -57,9 +58,6 @@ crt0-efi.o: $(EFI_ARCH)/crt0-efi.S
 efimain.o: efimain.c
 	$(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^
 
-reloc.o: $(EFI_ARCH)/reloc.c
-	$(CC) -o $@ -c $(RELOC_FLAGS) $^
-
 clean-local:
 	-rm -rf grub.so grub.efi
 
@@ -70,7 +68,7 @@ RELOC_FLAGS = $(STAGE2_CFLAGS) -I$(top_s
 
 noinst_LIBRARIES = libgrubefi.a
 libgrubefi_a_SOURCES = $(EFI_ARCH)/callwrap.c eficore.c efimm.c efimisc.c \
-	$(EFI_ARCH)/setjmp.S eficon.c efidisk.c graphics.c efigraph.c efiuga.c \
+	eficon.c efidisk.c graphics.c efigraph.c efiuga.c \
 	font_8x16.c efiserial.c $(EFI_ARCH)/loader/linux.c efichainloader.c \
 	xpm.c pxe.c efitftp.c
 libgrubefi_a_CFLAGS = $(RELOC_FLAGS) -nostdinc
openSUSE Build Service is sponsored by