Package: memtest86+
Version: 4.00-2.2
Severity: normal
Tags: patch
I uploaded this NMU to 10-day delayed queue. Here's the full patch.
memtest86+ (4.00-2.2) unstable; urgency=low
* Non-maintainer upload.
* Build an image with Multiboot support. (Closes: #250864)
* Update de.po, fr.po, ja.po, pt.po, ru.po and sv.po.
(Closes: #563019, #563288, #564291, #564430, #564470, #565169)
* Fix in copyright line in debian/copyright to make lintian happy.
-- Robert Millan <[email protected]> Sun, 17 Jan 2010 17:06:16 +0100
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.26-libre2-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=ca_AD.UTF-8, LC_CTYPE=ca_AD.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
memtest86+ depends on no packages.
memtest86+ recommends no packages.
Versions of packages memtest86+ suggests:
pn grub2 | grub <none> (no description available)
pn hwtools <none> (no description available)
pn kernel-patch-badram <none> (no description available)
pn memtest86 <none> (no description available)
pn memtester <none> (no description available)
pn mtools <none> (no description available)
diff -Nur memtest86+-4.00.old/debian/changelog memtest86+-4.00/debian/changelog
--- memtest86+-4.00.old/debian/changelog 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/changelog 2010-01-17 17:06:19.000000000 +0100
@@ -1,3 +1,13 @@
+memtest86+ (4.00-2.2) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Build an image with Multiboot support. (Closes: #250864)
+ * Update de.po, fr.po, ja.po, pt.po, ru.po and sv.po.
+ (Closes: #563019, #563288, #564291, #564430, #564470, #565169)
+ * Fix in copyright line in debian/copyright to make lintian happy.
+
+ -- Robert Millan <[email protected]> Sun, 17 Jan 2010 17:06:16 +0100
+
memtest86+ (4.00-2.1) unstable; urgency=low
* Non-maintainer upload.
diff -Nur memtest86+-4.00.old/debian/control memtest86+-4.00/debian/control
--- memtest86+-4.00.old/debian/control 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/control 2010-01-17 14:31:05.000000000 +0100
@@ -10,7 +10,7 @@
Package: memtest86+
Architecture: i386 amd64 kfreebsd-i386 kfreebsd-amd64 lpia hurd-i386
Depends: ${misc:Depends}
-Suggests: hwtools, memtester, kernel-patch-badram, memtest86, grub2 (>=1.96+20090523-1) | grub (>= 0.95+cvs20040624), mtools
+Suggests: hwtools, memtester, kernel-patch-badram, memtest86, grub2 (>= 1.96+20080831-1) | grub (>= 0.95+cvs20040624), mtools
Description: thorough real-mode memory tester
Memtest86+ scans your RAM for errors.
.
diff -Nur memtest86+-4.00.old/debian/copyright memtest86+-4.00/debian/copyright
--- memtest86+-4.00.old/debian/copyright 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/copyright 2010-01-17 17:05:51.000000000 +0100
@@ -2,8 +2,9 @@
It was downloaded from http://www.memtest.org/
-Upstream Author: Samuel Demeulemeester <[email protected]>, based on
-memtest86 by Chris Brady <[email protected]>, and various contributors.
+Copyright (C) 2004,2005,2007,2009 by Samuel Demeulemeester
+<[email protected]>, based on memtest86 by Chris Brady
+<[email protected]>, and various contributors.
License:
diff -Nur memtest86+-4.00.old/debian/grub memtest86+-4.00/debian/grub
--- memtest86+-4.00.old/debian/grub 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/grub 2010-01-17 14:37:10.000000000 +0100
@@ -1,33 +1,31 @@
#!/bin/sh
set -e
-if test -e /boot/memtest86+.bin ; then
+if test -e /boot/memtest86+_multiboot.bin ; then
if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
. /usr/lib/grub/grub-mkconfig_lib
- LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
. /usr/lib/grub/update-grub_lib
- LX=linux
else
# no grub file, so we notify and exit gracefully
echo "Cannot find grub config file, exiting." >&2
exit 0
fi
- MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
+ MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+_multiboot.bin" )
echo "Found memtest86+ image: $MEMTESTPATH" >&2
cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
cat << EOF
- $LX $MEMTESTPATH
+ multiboot $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
EOF
prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
cat << EOF
- $LX $MEMTESTPATH console=ttyS0,115200n8
+ multiboot $MEMTESTPATH console=ttyS0,115200n8
}
EOF
fi
diff -Nur memtest86+-4.00.old/debian/lintian-overrides memtest86+-4.00/debian/lintian-overrides
--- memtest86+-4.00.old/debian/lintian-overrides 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/lintian-overrides 2010-01-17 16:52:42.000000000 +0100
@@ -1,2 +1 @@
-# This file is intended to be statically-linked
-memtest86+: statically-linked-binary ./usr/lib/memtest86+/memtest86+.elf
+memtest86+: shared-lib-without-dependency-information ./boot/memtest86+_multiboot.bin
diff -Nur memtest86+-4.00.old/debian/po/de.po memtest86+-4.00/debian/po/de.po
--- memtest86+-4.00.old/debian/po/de.po 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/debian/po/de.po 2010-01-17 14:08:08.000000000 +0100
@@ -0,0 +1,37 @@
+# Translation of po-debconf template to German
+# This file is distributed under the same license as the memtest86+ package.
+#
+# Thomas Mueller <[email protected]>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: memtest86+ 4.00\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2009-12-02 22:23+0100\n"
+"PO-Revision-Date: 2010-01-01 19:47+0100\n"
+"Last-Translator: Thomas Mueller <[email protected]>\n"
+"Language-Team: German <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid "Run lilo automatically after upgrade (if found)?"
+msgstr ""
+"Soll lilo nach dem Upgrade automatisch ausgeführt werden (falls vorhanden)?"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid ""
+"If lilo is installed and its configuration file contains the memtest86/"
+"memtest86+ image, then it should be re-run in order to allow booting the new "
+"image."
+msgstr ""
+"Falls lilo installiert ist und dessen Konfigurationsdatei das "
+"memtest86/memtest86+-Image enthält, dann sollte es erneut ausgeführt werden, "
+"damit das Booten des neuen Images möglich ist."
+
diff -Nur memtest86+-4.00.old/debian/po/fr.po memtest86+-4.00/debian/po/fr.po
--- memtest86+-4.00.old/debian/po/fr.po 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/debian/po/fr.po 2010-01-17 14:08:42.000000000 +0100
@@ -0,0 +1,37 @@
+# Translation of memtest86 debconf templates to French
+# Copyright (C) 2010 Debian French l10n team <[email protected]>
+# This file is distributed under the same license as the memtest86 package.
+#
+# Translators:
+# Christian Perrier <[email protected]>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2009-12-02 22:23+0100\n"
+"PO-Revision-Date: 2010-01-02 18:44+0100\n"
+"Last-Translator: Christian Perrier <[email protected]>\n"
+"Language-Team: French <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid "Run lilo automatically after upgrade (if found)?"
+msgstr "Faut-il exécuter lilo automatiquement après la mise à jour ?"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid ""
+"If lilo is installed and its configuration file contains the memtest86/"
+"memtest86+ image, then it should be re-run in order to allow booting the new "
+"image."
+msgstr ""
+"Si LILO est installé et que son fichier de configuration fait référence à "
+"une image de lancement de memtest86 ou memtest86+, il doit être ré-exécuté "
+"afin de pouvoir utiliser la nouvelle image."
diff -Nur memtest86+-4.00.old/debian/po/ja.po memtest86+-4.00/debian/po/ja.po
--- memtest86+-4.00.old/debian/po/ja.po 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/debian/po/ja.po 2010-01-17 14:11:26.000000000 +0100
@@ -0,0 +1,34 @@
+# memtest86+ po-debconf translation (Japanese)
+# Copyright (C) 2009 Yann Dirson <[email protected]>
+# This file is distributed under the same license as the memtest86+ package.
+# Hideki Yamane (Debian-JP) <[email protected]>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: memtest86+ 4.00-2.1\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2009-12-02 22:23+0100\n"
+"PO-Revision-Date: 2009-12-27 13:52+0900\n"
+"Last-Translator: Hideki Yamane (Debian-JP) <[email protected]>\n"
+"Language-Team: Japanese <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid "Run lilo automatically after upgrade (if found)?"
+msgstr "(もしあれば) lilo をアップグレード後に自動的に実行しますか?"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid ""
+"If lilo is installed and its configuration file contains the memtest86/"
+"memtest86+ image, then it should be re-run in order to allow booting the new "
+"image."
+msgstr ""
+"lilo がインストールされていて、その設定ファイルが memtest86/memtest86+ のイ"
+"メージを指定している場合は、新しいイメージを起動できるようにするために lilo "
+"の再実行が必要です。"
diff -Nur memtest86+-4.00.old/debian/po/pt.po memtest86+-4.00/debian/po/pt.po
--- memtest86+-4.00.old/debian/po/pt.po 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/debian/po/pt.po 2010-01-17 14:07:52.000000000 +0100
@@ -0,0 +1,38 @@
+# Translation of memtest86+ debconf messages to Portuguese
+# Copyright (C) 2009 the memtest86+ copyright holder
+# This file is distributed under the same license as the memtest86+ package.
+#
+# Américo Monteiro <[email protected]>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: memtest86+ 4.00-2.1\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2009-12-02 22:23+0100\n"
+"PO-Revision-Date: 2009-12-28 20:18+0000\n"
+"Last-Translator: Américo Monteiro <[email protected]>\n"
+"Language-Team: Portuguese <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid "Run lilo automatically after upgrade (if found)?"
+msgstr "Correr o lilo automaticamente (se encontrado) após a actualização?"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid ""
+"If lilo is installed and its configuration file contains the memtest86/"
+"memtest86+ image, then it should be re-run in order to allow booting the new "
+"image."
+msgstr ""
+"Se o lilo estiver instalado e o seu ficheiro de configuração conter a imagem "
+"memtest86/memtest86+, então deve ser re-executado de modo a permitir o "
+"arranque pela nova imagem."
+
+
diff -Nur memtest86+-4.00.old/debian/po/ru.po memtest86+-4.00/debian/po/ru.po
--- memtest86+-4.00.old/debian/po/ru.po 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/debian/po/ru.po 2010-01-17 14:09:12.000000000 +0100
@@ -0,0 +1,37 @@
+# translation of memtest86+_4.00-2.1_ru.po to Russian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Yuri Kozlov <[email protected]>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: memtest86+ 4.00-2.1\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2009-12-02 22:23+0100\n"
+"PO-Revision-Date: 2010-01-13 19:22+0300\n"
+"Last-Translator: Yuri Kozlov <[email protected]>\n"
+"Language-Team: Russian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid "Run lilo automatically after upgrade (if found)?"
+msgstr "Запускать lilo автоматически после обновления (если установлен)?"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid ""
+"If lilo is installed and its configuration file contains the memtest86/"
+"memtest86+ image, then it should be re-run in order to allow booting the new "
+"image."
+msgstr ""
+"Если пакет lilo установлен и его файл настройки содержит образ "
+"memtest86/memtest86+, то его нужно перезапустить, чтобы "
+"стал загружаться новый образ."
+
diff -Nur memtest86+-4.00.old/debian/po/sv.po memtest86+-4.00/debian/po/sv.po
--- memtest86+-4.00.old/debian/po/sv.po 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/debian/po/sv.po 2010-01-17 14:09:00.000000000 +0100
@@ -0,0 +1,36 @@
+# Translation of memtest86+ debconf template to Swedish
+# Copyright (C) 2010 Martin Bagge <[email protected]>
+# This file is distributed under the same license as the memtest86+ package.
+#
+# Martin Bagge <[email protected]>, 2010
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: [email protected]\n"
+"POT-Creation-Date: 2009-12-02 22:23+0100\n"
+"PO-Revision-Date: 2010-01-09 19:01+0100\n"
+"Last-Translator: Martin Bagge <[email protected]>\n"
+"Language-Team: Swedish <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Swedish\n"
+"X-Poedit-Country: Sweden\n"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid "Run lilo automatically after upgrade (if found)?"
+msgstr "Ska lilo (om det finns) köras automatiskt efter uppgradering?"
+
+#. Type: boolean
+#. Description
+#: ../templates:1001
+msgid ""
+"If lilo is installed and its configuration file contains the memtest86/"
+"memtest86+ image, then it should be re-run in order to allow booting the new "
+"image."
+msgstr ""
+"Om lilo är installerat och dess inställningar innehållet avbildningen av "
+"memtest86/memtest86+ ska den köras för att systemet ska kunna startas på den "
+"nya avbildningen."
diff -Nur memtest86+-4.00.old/debian/README.Debian memtest86+-4.00/debian/README.Debian
--- memtest86+-4.00.old/debian/README.Debian 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/README.Debian 2010-01-17 14:31:05.000000000 +0100
@@ -1,12 +1,18 @@
memtest86+ for Debian
---------------------
-Binary image is /boot/memtest86+.bin
+Two binary images are provided:
-It is automatically registered against grub2. For other bootloaders
-you'll need to do some manual setup (see examples/grub-menu.lst for
-GRUB Legacy or examples/lilo.conf for LILO), or to make a boot-floppy,
-and reboot on this image.
+ - A legacy /boot/memtest86+.bin that uses Linux zImage boot
+ protocol.
+
+ - A Multiboot /boot/memtest86+_multiboot.bin image that follows the
+ Multiboot specification.
+
+memtest86+_multiboot.bin is automatically registered against grub2. For
+other bootloaders you'll need to do some manual setup (see
+examples/grub-menu.lst for GRUB Legacy or examples/lilo.conf for LILO),
+or to make a boot-floppy, and reboot on this image.
The make-memtest86+-boot-floppy utility will help you to create a
boot floppy or floppy image using GRUB Legacy.
diff -Nur memtest86+-4.00.old/debian/rules memtest86+-4.00/debian/rules
--- memtest86+-4.00.old/debian/rules 2010-01-15 17:49:49.000000000 +0100
+++ memtest86+-4.00/debian/rules 2010-01-17 16:55:18.000000000 +0100
@@ -23,6 +23,9 @@
[ ! -f Makefile ] || $(MAKE) clean
+ # make sure PO files are always up-to-date
+ debconf-updatepo
+
dh_clean
install: build
@@ -34,7 +37,7 @@
install -d debian/$(PACKAGE)/usr/bin
install -m755 debian/make-$(PACKAGE)-boot-floppy debian/$(PACKAGE)/usr/bin/
install -D -m644 memtest.bin debian/$(PACKAGE)/boot/$(PACKAGE).bin
- install -D -m644 memtest debian/$(PACKAGE)/usr/lib/$(PACKAGE)/$(PACKAGE).elf
+ install -D -m644 -s memtest_shared debian/$(PACKAGE)/boot/$(PACKAGE)_multiboot.bin
install -D -m755 debian/grub debian/$(PACKAGE)/etc/grub.d/20_$(PACKAGE)
dh_installman debian/make-$(PACKAGE)-boot-floppy.1
#install the lintian override
diff -Nur memtest86+-4.00.old/head.S memtest86+-4.00/head.S
--- memtest86+-4.00.old/head.S 2010-01-17 14:06:02.000000000 +0100
+++ memtest86+-4.00/head.S 2010-01-15 17:54:17.000000000 +0100
@@ -13,9 +13,11 @@
.text
#define __ASSEMBLY__
+#define ASM_FILE
#include "defs.h"
#include "config.h"
#include "test.h"
+#include "multiboot.h"
/*
* References to members of the boot_cpu_data structure.
@@ -38,6 +40,13 @@
cld
cli
+ /* Store MBI pointer */
+ xorl %ecx, %ecx
+ cmpl $MULTIBOOT_BOOTLOADER_MAGIC, %eax
+ jne 0f
+ movl %ebx, %ecx
+0:
+
/* Ensure I have a stack pointer */
testl %esp, %esp
jnz 0f
@@ -50,6 +59,20 @@
0: popl %ebx
addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx
+ /* Move MBI pointer to a safe place */
+ testl %ecx, %ecx
+ je 0f
+ movl %ecx, mbi...@gotoff(%ebx)
+0:
+
+ jmp 0f
+ /* Multiboot header */
+.align 4
+ .long MULTIBOOT_HEADER_MAGIC
+ .long 0
+ .long -MULTIBOOT_HEADER_MAGIC
+0:
+
/* Pick the appropriate stack address */
leal stack_...@gotoff(%ebx), %esp
@@ -956,6 +979,9 @@
movl $1, %eax
ret
+.globl mbiptr
+mbiptr:
+ .long 0
realptr:
.word real - RSTART
.word 0x0000
diff -Nur memtest86+-4.00.old/init.c memtest86+-4.00/init.c
--- memtest86+-4.00.old/init.c 2010-01-17 14:06:02.000000000 +0100
+++ memtest86+-4.00/init.c 2010-01-15 17:54:17.000000000 +0100
@@ -15,6 +15,7 @@
#include "pci.h"
#include "io.h"
#include "spd.h"
+#include "multiboot.h"
#define rdmsr(msr,val1,val2) \
__asm__ __volatile__("rdmsr" \
@@ -98,7 +99,10 @@
/* Determine the memory map */
if ((firmware == FIRMWARE_UNKNOWN) &&
(memsz_mode != SZ_MODE_PROBE)) {
- if (query_linuxbios()) {
+ if (query_multiboot()) {
+ firmware = FIRMWARE_MULTIBOOT;
+ }
+ else if (query_linuxbios()) {
firmware = FIRMWARE_LINUXBIOS;
}
else if (query_pcbios()) {
diff -Nur memtest86+-4.00.old/main.c memtest86+-4.00/main.c
--- memtest86+-4.00.old/main.c 2010-01-17 14:06:02.000000000 +0100
+++ memtest86+-4.00/main.c 2010-01-15 17:54:17.000000000 +0100
@@ -11,9 +11,12 @@
#include "test.h"
#include "defs.h"
#include "config.h"
+#include "multiboot.h"
#undef TEST_TIMES
#define DEFTESTS 9
+extern struct multiboot_info *mbiptr;
+
extern void bzero();
const struct tseq tseq[] = {
@@ -151,11 +154,15 @@
if (cmdline_parsed)
return;
- if (*OLD_CL_MAGIC_ADDR != OLD_CL_MAGIC)
- return;
+ if (mbiptr && (mbiptr->flags & MULTIBOOT_INFO_CMDLINE)) {
+ cmdline = (void *) mbiptr->cmdline;
+ } else {
+ if (*OLD_CL_MAGIC_ADDR != OLD_CL_MAGIC)
+ return;
- unsigned short offset = *OLD_CL_OFFSET_ADDR;
- cmdline = MK_PTR(INITSEG, offset);
+ unsigned short offset = *OLD_CL_OFFSET_ADDR;
+ cmdline = MK_PTR(INITSEG, offset);
+ }
/* skip leading spaces */
while (*cmdline == ' ')
diff -Nur memtest86+-4.00.old/Makefile memtest86+-4.00/Makefile
--- memtest86+-4.00.old/Makefile 2010-01-17 14:06:02.000000000 +0100
+++ memtest86+-4.00/Makefile 2010-01-15 17:59:50.000000000 +0100
@@ -13,9 +13,14 @@
CFLAGS= -Wall -march=i486 -m32 -O2 -fomit-frame-pointer -fno-builtin -ffreestanding -fPIC
+# This reverts a change introduced with recent binutils (post
+# http://sourceware.org/bugzilla/show_bug.cgi?id=10569). Needed to
+# ensure Multiboot header is within the limit offset.
+LD += -z max-page-size=0x1000
+
OBJS= head.o reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o \
config.o linuxbios.o memsize.o pci.o controller.o random.o spd.o \
- error.o dmi.o cpuid.o
+ error.o dmi.o cpuid.o multiboot.o
all: memtest.bin memtest
diff -Nur memtest86+-4.00.old/memsize.c memtest86+-4.00/memsize.c
--- memtest86+-4.00.old/memsize.c 2010-01-17 14:06:02.000000000 +0100
+++ memtest86+-4.00/memsize.c 2010-01-15 17:54:17.000000000 +0100
@@ -75,7 +75,7 @@
static void memsize_bios()
{
- if (firmware == FIRMWARE_PCBIOS) {
+ if (firmware == FIRMWARE_PCBIOS || firmware == FIRMWARE_MULTIBOOT) {
memsize_820();
}
else if (firmware == FIRMWARE_LINUXBIOS) {
diff -Nur memtest86+-4.00.old/multiboot.c memtest86+-4.00/multiboot.c
--- memtest86+-4.00.old/multiboot.c 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/multiboot.c 2010-01-15 17:54:17.000000000 +0100
@@ -0,0 +1,49 @@
+/* multiboot.c
+ *
+ * Copyright (C) 2008,2009 Robert Millan
+ *
+ * Loosely based on linuxbios.c, which is:
+ *
+ * Released under version 2 of the Gnu Public License.
+ * By Eric Biederman
+ */
+
+#include "multiboot.h"
+#include "test.h"
+
+extern struct multiboot_info *mbiptr;
+
+int query_multiboot(void)
+{
+ struct multiboot_mmap_entry *mem;
+ int i;
+
+ if (!mbiptr) {
+ return 0;
+ }
+ if (!mbiptr->mmap_addr) {
+ return 1;
+ }
+ if ((mbiptr->flags & MULTIBOOT_INFO_MEM_MAP) == 0) {
+ return 1;
+ }
+
+ mem = (struct multiboot_mmap_entry *) mbiptr->mmap_addr;
+ mem_info.e820_nr = 0;
+
+ for (i = 0; i < E820MAX; i++) {
+ if ((multiboot_uint32_t) mem >= (mbiptr->mmap_addr + mbiptr->mmap_length)) {
+ break;
+ }
+
+ mem_info.e820[mem_info.e820_nr].addr = mem->addr;
+ mem_info.e820[mem_info.e820_nr].size = mem->len;
+ /* Multiboot spec defines available / reserved types to match with E820. */
+ mem_info.e820[mem_info.e820_nr].type = mem->type;
+ mem_info.e820_nr++;
+
+ mem = (struct multiboot_mmap_entry *) ((multiboot_uint32_t) mem + mem->size + sizeof (mem->size));
+ }
+
+ return 1;
+}
diff -Nur memtest86+-4.00.old/multiboot.h memtest86+-4.00/multiboot.h
--- memtest86+-4.00.old/multiboot.h 1970-01-01 01:00:00.000000000 +0100
+++ memtest86+-4.00/multiboot.h 2010-01-15 21:09:11.000000000 +0100
@@ -0,0 +1,259 @@
+/* multiboot.h - Multiboot header file. */
+/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ANY
+ * DEVELOPER OR DISTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef MULTIBOOT_HEADER
+#define MULTIBOOT_HEADER 1
+
+/* How many bytes from the start of the file we search for the header. */
+#define MULTIBOOT_SEARCH 8192
+
+/* The magic field should contain this. */
+#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
+
+/* This should be in %eax. */
+#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002
+
+/* Alignment of multiboot modules. */
+#define MULTIBOOT_MOD_ALIGN 0x00001000
+
+/* Alignment of the multiboot info structure. */
+#define MULTIBOOT_INFO_ALIGN 0x00000004
+
+/* Flags set in the 'flags' member of the multiboot header. */
+
+/* Align all boot modules on i386 page (4KB) boundaries. */
+#define MULTIBOOT_PAGE_ALIGN 0x00000001
+
+/* Must pass memory information to OS. */
+#define MULTIBOOT_MEMORY_INFO 0x00000002
+
+/* Must pass video information to OS. */
+#define MULTIBOOT_VIDEO_MODE 0x00000004
+
+/* This flag indicates the use of the address fields in the header. */
+#define MULTIBOOT_AOUT_KLUDGE 0x00010000
+
+/* Flags to be set in the 'flags' member of the multiboot info structure. */
+
+/* is there basic lower/upper memory information? */
+#define MULTIBOOT_INFO_MEMORY 0x00000001
+/* is there a boot device set? */
+#define MULTIBOOT_INFO_BOOTDEV 0x00000002
+/* is the command-line defined? */
+#define MULTIBOOT_INFO_CMDLINE 0x00000004
+/* are there modules to do something with? */
+#define MULTIBOOT_INFO_MODS 0x00000008
+
+/* These next two are mutually exclusive */
+
+/* is there a symbol table loaded? */
+#define MULTIBOOT_INFO_AOUT_SYMS 0x00000010
+/* is there an ELF section header table? */
+#define MULTIBOOT_INFO_ELF_SHDR 0X00000020
+
+/* is there a full memory map? */
+#define MULTIBOOT_INFO_MEM_MAP 0x00000040
+
+/* Is there drive info? */
+#define MULTIBOOT_INFO_DRIVE_INFO 0x00000080
+
+/* Is there a config table? */
+#define MULTIBOOT_INFO_CONFIG_TABLE 0x00000100
+
+/* Is there a boot loader name? */
+#define MULTIBOOT_INFO_BOOT_LOADER_NAME 0x00000200
+
+/* Is there a APM table? */
+#define MULTIBOOT_INFO_APM_TABLE 0x00000400
+
+/* Is there video information? */
+#define MULTIBOOT_INFO_VBE_INFO 0x00000800
+#define MULTIBOOT_INFO_FRAMEBUFFER_INFO 0x00001000
+
+#ifndef ASM_FILE
+
+typedef unsigned char multiboot_uint8_t;
+typedef unsigned short multiboot_uint16_t;
+typedef unsigned int multiboot_uint32_t;
+typedef unsigned long long multiboot_uint64_t;
+
+struct multiboot_header
+{
+ /* Must be MULTIBOOT_MAGIC - see above. */
+ multiboot_uint32_t magic;
+
+ /* Feature flags. */
+ multiboot_uint32_t flags;
+
+ /* The above fields plus this one must equal 0 mod 2^32. */
+ multiboot_uint32_t checksum;
+
+ /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */
+ multiboot_uint32_t header_addr;
+ multiboot_uint32_t load_addr;
+ multiboot_uint32_t load_end_addr;
+ multiboot_uint32_t bss_end_addr;
+ multiboot_uint32_t entry_addr;
+
+ /* These are only valid if MULTIBOOT_VIDEO_MODE is set. */
+ multiboot_uint32_t mode_type;
+ multiboot_uint32_t width;
+ multiboot_uint32_t height;
+ multiboot_uint32_t depth;
+};
+
+/* The symbol table for a.out. */
+struct multiboot_aout_symbol_table
+{
+ multiboot_uint32_t tabsize;
+ multiboot_uint32_t strsize;
+ multiboot_uint32_t addr;
+ multiboot_uint32_t reserved;
+};
+typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t;
+
+/* The section header table for ELF. */
+struct multiboot_elf_section_header_table
+{
+ multiboot_uint32_t num;
+ multiboot_uint32_t size;
+ multiboot_uint32_t addr;
+ multiboot_uint32_t shndx;
+};
+typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t;
+
+struct multiboot_color
+{
+ multiboot_uint8_t red;
+ multiboot_uint8_t green;
+ multiboot_uint8_t blue;
+};
+
+struct multiboot_info
+{
+ /* Multiboot info version number */
+ multiboot_uint32_t flags;
+
+ /* Available memory from BIOS */
+ multiboot_uint32_t mem_lower;
+ multiboot_uint32_t mem_upper;
+
+ /* "root" partition */
+ multiboot_uint32_t boot_device;
+
+ /* Kernel command line */
+ multiboot_uint32_t cmdline;
+
+ /* Boot-Module list */
+ multiboot_uint32_t mods_count;
+ multiboot_uint32_t mods_addr;
+
+ union
+ {
+ multiboot_aout_symbol_table_t aout_sym;
+ multiboot_elf_section_header_table_t elf_sec;
+ } u;
+
+ /* Memory Mapping buffer */
+ multiboot_uint32_t mmap_length;
+ multiboot_uint32_t mmap_addr;
+
+ /* Drive Info buffer */
+ multiboot_uint32_t drives_length;
+ multiboot_uint32_t drives_addr;
+
+ /* ROM configuration table */
+ multiboot_uint32_t config_table;
+
+ /* Boot Loader Name */
+ multiboot_uint32_t boot_loader_name;
+
+ /* APM table */
+ multiboot_uint32_t apm_table;
+
+ /* Video */
+ multiboot_uint32_t vbe_control_info;
+ multiboot_uint32_t vbe_mode_info;
+ multiboot_uint16_t vbe_mode;
+ multiboot_uint16_t vbe_interface_seg;
+ multiboot_uint16_t vbe_interface_off;
+ multiboot_uint16_t vbe_interface_len;
+
+ multiboot_uint64_t framebuffer_addr;
+ multiboot_uint32_t framebuffer_pitch;
+ multiboot_uint32_t framebuffer_width;
+ multiboot_uint32_t framebuffer_height;
+ multiboot_uint8_t framebuffer_bpp;
+#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0
+#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1
+#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2
+ multiboot_uint8_t framebuffer_type;
+ union
+ {
+ /* Indexed color. */
+ struct
+ {
+ struct multiboot_color *framebuffer_palette_addr;
+ multiboot_uint16_t framebuffer_palette_num_colors;
+ };
+
+ /* Direct RGB color. */
+ struct
+ {
+ multiboot_uint8_t framebuffer_red_field_position;
+ multiboot_uint8_t framebuffer_red_mask_size;
+ multiboot_uint8_t framebuffer_green_field_position;
+ multiboot_uint8_t framebuffer_green_mask_size;
+ multiboot_uint8_t framebuffer_blue_field_position;
+ multiboot_uint8_t framebuffer_blue_mask_size;
+ };
+ };
+};
+typedef struct multiboot_info multiboot_info_t;
+
+struct multiboot_mmap_entry
+{
+ multiboot_uint32_t size;
+ multiboot_uint64_t addr;
+ multiboot_uint64_t len;
+#define MULTIBOOT_MEMORY_AVAILABLE 1
+#define MULTIBOOT_MEMORY_RESERVED 2
+ multiboot_uint32_t type;
+} __attribute__((packed));
+typedef struct multiboot_mmap_entry multiboot_memory_map_t;
+
+struct multiboot_mod_list
+{
+ /* the memory used goes from bytes 'mod_start' to 'mod_end-1' inclusive */
+ multiboot_uint32_t mod_start;
+ multiboot_uint32_t mod_end;
+
+ /* Module command line */
+ multiboot_uint32_t cmdline;
+
+ /* padding to take it to 16 bytes (must be zero) */
+ multiboot_uint32_t pad;
+};
+typedef struct multiboot_mod_list multiboot_module_t;
+
+#endif /* ! ASM_FILE */
+
+#endif /* ! MULTIBOOT_HEADER */
diff -Nur memtest86+-4.00.old/test.h memtest86+-4.00/test.h
--- memtest86+-4.00.old/test.h 2010-01-17 14:06:02.000000000 +0100
+++ memtest86+-4.00/test.h 2010-01-15 17:54:17.000000000 +0100
@@ -106,6 +106,7 @@
void *memmove(void *dest, const void *src, ulong n);
int query_linuxbios(void);
int query_pcbios(void);
+int query_multiboot(void);
int insertaddress(ulong);
void printpatn(void);
void printpatn(void);
@@ -335,6 +336,7 @@
#define FIRMWARE_UNKNOWN 0
#define FIRMWARE_PCBIOS 1
#define FIRMWARE_LINUXBIOS 2
+#define FIRMWARE_MULTIBOOT 3
extern struct vars * const v;
extern unsigned char _start[], _end[], startup_32[];