diff options
author | Jonathan Neuschäfer <j.neuschaefer@gmx.net> | 2016-06-10 19:35:14 +0200 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-06-21 00:10:14 +0200 |
commit | 2459f677310efdde229bab3406b2fb5d91f5ec20 (patch) | |
tree | 4e5beea313d16348671afff8214a806f66917885 | |
parent | 057ac4da0ed8dfdc3a6481fe6c490ab9e34476b9 (diff) | |
download | coreboot-2459f677310efdde229bab3406b2fb5d91f5ec20.tar.xz |
util/riscvtools: Add script that turns coreboot.rom into an ELF
This is required because SPIKE doesn't support loading flat files yet.
Change-Id: If745d78712ca8108b5dcc21591201bc2d3f70b86
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Reviewed-on: https://review.coreboot.org/14964
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rwxr-xr-x | util/riscvtools/make-spike-elf.sh | 27 | ||||
-rw-r--r-- | util/riscvtools/spike-elf.ld | 11 |
2 files changed, 38 insertions, 0 deletions
diff --git a/util/riscvtools/make-spike-elf.sh b/util/riscvtools/make-spike-elf.sh new file mode 100755 index 0000000000..4241c5418a --- /dev/null +++ b/util/riscvtools/make-spike-elf.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# +# This script is based on: +# https://docs.google.com/document/d/1Pvf9Yxorcd3sbgs8WcomcTl3J4bmX6e1UE0ROCefR88 + +set -e + +usage() { + echo "This script converts a flat file into an ELF, that can be passed" + echo "to SPIKE, the RISC-V reference emulator." + echo "" + echo "Usage: $0 coreboot.rom coreboot.elf" +} + +if [ $# -ne 2 ]; then + usage + exit 1 +fi + +FLAT_FILE="$1" +OBJECT_FILE=$(mktemp /tmp/coreboot-spike.XXXXXX.o) +ELF_FILE="$2" +TOOL_PATH="$(dirname "$0")" + +objcopy -I binary -O elf32-i386 --binary-architecture i386 "$FLAT_FILE" "$OBJECT_FILE" +ld -m elf_i386 "$OBJECT_FILE" -T "$TOOL_PATH/spike-elf.ld" -o "$ELF_FILE" +rm "$OBJECT_FILE" diff --git a/util/riscvtools/spike-elf.ld b/util/riscvtools/spike-elf.ld new file mode 100644 index 0000000000..341a16ffc2 --- /dev/null +++ b/util/riscvtools/spike-elf.ld @@ -0,0 +1,11 @@ +/* See make-spike-elf.sh */ + +ENTRY(_start); +SECTIONS +{ + . = 0x80000000; + _start = .; + .data : { + *(.data) + } +} |