# # Magic ELF mockery ahead ... # # Clang as assembler frontend AS := clang -fno-integrated-as # Assembler flags ASFLAGS := -nostartfiles -Wl,-Ttext=0x0C0DD000 -x assembler-with-cpp # Objcopy (for extraction) OC := objcopy # Objcopy flags OCFLAGS := -Obinary -j.exploit # The source files AS_SOURCES := $(wildcard *.S) # The intermediate "objects" OBJECTS := $(AS_SOURCES:%.S=%.obj) # The resulting ELF images (extracted) EXECUTABLES := $(OBJECTS:%.obj=%.elf) #---------------------------------------------------------------------- all: $(EXECUTABLES) clean: -rm -f $(EXECUTABLES) $(OBJECTS) # Assembler invocation %.obj: %.S $(AS) -o$@ $(ASFLAGS) $< # ELF image extraction %.elf: %.obj $(OC) $(OCFLAGS) $< $@ terminalbug.obj: ASFLAGS += -DTERMINOLOGY -DXTERM