diff --git a/hermit/usr/benchmarks/Makefile b/hermit/usr/benchmarks/Makefile index 44a5113e3..cfb1115bf 100644 --- a/hermit/usr/benchmarks/Makefile +++ b/hermit/usr/benchmarks/Makefile @@ -5,6 +5,10 @@ override STRIP_DEBUG = --strip-debug #--strip-unneeded KEEP_DEBUG = --only-keep-debug OBJCOPY_FLAGS = -j .mboot -j .ktext -j .kdata -j .kbss -j .tbss -j .tdata -j .fini -j .init -j .ctors -j .dtors -j .text -j .data -j .rodata -j .bss -j .percore -j .eh_frame -j .jcr -j .got.plt -j .preinit_array -j .init_array -j .fini_array -j .gcc_except_table -O binary +# We patch the ELF header with a custom OSABI to be recognized by binfmt_misc +ELF_OSABI_OFFSET = 7 +ELF_OSABI = "\\x42" + # Set your own cross compiler tool chain prefix here CROSSCOMPREFIX = x86_64-hermit- @@ -59,6 +63,7 @@ stream: stream.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -fopenmp -o $@ $< $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym RCCE_pingping: RCCE_pingping.o @@ -66,6 +71,7 @@ RCCE_pingping: RCCE_pingping.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -lircce $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym RCCE_pingpong: RCCE_pingpong.o @@ -73,6 +79,7 @@ RCCE_pingpong: RCCE_pingpong.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -lircce $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym netio.o: netio.c @@ -84,6 +91,7 @@ netio: netio.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym hg: hg.o hist.o rdtsc.o run.o init.o opt.o report.o setup.o @@ -91,6 +99,7 @@ hg: hg.o hist.o rdtsc.o run.o init.o opt.o report.o setup.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< hist.o rdtsc.o run.o init.o opt.o report.o setup.o $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym clean: diff --git a/hermit/usr/openmpbench/Makefile b/hermit/usr/openmpbench/Makefile index e88ff3218..fb5959145 100644 --- a/hermit/usr/openmpbench/Makefile +++ b/hermit/usr/openmpbench/Makefile @@ -1,5 +1,9 @@ include Makefile.defs +# We patch the ELF header with a custom OSABI to be recognized by binfmt_misc +ELF_OSABI_OFFSET = 7 +ELF_OSABI = "\\x42" + # If CFLAGS_CRAY is empty set it to CFLAGS ifeq ($(CFLAGS_CRAY),) CFLAGS_CRAY = ${CFLAGS} @@ -23,6 +27,7 @@ prog: arraybench_$(IDA) syncbench: $(SYNCOBJS) $(CC) -o syncbench $(LDFLAGS) $(SYNCOBJS) $(CLOCKOBJS) $(LIBS) -lm + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null # Rule to ensure the lower optimisation level is picked up for common.c # with the Cray compiler @@ -35,7 +40,8 @@ common_sched.o: ${CC} ${CFLAGS_CRAY} $(SCHEDFLAGS) $(OMPFLAG) -o common_sched.o -c common.c schedbench: $(SCHEDOBJS) - $(CC) -o schedbench $(LDFLAGS) $(SCHEDOBJS) $(CLOCKOBJS) $(LIBS) -lm + $(CC) -o schedbench $(LDFLAGS) $(SCHEDOBJS) $(CLOCKOBJS) $(LIBS) -lm + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null # Multiple header files due to multiple array sizes, makes header file arraybench_*.h arraybench_$(IDA).h: arraybench.h @@ -51,6 +57,7 @@ arraybench_$(IDA): $(ARRAYOBJS) $(CLOCKOBJS) arraybench.c taskbench: $(TASKOBJS) $(CC) -o taskbench $(LDFLAGS) $(OMPFLAG) $(TASKOBJS) $(CLOCKOBJS) $(LIBS) -lm + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null clean: -rm -rf *.o syncbench schedbench arraybench_* taskbench diff --git a/hermit/usr/tests/Makefile b/hermit/usr/tests/Makefile index dc806ccb6..9dbffaa63 100644 --- a/hermit/usr/tests/Makefile +++ b/hermit/usr/tests/Makefile @@ -5,6 +5,10 @@ override STRIP_DEBUG = --strip-debug #--strip-unneeded KEEP_DEBUG = --only-keep-debug OBJCOPY_FLAGS = -j .mboot -j .ktext -j .kdata -j .kbss -j .tbss -j .tdata -j .fini -j .init -j .ctors -j .dtors -j .text -j .data -j .rodata -j .bss -j .percore -j .eh_frame -j .jcr -j .got.plt -j .preinit_array -j .init_array -j .fini_array -j .gcc_except_table -O binary +# We patch the ELF header with a custom OSABI to be recognized by binfmt_misc +ELF_OSABI_OFFSET = 7 +ELF_OSABI = "\\x42" + # Set your own cross compiler tool chain prefix here CROSSCOMPREFIX = x86_64-hermit- @@ -55,6 +59,7 @@ hello++: hello++.o $Q$(CXX_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CXXFLAGS_FOR_TARGET) -o $@ $< $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym hello: hello.o @@ -62,6 +67,7 @@ hello: hello.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym hellof: hellof.o @@ -69,6 +75,7 @@ hellof: hellof.o $Q$(FC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(FFLAGS_FOR_TARGET) -o $@ $< $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym jacobi: jacobi.o @@ -76,6 +83,7 @@ jacobi: jacobi.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -lm $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym thr_hello.o: thr_hello.c @@ -87,6 +95,7 @@ thr_hello: thr_hello.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -pthread $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym RCCE_minimum: RCCE_minimum.o @@ -94,6 +103,7 @@ RCCE_minimum: RCCE_minimum.o $Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -lircce $Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym $Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@ + $Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null $Qchmod a-x $@.sym clean: