From 8d6bc3b17d70eab7f62157734bd4b4c946e611c1 Mon Sep 17 00:00:00 2001 From: SergeySlice Date: Sun, 13 Feb 2022 14:12:14 +0300 Subject: [PATCH] a script ti debug xcode8 compilation Signed-off-by: SergeySlice --- Qemu/gdb_x8_launch | 158 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100755 Qemu/gdb_x8_launch diff --git a/Qemu/gdb_x8_launch b/Qemu/gdb_x8_launch new file mode 100755 index 000000000..5a818c49a --- /dev/null +++ b/Qemu/gdb_x8_launch @@ -0,0 +1,158 @@ +#!/bin/bash +SCRIPT_ABS_FILENAME=`LC_ALL=en_US.ISO8859-1 perl -e 'use Cwd "abs_path";print abs_path(shift)' "${BASH_SOURCE[0]}"` +SCRIPT_DIR=`dirname "$SCRIPT_ABS_FILENAME"` + +# we can't cd "$SCRIPT_DIR" because the 1st arg maybe a relative path to the current dir (and NOT relative to the SCRIPT_DIR) + +OSTYPE=`uname -s` +#echo $OSTYPE + +if [ -z "$1" ] +then + if [ -f "${1%.*}".debug ] + then + clover_debug_file="${1%.*}".debug + echo Using debug file "$clover_debug_file" + else + if [ -f "${1%.*}".dll.dSYM ] + then + clover_debug_file="${1%.*}".dll.dSYM + echo Using debug file "$clover_debug_file" + else + echo "Usage: $SCRIPT_ABS_FILENAME [Clover debug file]" + exit 1 + fi + fi +else + clover_debug_file="${1%.*}".dll.dSYM +fi + +clover_debug_file="${1%.*}".dll.dSYM +clover_efi_file="${1%.*}".efi + +#if ! [ -f "$clover_debug_file" ] +#then +# echo Debug file "$clover_debug_file" doesn\'t exist +# exit 1 +#fi + +#clover_efi_file="${clover_debug_file%.*}".efi +#if ! [ -f "$clover_efi_file" ] +#then +# echo Efi file "$clover_efi_file" doesn\'t exist +# exit 1 +#fi + +echo clover_debug_file="$clover_debug_file" +echo clover_efi_file="$clover_efi_file" + +#qemu_path="$SCRIPT_DIR"/qemu_portable-v4.2.0/qemu-system-x86_64 +qemu_path="$SCRIPT_DIR"/qemu_portable-v5.2.0/qemu-system-x86_64 +#set -x + +if [ "$OSTYPE" = "Darwin" ] +then + if ! [ -f "$qemu_path" ] + then + echo "You must restore the folder \'"$(dirname "$qemu_path")"\'" + exit 1 + fi + if ! [ -f "$SCRIPT_DIR"/disk_image_gpt.img ] + then + unzip -o "$SCRIPT_DIR"/disk_image_gpt.img.zip -d "$SCRIPT_DIR" + rm -rf "$SCRIPT_DIR"/__MACOSX + fi + + if pgrep qemu + then + killall qemu-system-x86_64 + fi + > "$SCRIPT_DIR"/serial0_qemu_out.log # empty file without erasing it. Useful for editor for refreshing and reloading. + + hdiutil attach "$SCRIPT_DIR"/disk_image_gpt.img || exit 1 + + shopt -s nocasematch + + if [[ "$(basename "$clover_debug_file")" =~ "CloverX64"* ]] + then + echo ditto "${clover_efi_file}" /Volumes/QEMU_EFI/EFI/CLOVER/CLOVERX64.efi + ditto "${clover_efi_file}" /Volumes/QEMU_EFI/EFI/CLOVER/CLOVERX64.efi || exit 1 + + #no need to replace BootX64.efi, it's not used in legacy boot + else + : # TODO : if it's a module, has to be copied in Drivers + fi + + shopt -u nocasematch + + diskutil eject /Volumes/QEMU_EFI || exit 1 + + sleep 1 # not 100% sure it's needed + set -m + + cd "$SCRIPT_DIR" + + bios_file=("$(dirname "$qemu_path")"/bios*) + + "$qemu_path" \ + -L "$(dirname "$qemu_path")" \ + -m 2048 \ + -cpu Penryn \ + -bios "$bios_file" \ + -machine q35 \ + -device ahci,id=ahi \ + -drive format=raw,id=hda,file=./disk_image_gpt.img \ + -usb \ + -device usb-mouse,bus=usb-bus.0,port=2 \ + -device usb-kbd,bus=usb-bus.0,port=1 \ + -serial file:./serial0_qemu_out.log \ + -gdb tcp::9000 & + [[ $? == 0 ]] || exit 1 + + set +m + + count=1 + timeout=60 + image_base_str="CloverX64 : Image base = " + + getImageBase() { + [ -f ./serial0_qemu_out.log ] || return 1 + grep "$image_base_str" ./serial0_qemu_out.log + return $? + } + + + while [ $count -le $timeout ] && ! getImageBase + do + sleep 1 + count=$((count+1)) + done + + if [ $count -ge $timeout ] + then + echo Cannot find "\"Clover : Image base = \"" in ./serial0_qemu_out.log after $timeout seconds + exit 1 + fi + + adr="$(grep "$image_base_str" ./serial0_qemu_out.log | awk '{printf "0x%x",$NF}')" + echo adr="$adr" + + GDB=gdb + if [ -f ../../../toolchain.gdb/gdb ] + then + GDB=../../../toolchain.gdb/gdb + fi + + "$GDB" --eval-command="file "$clover_debug_file" -o $adr" \ + --eval-command="target remote localhost:9000" \ + --eval-command="rwatch *0" \ + --eval-command="br panic_" \ + --eval-command="continue" + + + exit 0 + + + +fi +