]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
merge mainline into newreloc
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 4 May 2010 15:35:44 +0000 (17:35 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 4 May 2010 15:35:44 +0000 (17:35 +0200)
1  2 
conf/i386.rmk
efiemu/main.c
kern/mm.c
term/serial.c

diff --cc conf/i386.rmk
index 44a5cb185561a28dda955e4ef12295e64446989c,02ce3981727e2152f69d7b664f930c0caae9a56b..bca07c8e51dce94a8e2ebf9d233abe37fa28b595
@@@ -105,130 -68,8 +105,136 @@@ play_mod_SOURCES = commands/i386/pc/pla
  play_mod_CFLAGS = $(COMMON_CFLAGS)
  play_mod_LDFLAGS = $(COMMON_LDFLAGS)
  
+ # For iorw.mod.
+ pkglib_MODULES += iorw.mod
+ iorw_mod_SOURCES = commands/iorw.c
+ iorw_mod_CFLAGS = $(COMMON_CFLAGS)
+ iorw_mod_LDFLAGS = $(COMMON_LDFLAGS)
++
 +pkglib_MODULES += xnu.mod
 +xnu_mod_SOURCES = loader/xnu_resume.c loader/i386/xnu.c \
 +       loader/macho32.c loader/macho64.c loader/macho.c loader/xnu.c
 +xnu_mod_CFLAGS = $(COMMON_CFLAGS)
 +xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
 +xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
 +
 +ifeq ($(enable_efiemu), yes)
 +
 +efiemu32.o: efiemu/runtime/efiemu.c $(TARGET_OBJ2ELF)
 +      -rm -f $@
 +ifeq ($(TARGET_APPLE_CC), 1)
 +      -rm -f $@.bin
 +      $(TARGET_CC) -c -m32 -DELF32 -DAPPLE_CC -o $@.bin -Wall -Werror $< -nostdlib -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
 +      $(OBJCONV) -felf32 -nu -nd $@.bin $@
 +      -rm -f $@.bin
 +else
 +      $(TARGET_CC) -c -m32 -DELF32 -o $@ -Wall -Werror $< -nostdlib -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
 +      if test ! -z $(TARGET_OBJ2ELF); then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
 +endif
 +
 +efiemu64_c.o: efiemu/runtime/efiemu.c
 +ifeq ($(TARGET_APPLE_CC), 1)
 +      $(TARGET_CC) -c -m64 -DAPPLE_CC=1 -DELF64 -o $@ -Wall -Werror $< -nostdlib -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
 +else
 +      $(TARGET_CC) -c -m64 -DELF64 -o $@ -Wall -Werror $< -nostdlib  -mcmodel=large -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
 +endif
 +
 +efiemu64_s.o: efiemu/runtime/efiemu.S
 +      -rm -f $@
 +ifeq ($(TARGET_APPLE_CC), 1)
 +      $(TARGET_CC) -c -m64 -DAPPLE_CC=1 -DELF64 -o $@ -Wall -Werror $< -nostdlib -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
 +else
 +      $(TARGET_CC) -c -m64 -DELF64 -o $@ -Wall -Werror $< -nostdlib  -mcmodel=large -mno-red-zone -O2 -I$(srcdir)/efiemu/runtime -I$(srcdir)/include -Iinclude
 +endif
 +
 +efiemu64.o: efiemu64_c.o efiemu64_s.o  $(TARGET_OBJ2ELF)
 +      -rm -f $@
 +ifeq ($(TARGET_APPLE_CC), 1)
 +      -rm -f $@.bin
 +      $(TARGET_CC) -m64 -o $@.bin -Wl,-r $^ -nostdlib
 +      $(OBJCONV) -felf64 -nu -nd $@.bin $@
 +      -rm -f $@.bin
 +else
 +      $(TARGET_CC) -m64 -o $@ -Wl,-r $^ -nostdlib
 +      if test ! -z $(TARGET_OBJ2ELF); then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
 +endif
 +
 +CLEANFILES += efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o
 +pkglib_DATA += efiemu32.o efiemu64.o
 +
 +endif
 +
 +linux.init.x86_64: $(srcdir)/tests/boot/linux.init-x86_64.S
 +      $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
 +
 +linux.init.i386: $(srcdir)/tests/boot/linux.init-i386.S
 +      $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
 +
 +kfreebsd.init.x86_64: $(srcdir)/tests/boot/kfreebsd.init-x86_64.S
 +      $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
 +
 +kfreebsd.init.i386: $(srcdir)/tests/boot/kfreebsd.init-i386.S
 +      $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
 +
 +knetbsd.init.i386: $(srcdir)/tests/boot/knetbsd.init-i386.S
 +      $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
 +
 +knetbsd.init.x86_64: $(srcdir)/tests/boot/knetbsd.init-x86_64.S
 +      $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
 +
 +linux-initramfs.%: linux.init.% Makefile
 +      TDIR=`mktemp -d`; cp $< $$TDIR/init; (cd $$TDIR; echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@; rm -rf $$TDIR
 +
 +%.gz: %.img
 +      gzip < $< > $@
 +
 +kfreebsd-mfsroot.%.img: kfreebsd.init.% Makefile
 +      TDIR=`mktemp -d`; mkdir $$TDIR/dev; mkdir $$TDIR/sbin; cp $< $$TDIR/sbin/init; makefs -t ffs -s 30m -f 1000 -o minfree=0,version=1 $@ $$TDIR; rm -rf $$TDIR
 +
 +knetbsd.image.%: knetbsd.init.%
 +      TDIR=`mktemp -d` && mkdir $$TDIR/dev && mkdir $$TDIR/sbin && cp $< $$TDIR/sbin/init && makefs -t ffs -s 64k -f 10 -o minfree=0,version=1 $@ $$TDIR && rm -rf $$TDIR
 +
 +knetbsd.miniroot-image.i386.img: knetbsd.image.i386 $(GRUB_PAYLOADS_DIR)/knetbsd.miniroot.i386
 +      $(OBJCOPY) --add-section=miniroot=$< $(GRUB_PAYLOADS_DIR)/knetbsd.miniroot.i386 $@
 +
 +knetbsd.miniroot-image.x86_64.img: knetbsd.image.x86_64 $(GRUB_PAYLOADS_DIR)/knetbsd.miniroot.x86_64
 +      $(OBJCOPY) --add-section=miniroot=$< $(GRUB_PAYLOADS_DIR)/knetbsd.miniroot.x86_64 $@
 +
 +CLEANFILES += linux.init.i386 kfreebsd.init.i386 linux.init.x86_64 linux-initramfs.i386 linux-initramfs.x86_64
 +
 +bootcheck-kfreebsd-i386: kfreebsd-mfsroot.i386.gz $(GRUB_PAYLOADS_DIR)/kfreebsd.i386 $(GRUB_PAYLOADS_DIR)/kfreebsd_env.i386 $(srcdir)/tests/boot/kfreebsd.cfg grub-shell
 +      timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --qemu-opts="$(GRUB_QEMU_OPTS)" --boot=$(BOOTTARGET) --qemu=$(QEMU32) --files=/mfsroot.gz=kfreebsd-mfsroot.i386.gz --files=/kfreebsd=$(GRUB_PAYLOADS_DIR)/kfreebsd.i386 --files=/kfreebsd_env=$(GRUB_PAYLOADS_DIR)/kfreebsd_env.i386 $(srcdir)/tests/boot/kfreebsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
 +
 +bootcheck-kfreebsd-x86_64: kfreebsd-mfsroot.x86_64.gz $(GRUB_PAYLOADS_DIR)/kfreebsd.x86_64 $(GRUB_PAYLOADS_DIR)/kfreebsd_env.x86_64 $(srcdir)/tests/boot/kfreebsd.cfg grub-shell
 +      timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --qemu-opts="$(GRUB_QEMU_OPTS)" --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/mfsroot.gz=kfreebsd-mfsroot.x86_64.gz --files=/kfreebsd=$(GRUB_PAYLOADS_DIR)/kfreebsd.x86_64 --files=/kfreebsd_env=$(GRUB_PAYLOADS_DIR)/kfreebsd_env.x86_64 $(srcdir)/tests/boot/kfreebsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
 +
 +bootcheck-knetbsd-i386: knetbsd.miniroot-image.i386.gz $(GRUB_PAYLOADS_DIR)/knetbsd.i386 $(srcdir)/tests/boot/knetbsd.cfg grub-shell
 +      timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --qemu-opts="$(GRUB_QEMU_OPTS)" --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/miniroot.gz=knetbsd.miniroot-image.i386.gz --files=/knetbsd=$(GRUB_PAYLOADS_DIR)/knetbsd.i386 $(srcdir)/tests/boot/knetbsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
 +
 +bootcheck-knetbsd-x86_64: knetbsd.miniroot-image.x86_64.gz $(GRUB_PAYLOADS_DIR)/knetbsd.x86_64 $(srcdir)/tests/boot/knetbsd.cfg grub-shell
 +      timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --qemu-opts="$(GRUB_QEMU_OPTS)" --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/miniroot.gz=knetbsd.miniroot-image.x86_64.gz --files=/knetbsd=$(GRUB_PAYLOADS_DIR)/knetbsd.x86_64 $(srcdir)/tests/boot/knetbsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
 +
 +bootcheck-linux-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg grub-shell
 +      timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --qemu-opts="$(GRUB_QEMU_OPTS)" --boot=$(BOOTTARGET) --qemu=$(QEMU32) --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
 +
 +bootcheck-linux-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg grub-shell
 +      timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --qemu-opts="$(GRUB_QEMU_OPTS)" --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
 +
 +BOOTCHECKS += bootcheck-linux-i386 bootcheck-linux-x86_64 
 +
 +ifneq ($(platform), coreboot)
 +# Crashes because memory at 0-0x1000 is occupied
 +BOOTCHECKS += bootcheck-kfreebsd-i386 bootcheck-knetbsd-x86_64
 +endif
 +
 +ifeq ($(platform), pc)
 +# Requires ACPI
 +BOOTCHECKS += bootcheck-kfreebsd-x86_64
 +# Crashes early on non-BIOS
 +BOOTCHECKS += bootcheck-knetbsd-i386
 +endif
 +
 +.PHONY: bootcheck-linux-i386 bootcheck-linux-x86_64 \
 +      bootcheck-kfreebsd-i386 bootcheck-kfreebsd-x86_64 \
 +      bootcheck-knetbsd-i386 bootcheck-knetbsd-x86_64
 +
diff --cc efiemu/main.c
index 3f5fb9435e9b59a8a9fb4bacc315f3f18ba8435b,b197a8b2c6dae97361b9a7ab5a730793000e845a..ee78afe7dbe6c005f3b5314a0615b143d57f2300
@@@ -29,7 -29,9 +29,8 @@@
  #include <grub/dl.h>
  #include <grub/misc.h>
  #include <grub/efiemu/efiemu.h>
 -#include <grub/machine/efiemu.h>
  #include <grub/command.h>
+ #include <grub/i18n.h>
  
  /* System table. Two version depending on mode */
  grub_efi_system_table32_t *grub_efiemu_system_table32 = 0;
diff --cc kern/mm.c
index 6329295d9dfdf8c8342b68ca679a09b1fb14911b,47324a662172a8d8f68b3c3f981390798e64ed27..fd4fde81ccb5efac203adebd5acfb00902bf6d2e
+++ b/kern/mm.c
@@@ -121,7 -152,11 +117,11 @@@ grub_mm_init_region (void *addr, grub_s
    r = (grub_mm_region_t) ALIGN_UP ((grub_addr_t) addr, GRUB_MM_ALIGN);
    size -= (char *) r - (char *) addr + sizeof (*r);
  
 -  h = (grub_mm_header_t) ((char *) r + GRUB_MM_ALIGN);
+   /* If this region is too small, ignore it.  */
+   if (size < GRUB_MM_ALIGN)
+     return;
 +  h = (grub_mm_header_t) (r + 1);
    h->next = h;
    h->magic = GRUB_MM_FREE_MAGIC;
    h->size = (size >> GRUB_MM_ALIGN_LOG2);
@@@ -236,15 -284,16 +250,16 @@@ grub_real_malloc (grub_mm_header_t *fir
              r = p + extra + n;
              r->magic = GRUB_MM_FREE_MAGIC;
              r->size = p->size - extra - n;
 -            r->next = p->next;
 +            r->next = p;
  
              p->size = extra;
 -            p->next = r;
 +            q->next = r;
              p += extra;
-             p->size = n;
-             p->magic = GRUB_MM_ALLOC_MAGIC;
            }
  
+         p->magic = GRUB_MM_ALLOC_MAGIC;
+         p->size = n;
          /* Mark find as a start marker for next allocation to fasten it.
             This will have side effect of fragmenting memory as small
             pieces before this will be un-used.  */
diff --cc term/serial.c
index 5b1ce7032d02088b0b33d7ca1c77ef637b958453,2347bb3ee676929e0e33bbf320034ed824d13fbe..3f930d2cb6bcad5e071b773ef52f2ee57912b9a9
@@@ -616,11 -616,11 +616,11 @@@ GRUB_MOD_INIT(serial
  {
    cmd = grub_register_extcmd ("serial", grub_cmd_serial,
                              GRUB_COMMAND_FLAG_BOTH,
-                             "serial [OPTIONS...]",
-                             "Configure serial port.", options);
+                             N_("[OPTIONS...]"),
+                             N_("Configure serial port."), options);
  
    /* Set default settings.  */
 -  serial_settings.port      = serial_hw_get_port (0);
 +  serial_settings.port      = grub_serial_hw_get_port (0);
  #ifdef GRUB_MACHINE_MIPS_YEELOONG
    serial_settings.divisor   = serial_get_divisor (115200);
  #else