summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJan Janssen <medhefgo@web.de>2023-02-28 17:44:05 +0100
committerJan Janssen <medhefgo@web.de>2023-03-10 11:41:08 +0100
commitc4ad9b23cafd67e87abbcdcb186db470a5a487e4 (patch)
tree4c67c539749c8dfe1653173793644a6181b015e0 /tools
parent2afeaf1675a6a68636be493a9461e72ce067db19 (diff)
downloadsystemd-c4ad9b23cafd67e87abbcdcb186db470a5a487e4.tar.gz
boot: Fix debug experience
Diffstat (limited to 'tools')
-rwxr-xr-xtools/debug-sd-boot.sh18
-rw-r--r--tools/elf2efi.lds2
2 files changed, 10 insertions, 10 deletions
diff --git a/tools/debug-sd-boot.sh b/tools/debug-sd-boot.sh
index b087c1d4d5..0420dbdab7 100755
--- a/tools/debug-sd-boot.sh
+++ b/tools/debug-sd-boot.sh
@@ -51,19 +51,17 @@ case "${BASH_REMATCH[1]}" in
exit 1
esac
-# system-boot will print out a line like this to inform us where gdb is supposed to
-# look for .text and .data section:
-# systemd-boot@0x0,0x0
+# system-boot/stub will print out a line like this to inform us where it was loaded:
+# systemd-boot@0xC0DE
while read -r line; do
- if [[ "${line}" =~ ${target}@(0x[[:xdigit:]]+),(0x[[:xdigit:]]+) ]]; then
- text="${BASH_REMATCH[1]}"
- data="${BASH_REMATCH[2]}"
+ if [[ "${line}" =~ ${target}@(0x[[:xdigit:]]+) ]]; then
+ loaded_base="${BASH_REMATCH[1]}"
break
fi
done <"${2}"
-if [[ -z "${text}" || -z "${data}" ]]; then
- echo "Could not determine text and data location."
+if [[ -z "${loaded_base}" ]]; then
+ echo "Could not determine loaded image base."
exit 1
fi
@@ -76,8 +74,8 @@ fi
cat >"${gdb_script}" <<EOF
file ${binary}
-add-symbol-file ${symbols} ${text} -s .data ${data}
-set architecture ${arch}"
+symbol-file ${symbols} -o ${loaded_base}
+set architecture ${arch}
EOF
if [[ -z "${3}" ]]; then
diff --git a/tools/elf2efi.lds b/tools/elf2efi.lds
index eed9e279e9..805efc156d 100644
--- a/tools/elf2efi.lds
+++ b/tools/elf2efi.lds
@@ -1,4 +1,6 @@
SECTIONS {
+ __ImageBase = .;
+
/* We skip the first page because the space will be occupied by the PE headers after conversion. */
. = CONSTANT(MAXPAGESIZE);
.text ALIGN(CONSTANT(MAXPAGESIZE)) : {