tests/migration-test.c | 48 +---------------- tests/migration/rebuild-x86-bootblock.sh | 37 +++++++++++++ tests/migration/x86-a-b-bootblock.h | 51 ++++++++++++++++++ tests/migration/x86-a-b-bootblock.s | 92 ++++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+), 46 deletions(-) create mode 100755 tests/migration/rebuild-x86-bootblock.sh create mode 100644 tests/migration/x86-a-b-bootblock.h create mode 100644 tests/migration/x86-a-b-bootblock.s
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
The boot block used in the migration test is currently only
shipped as a hex (with the source in the git commit message),
change this to actually include the source.
A script is added to rebuild the header but the expectation is that
the generated hex is shipped as well as the .s, so that
there's no requirement to have just the right assembler etc.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
tests/migration-test.c | 48 +----------------
tests/migration/rebuild-x86-bootblock.sh | 37 +++++++++++++
tests/migration/x86-a-b-bootblock.h | 51 ++++++++++++++++++
tests/migration/x86-a-b-bootblock.s | 92 ++++++++++++++++++++++++++++++++
4 files changed, 182 insertions(+), 46 deletions(-)
create mode 100755 tests/migration/rebuild-x86-bootblock.sh
create mode 100644 tests/migration/x86-a-b-bootblock.h
create mode 100644 tests/migration/x86-a-b-bootblock.s
diff --git a/tests/migration-test.c b/tests/migration-test.c
index 799e24ebc6..b1a11502f8 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -79,57 +79,13 @@ static const char *tmpfs;
/* A simple PC boot sector that modifies memory (1-100MB) quickly
* outputing a 'B' every so often if it's still running.
*/
-unsigned char bootsect[] = {
- 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00,
- 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02,
- 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41,
- 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10,
- 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40,
- 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66,
- 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00,
- 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa
-};
+#include "tests/migration/x86-a-b-bootblock.h"
static void init_bootfile_x86(const char *bootpath)
{
FILE *bootfile = fopen(bootpath, "wb");
- g_assert_cmpint(fwrite(bootsect, 512, 1, bootfile), ==, 1);
+ g_assert_cmpint(fwrite(x86_bootsect, 512, 1, bootfile), ==, 1);
fclose(bootfile);
}
diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh
new file mode 100755
index 0000000000..c40f025e1a
--- /dev/null
+++ b/tests/migration/rebuild-x86-bootblock.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# Author: dgilbert@redhat.com
+
+ASMFILE=tests/migration/x86-a-b-bootblock.s
+HEADER=tests/migration/x86-a-b-bootblock.h
+
+if [ ! -e "$ASMFILE" ]
+then
+ echo "Couldn't find $ASMFILE" >&2
+ exit 1
+fi
+
+ASM_WORK_DIR=/tmp/X86BB$$
+mkdir $ASM_WORK_DIR &&
+as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o &&
+objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot &&
+dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \
+ bs=256 count=2 skip=124 &&
+xxd -i $ASM_WORK_DIR/bb.bootsect |
+sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \
+ $ASM_WORK_DIR/bb.hex &&
+cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER"
+/* This file is automatically generated from
+ * tests/migration/x86-a-b-bootblock.s, edit that and then run
+ * tests/migration/rebuild-x86-bootblock.sh to update,
+ * and then remember to send both in your patch submission.
+ */
+HERE
+
+rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot
+rm $ASM_WORK_DIR/bb.o
+rmdir $ASM_WORK_DIR
+
diff --git a/tests/migration/x86-a-b-bootblock.h b/tests/migration/x86-a-b-bootblock.h
new file mode 100644
index 0000000000..78a151fe2a
--- /dev/null
+++ b/tests/migration/x86-a-b-bootblock.h
@@ -0,0 +1,51 @@
+/* This file is automatically generated from
+ * tests/migration/x86-a-b-bootblock.s, edit that and then run
+ * tests/migration/rebuild-x86-bootblock.sh to update,
+ * and then remember to send both in your patch submission.
+ */
+unsigned char x86_bootsect[] = {
+ 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00,
+ 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02,
+ 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41,
+ 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10,
+ 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40,
+ 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66,
+ 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa
+};
+
diff --git a/tests/migration/x86-a-b-bootblock.s b/tests/migration/x86-a-b-bootblock.s
new file mode 100644
index 0000000000..b1642641a7
--- /dev/null
+++ b/tests/migration/x86-a-b-bootblock.s
@@ -0,0 +1,92 @@
+# x86 bootblock used in migration test
+# repeatedly increments the first byte of each page in a 100MB
+# range.
+# Outputs an initial 'A' on serial followed by repeated 'B's
+#
+# run tests/migration/rebuild-x86-bootblock.sh
+# to regenerate the hex, and remember to include both the .h and .s
+# in any patches.
+#
+# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+# Author: dgilbert@redhat.com
+
+
+.code16
+.org 0x7c00
+ .file "fill.s"
+ .text
+ .globl start
+ .type start, @function
+start: # at 0x7c00 ?
+ cli
+ lgdt gdtdesc
+ mov $1,%eax
+ mov %eax,%cr0 # Protected mode enable
+ data32 ljmp $8,$0x7c20
+
+.org 0x7c20
+.code32
+ # A20 enable - not sure I actually need this
+ inb $0x92,%al
+ or $2,%al
+ outb %al, $0x92
+
+ # set up DS for the whole of RAM (needed on KVM)
+ mov $16,%eax
+ mov %eax,%ds
+
+ mov $65,%ax
+ mov $0x3f8,%dx
+ outb %al,%dx
+
+ # bl keeps a counter so we limit the output speed
+ mov $0, %bl
+mainloop:
+ # Start from 1MB
+ mov $(1024*1024),%eax
+innerloop:
+ incb (%eax)
+ add $4096,%eax
+ cmp $(100*1024*1024),%eax
+ jl innerloop
+
+ inc %bl
+ jnz mainloop
+
+ mov $66,%ax
+ mov $0x3f8,%dx
+ outb %al,%dx
+
+ jmp mainloop
+
+ # GDT magic from old (GPLv2) Grub startup.S
+ .p2align 2 /* force 4-byte alignment */
+gdt:
+ .word 0, 0
+ .byte 0, 0, 0, 0
+
+ /* -- code segment --
+ * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present
+ * type = 32bit code execute/read, DPL = 0
+ */
+ .word 0xFFFF, 0
+ .byte 0, 0x9A, 0xCF, 0
+
+ /* -- data segment --
+ * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present
+ * type = 32 bit data read/write, DPL = 0
+ */
+ .word 0xFFFF, 0
+ .byte 0, 0x92, 0xCF, 0
+
+gdtdesc:
+ .word 0x27 /* limit */
+ .long gdt /* addr */
+
+/* I'm a bootable disk */
+.org 0x7dfe
+ .byte 0x55
+ .byte 0xAA
--
2.14.3
On 02/05/2018 12:18 PM, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > The boot block used in the migration test is currently only > shipped as a hex (with the source in the git commit message), > change this to actually include the source. > > A script is added to rebuild the header but the expectation is that > the generated hex is shipped as well as the .s, so that > there's no requirement to have just the right assembler etc. > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > tests/migration-test.c | 48 +---------------- > tests/migration/rebuild-x86-bootblock.sh | 37 +++++++++++++ > tests/migration/x86-a-b-bootblock.h | 51 ++++++++++++++++++ > tests/migration/x86-a-b-bootblock.s | 92 ++++++++++++++++++++++++++++++++ > 4 files changed, 182 insertions(+), 46 deletions(-) > create mode 100755 tests/migration/rebuild-x86-bootblock.sh > create mode 100644 tests/migration/x86-a-b-bootblock.h > create mode 100644 tests/migration/x86-a-b-bootblock.s > > diff --git a/tests/migration-test.c b/tests/migration-test.c > index 799e24ebc6..b1a11502f8 100644 > --- a/tests/migration-test.c > +++ b/tests/migration-test.c > @@ -79,57 +79,13 @@ static const char *tmpfs; > /* A simple PC boot sector that modifies memory (1-100MB) quickly > * outputing a 'B' every so often if it's still running. > */ > -unsigned char bootsect[] = { > - 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, > - 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02, > - 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41, > - 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10, > - 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, > - 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66, > - 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, > - 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa > -}; > +#include "tests/migration/x86-a-b-bootblock.h" > > static void init_bootfile_x86(const char *bootpath) > { > FILE *bootfile = fopen(bootpath, "wb"); > > - g_assert_cmpint(fwrite(bootsect, 512, 1, bootfile), ==, 1); > + g_assert_cmpint(fwrite(x86_bootsect, 512, 1, bootfile), ==, 1); > fclose(bootfile); > } > > diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh > new file mode 100755 > index 0000000000..c40f025e1a > --- /dev/null > +++ b/tests/migration/rebuild-x86-bootblock.sh > @@ -0,0 +1,37 @@ > +#!/bin/sh > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# Author: dgilbert@redhat.com > + > +ASMFILE=tests/migration/x86-a-b-bootblock.s > +HEADER=tests/migration/x86-a-b-bootblock.h > + > +if [ ! -e "$ASMFILE" ] > +then > + echo "Couldn't find $ASMFILE" >&2 > + exit 1 > +fi > + > +ASM_WORK_DIR=/tmp/X86BB$$ > +mkdir $ASM_WORK_DIR && > +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && > +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && > +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ > + bs=256 count=2 skip=124 && > +xxd -i $ASM_WORK_DIR/bb.bootsect | > +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ > + $ASM_WORK_DIR/bb.hex && > +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" > +/* This file is automatically generated from > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > + * tests/migration/rebuild-x86-bootblock.sh to update, > + * and then remember to send both in your patch submission. > + */ > +HERE > + > +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot > +rm $ASM_WORK_DIR/bb.o > +rmdir $ASM_WORK_DIR > + > diff --git a/tests/migration/x86-a-b-bootblock.h b/tests/migration/x86-a-b-bootblock.h > new file mode 100644 > index 0000000000..78a151fe2a > --- /dev/null > +++ b/tests/migration/x86-a-b-bootblock.h > @@ -0,0 +1,51 @@ > +/* This file is automatically generated from > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > + * tests/migration/rebuild-x86-bootblock.sh to update, > + * and then remember to send both in your patch submission. > + */ > +unsigned char x86_bootsect[] = { > + 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, > + 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02, > + 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41, > + 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10, > + 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, > + 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66, > + 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, > + 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa > +}; > + > diff --git a/tests/migration/x86-a-b-bootblock.s b/tests/migration/x86-a-b-bootblock.s > new file mode 100644 > index 0000000000..b1642641a7 > --- /dev/null > +++ b/tests/migration/x86-a-b-bootblock.s > @@ -0,0 +1,92 @@ > +# x86 bootblock used in migration test > +# repeatedly increments the first byte of each page in a 100MB > +# range. > +# Outputs an initial 'A' on serial followed by repeated 'B's > +# > +# run tests/migration/rebuild-x86-bootblock.sh > +# to regenerate the hex, and remember to include both the .h and .s > +# in any patches. > +# > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# Author: dgilbert@redhat.com > + > + > +.code16 > +.org 0x7c00 > + .file "fill.s" > + .text > + .globl start > + .type start, @function > +start: # at 0x7c00 ? > + cli > + lgdt gdtdesc > + mov $1,%eax > + mov %eax,%cr0 # Protected mode enable > + data32 ljmp $8,$0x7c20 > + > +.org 0x7c20 > +.code32 > + # A20 enable - not sure I actually need this > + inb $0x92,%al > + or $2,%al > + outb %al, $0x92 > + > + # set up DS for the whole of RAM (needed on KVM) > + mov $16,%eax > + mov %eax,%ds > + > + mov $65,%ax > + mov $0x3f8,%dx > + outb %al,%dx > + > + # bl keeps a counter so we limit the output speed > + mov $0, %bl > +mainloop: > + # Start from 1MB > + mov $(1024*1024),%eax > +innerloop: > + incb (%eax) > + add $4096,%eax > + cmp $(100*1024*1024),%eax > + jl innerloop > + > + inc %bl > + jnz mainloop > + > + mov $66,%ax > + mov $0x3f8,%dx > + outb %al,%dx > + > + jmp mainloop > + > + # GDT magic from old (GPLv2) Grub startup.S > + .p2align 2 /* force 4-byte alignment */ > +gdt: > + .word 0, 0 > + .byte 0, 0, 0, 0 > + > + /* -- code segment -- > + * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present > + * type = 32bit code execute/read, DPL = 0 > + */ > + .word 0xFFFF, 0 > + .byte 0, 0x9A, 0xCF, 0 > + > + /* -- data segment -- > + * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present > + * type = 32 bit data read/write, DPL = 0 > + */ > + .word 0xFFFF, 0 > + .byte 0, 0x92, 0xCF, 0 > + > +gdtdesc: > + .word 0x27 /* limit */ > + .long gdt /* addr */ > + > +/* I'm a bootable disk */ > +.org 0x7dfe > + .byte 0x55 > + .byte 0xAA > I tested this patch and it worked on my x86 machine. Also using the same approach, I just submitted a new version of migration-test for aarch64. So, Reviewed-by: Wei Huang <wei@redhat.com> Tested-by: Wei Huang <wei@redhat.com>
On Mon, Feb 05, 2018 at 06:18:46PM +0000, Dr. David Alan Gilbert (git) wrote: > diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh > new file mode 100755 > index 0000000000..c40f025e1a > --- /dev/null > +++ b/tests/migration/rebuild-x86-bootblock.sh > @@ -0,0 +1,37 @@ > +#!/bin/sh > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# Author: dgilbert@redhat.com > + > +ASMFILE=tests/migration/x86-a-b-bootblock.s > +HEADER=tests/migration/x86-a-b-bootblock.h > + > +if [ ! -e "$ASMFILE" ] > +then > + echo "Couldn't find $ASMFILE" >&2 > + exit 1 > +fi > + > +ASM_WORK_DIR=/tmp/X86BB$$ mktemp? > +mkdir $ASM_WORK_DIR && > +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && > +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && > +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ > + bs=256 count=2 skip=124 && > +xxd -i $ASM_WORK_DIR/bb.bootsect | Is xxd now considered a common enough tool for portable scripts? I've always liked xxd for manual use, but scripted with 'od'. > +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ > + $ASM_WORK_DIR/bb.hex && > +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" > +/* This file is automatically generated from > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > + * tests/migration/rebuild-x86-bootblock.sh to update, > + * and then remember to send both in your patch submission. > + */ > +HERE > + > +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot > +rm $ASM_WORK_DIR/bb.o > +rmdir $ASM_WORK_DIR > + Thanks, drew
* Andrew Jones (drjones@redhat.com) wrote: > On Mon, Feb 05, 2018 at 06:18:46PM +0000, Dr. David Alan Gilbert (git) wrote: > > diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh > > new file mode 100755 > > index 0000000000..c40f025e1a > > --- /dev/null > > +++ b/tests/migration/rebuild-x86-bootblock.sh > > @@ -0,0 +1,37 @@ > > +#!/bin/sh > > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > > +# See the COPYING file in the top-level directory. > > +# > > +# Author: dgilbert@redhat.com > > + > > +ASMFILE=tests/migration/x86-a-b-bootblock.s > > +HEADER=tests/migration/x86-a-b-bootblock.h > > + > > +if [ ! -e "$ASMFILE" ] > > +then > > + echo "Couldn't find $ASMFILE" >&2 > > + exit 1 > > +fi > > + > > +ASM_WORK_DIR=/tmp/X86BB$$ > > mktemp? Yes, that's probably fair. > > +mkdir $ASM_WORK_DIR && > > +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && > > +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && > > +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ > > + bs=256 count=2 skip=124 && > > +xxd -i $ASM_WORK_DIR/bb.bootsect | > > Is xxd now considered a common enough tool for portable scripts? I've > always liked xxd for manual use, but scripted with 'od'. This script isn't part of a normal build or make check or anything, so jumping through hoops to make it portable for the mythical other person who might ever run it seems OTT, especially since xxd is very common, and I'm not sure how much I'd bet on the portability of od's output format either. Dave > > +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ > > + $ASM_WORK_DIR/bb.hex && > > +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" > > +/* This file is automatically generated from > > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > > + * tests/migration/rebuild-x86-bootblock.sh to update, > > + * and then remember to send both in your patch submission. > > + */ > > +HERE > > + > > +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot > > +rm $ASM_WORK_DIR/bb.o > > +rmdir $ASM_WORK_DIR > > + > > Thanks, > drew -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On 02/12/2018 09:07 AM, Dr. David Alan Gilbert wrote: > * Andrew Jones (drjones@redhat.com) wrote: >> On Mon, Feb 05, 2018 at 06:18:46PM +0000, Dr. David Alan Gilbert (git) wrote: >>> diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh >>> new file mode 100755 >>> index 0000000000..c40f025e1a >>> --- /dev/null >>> +++ b/tests/migration/rebuild-x86-bootblock.sh >>> @@ -0,0 +1,37 @@ >>> +#!/bin/sh >>> +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates >>> +# This work is licensed under the terms of the GNU GPL, version 2 or later. >>> +# See the COPYING file in the top-level directory. >>> +# >>> +# Author: dgilbert@redhat.com >>> + >>> +ASMFILE=tests/migration/x86-a-b-bootblock.s >>> +HEADER=tests/migration/x86-a-b-bootblock.h >>> + >>> +if [ ! -e "$ASMFILE" ] >>> +then >>> + echo "Couldn't find $ASMFILE" >&2 >>> + exit 1 >>> +fi >>> + >>> +ASM_WORK_DIR=/tmp/X86BB$$ >> >> mktemp? > > Yes, that's probably fair. I echo this. So we will use something like: -ASM_WORK_DIR=/tmp/AARCH64BB$$ +ASM_WORK_DIR="$(mktemp -d /tmp/AARCH64XXXXXX)" -mkdir $ASM_WORK_DIR && > >>> +mkdir $ASM_WORK_DIR && >>> +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && >>> +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && >>> +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ >>> + bs=256 count=2 skip=124 && >>> +xxd -i $ASM_WORK_DIR/bb.bootsect | >> >> Is xxd now considered a common enough tool for portable scripts? I've >> always liked xxd for manual use, but scripted with 'od'. > > This script isn't part of a normal build or make check or anything, so > jumping through hoops to make it portable for the mythical other person > who might ever run it seems OTT, especially since xxd is very common, xxd isn't installed by default (at least on my aarch64 server). But it is part of vim-common package; so it is fair to say xxd command is available on all major distros. > and I'm not sure how much I'd bet on the portability of od's output > format either. > > Dave > >>> +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ >>> + $ASM_WORK_DIR/bb.hex && >>> +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" >>> +/* This file is automatically generated from >>> + * tests/migration/x86-a-b-bootblock.s, edit that and then run >>> + * tests/migration/rebuild-x86-bootblock.sh to update, >>> + * and then remember to send both in your patch submission. >>> + */ >>> +HERE >>> + >>> +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot >>> +rm $ASM_WORK_DIR/bb.o >>> +rmdir $ASM_WORK_DIR >>> + >> >> Thanks, >> drew > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK >
On 02/12/2018 09:07 AM, Dr. David Alan Gilbert wrote: >> >> Is xxd now considered a common enough tool for portable scripts? I've >> always liked xxd for manual use, but scripted with 'od'. > > This script isn't part of a normal build or make check or anything, so > jumping through hoops to make it portable for the mythical other person > who might ever run it seems OTT, especially since xxd is very common, > and I'm not sure how much I'd bet on the portability of od's output > format either. Relying on xxd is okay given your arguments, but od IS portable (it is required by POSIX, and if you stick to the basics that POSIX documents, things are pretty consistent between implementations). I will grant, however, that a portable use of od has a much longer command line (with the options you need to turn on for saner output, because who reads octal these days) than xxd giving you hex by default. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
© 2016 - 2024 Red Hat, Inc.