mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
patch all binaries with a custom OSABI field in the ELF header
This commit is contained in:
parent
7b45743ca4
commit
0f6fdeb411
3 changed files with 27 additions and 1 deletions
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue