# HG changeset patch # User one # Date 1355338008 -32400 # Node ID 10316df816500a9d4cc9a89a810b994253826bf1 # Parent e091e06fdd2dd0f8e6059b1534744f4a1cbafceb start to write efi source of "bootx64.c". diff -r e091e06fdd2d -r 10316df81650 Makefile --- a/Makefile Fri Nov 16 15:57:56 2012 +0900 +++ b/Makefile Thu Dec 13 03:46:48 2012 +0900 @@ -1,6 +1,34 @@ -include Makefile.def +ARCH =$(shell uname -m |sed s,i[3456789]86,ia32,) +LIB_PATH = /usr/lib64 +EFI_INCLUDE = /usr/include/efi +EFI_INCLUDES = -nostdinc -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol + +EFI_PATH = /usr/lib64/gnuefi +EFI_CRT_OBJS = $(EFI_PATH)/crt0-efi-$(ARCH).o +EFI_LDS = $(EFI_PATH)/elf_$(ARCH)_efi.lds + +CFLAGS = -fno-stack-protector -fpic -fshort-wchar -mno-red-zone $(EFI_INCLUDES) +ifeq ($(ARCH),x86_64) + CFLAGS += -DEFI_FUNCTION_WRAPPER +endif + +LDFLAGS = -nostdlib -znocombreloc -T $(EFI_LDS) -shared -Bsymbolic -L$(EFI_PATH) -L$(LIB_PATH) \ + $(EFI_CRT_OBJS) -lefi -lgnuefi -TARGET = BOOTX86.EFI +TARGET = bootx64.efi +OBJS = bootx64.o +SOURCES = bootx64.c + +all: $(TARGET) + +bootx64.so: $(OBJS) + $(LD) -o $@ $(LDFLAGS) $^ $(EFI_LIBS) -$(TARGET): bootx86.c - $(CC) bootx86.c +%.efi: %.so + objcopy -j .text -j .sdata -j .data \ + -j .dynamic -j .dynsym -j .rel \ + -j .rela -j .reloc -j .eh_frame \ + --target=efi-app-$(ARCH) $^ $@ + +clean: + rm -rf $(TARGET) *.o *.so diff -r e091e06fdd2d -r 10316df81650 bootx64.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootx64.c Thu Dec 13 03:46:48 2012 +0900 @@ -0,0 +1,9 @@ +#include +#include + +EFI_STATUS +efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *system_tab) +{ + EFI_STATUS ret = EFI_LOAD_ERROR; + return ret; +}