From: John Tsiombikas Date: Fri, 22 Mar 2019 23:11:24 +0000 (+0200) Subject: initial commit X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=efitest1;a=commitdiff_plain;h=74c73d9a4314987f82ec8604e2f4a32b14bfdd62 initial commit --- 74c73d9a4314987f82ec8604e2f4a32b14bfdd62 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17b4882 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.o +*.d +*.swp +*.img +*.efi +*.so diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..787921f --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +obj = test.o +efiso = test.so +efibin = bootx64.efi + +inc = -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol +def = -DEFI_FUNCTION_WRAPPER +eficrt = /usr/lib/crt0-efi-x86_64.o +ldscript = /usr/lib/elf_x86_64_efi.lds + +CFLAGS = -pedantic -Wall $(inc) $(def) -fno-stack-protector -fPIC -fshort-wchar \ + -mno-red-zone +LDFLAGS = -nostdlib -znocombreloc -T $(ldscript) -L/usr/lib $(eficrt) -lefi -lgnuefi + +.PHONY: all +all: $(efibin) + +$(efiso): $(obj) + $(LD) -o $@ -shared -Bsymbolic $(obj) $(LDFLAGS) + +$(efibin): $(efiso) + objcopy -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ + -j .rela -j .reloc --target=efi-app-x86_64 $< $@ + + +.PHONY: clean +clean: + rm -f $(obj) $(efibin) $(efiso) diff --git a/test.c b/test.c new file mode 100644 index 0000000..2b80863 --- /dev/null +++ b/test.c @@ -0,0 +1,16 @@ +#include +#include +#include + +EFI_STATUS EFIAPI efi_main(EFI_HANDLE img, EFI_SYSTEM_TABLE *systab) +{ + InitializeLib(img, systab); + Print(L"hello world\n"); + + asm volatile("cli"); + for(;;) { + asm volatile("hlt"); + } + + return EFI_SUCCESS; +}