summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRegia König2022-08-16 16:37:50 +0200
committerRegia König2022-08-16 16:37:50 +0200
commitd46d26a260f5882b2559949aa43e8fb47bd16a7e (patch)
tree56612e90904f17c257510d4b760a7aaf1bd9bca5
parentMore documentation on GNU-efi (diff)
downloadmemtest86-d46d26a260f5882b2559949aa43e8fb47bd16a7e.tar.gz
memtest86-d46d26a260f5882b2559949aa43e8fb47bd16a7e.tar.xz
memtest86-d46d26a260f5882b2559949aa43e8fb47bd16a7e.zip
New script to analyze efi executable
-rwxr-xr-xGNU_efi_HelloWorld/analyse_hello.sh8
-rw-r--r--GNU_efi_HelloWorld/hello.c3
-rwxr-xr-xGNU_efi_HelloWorld/peinfobin0 -> 27600 bytes
-rw-r--r--documentation/GNU-efi9
4 files changed, 20 insertions, 0 deletions
diff --git a/GNU_efi_HelloWorld/analyse_hello.sh b/GNU_efi_HelloWorld/analyse_hello.sh
new file mode 100755
index 0000000..cfaad73
--- /dev/null
+++ b/GNU_efi_HelloWorld/analyse_hello.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+echo "objdump -h hello.efi"
+objdump -h hello.efi
+
+echo "########################################################################"
+echo "peinfo hello.efi | grep text -A 5"
+peinfo hello.efi | grep text -A 5
diff --git a/GNU_efi_HelloWorld/hello.c b/GNU_efi_HelloWorld/hello.c
index 52c05b3..817c135 100644
--- a/GNU_efi_HelloWorld/hello.c
+++ b/GNU_efi_HelloWorld/hello.c
@@ -8,5 +8,8 @@ efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {
InitializeLib(ImageHandle, SystemTable);
Print(L"Hello, world!\n");
+ // TODO: get SystemTable-> ... -> ImageBase
+ // Print ImageBase
+
return EFI_SUCCESS;
}
diff --git a/GNU_efi_HelloWorld/peinfo b/GNU_efi_HelloWorld/peinfo
new file mode 100755
index 0000000..4645ea4
--- /dev/null
+++ b/GNU_efi_HelloWorld/peinfo
Binary files differ
diff --git a/documentation/GNU-efi b/documentation/GNU-efi
index bb22b9e..63097fe 100644
--- a/documentation/GNU-efi
+++ b/documentation/GNU-efi
@@ -166,8 +166,17 @@ from the EFI Shell. Or you can rename it to EFI\BOOT\BOOTX64.EFI and it should
be executed automatically on boot.
+LIBEFI.A
+Has wrappers for the most common UEFI functions, but you might need to call
+something not covered. For completeness, it provides:
+uefi_call_wrapper(func, numarg, ...);
+
+For example, the "Print" function used in our main.c and which accepts printf
+compatible arguments, is under the hood nothing else than a call to:
+
+uefi_call_wrapper(ST->ConOut->OutputString, 2, ST->ConOut, buffer);