mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-26 03:25:30 +00:00
musl defines 'loff_t' in fcntl.h as 'off_t'.
This patch resolves the following error when running the compel tests
on Alpine Linux:
gcc -O2 -g -Wall -Werror -c -Wstrict-prototypes -fno-stack-protector -nostdlib -fomit-frame-pointer -ffreestanding -fpie -I ../../../compel/include/uapi -o parasite.o parasite.c
In file included from ../../../compel/include/uapi/compel/plugins/std/syscall.h:8,
from ../../../compel/include/uapi/compel/plugins/std.h:5,
from parasite.c:3:
../../../compel/include/uapi/compel/plugins/std/syscall-64.h:19:66: error: unknown type name 'loff_t'; did you mean 'off_t'?
19 | extern long sys_pread (unsigned int fd, char *buf, size_t count, loff_t pos) ;
| ^~~~~~
| off_t
../../../compel/include/uapi/compel/plugins/std/syscall-64.h:96:46: error: unknown type name 'loff_t'; did you mean 'off_t'?
96 | extern long sys_fallocate (int fd, int mode, loff_t offset, loff_t len) ;
| ^~~~~~
| off_t
../../../compel/include/uapi/compel/plugins/std/syscall-64.h:96:61: error: unknown type name 'loff_t'; did you mean 'off_t'?
96 | extern long sys_fallocate (int fd, int mode, loff_t offset, loff_t len) ;
| ^~~~~~
| off_t
make[1]: *** [Makefile:32: parasite.o] Error 1
Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
130 lines
5.3 KiB
Text
130 lines
5.3 KiB
Text
std-lib-y += ./$(PLUGIN_ARCH_DIR)/std/syscalls-64.o
|
|
|
|
sys-proto-types := $(obj)/include/uapi/std/syscall-types.h
|
|
sys-proto-generic := $(obj)/include/uapi/std/syscall.h
|
|
sys-codes-generic := $(obj)/include/uapi/std/syscall-codes.h
|
|
sys-codes = $(obj)/include/uapi/std/syscall-codes-$(1).h
|
|
sys-proto = $(obj)/include/uapi/std/syscall-$(1).h
|
|
sys-def = $(PLUGIN_ARCH_DIR)/std/syscalls/syscall_$(1).tbl
|
|
sys-asm = $(PLUGIN_ARCH_DIR)/std/syscalls-$(1).S
|
|
sys-asm-common-name = std/syscalls/syscall-common-x86-$(1).S
|
|
sys-asm-common = $(PLUGIN_ARCH_DIR)/$(sys-asm-common-name)
|
|
sys-asm-types := $(obj)/include/uapi/std/asm/syscall-types.h
|
|
sys-exec-tbl = $(PLUGIN_ARCH_DIR)/std/sys-exec-tbl-$(1).c
|
|
|
|
sys-bits := 64
|
|
|
|
AV := $$$$
|
|
|
|
define gen-rule-sys-codes
|
|
$(sys-codes): $(sys-def) $(sys-proto-types)
|
|
$(call msg-gen, $$@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $$@
|
|
$(Q) echo "#ifndef ASM_SYSCALL_CODES_H_$(1)__" >> $$@
|
|
$(Q) echo "#define ASM_SYSCALL_CODES_H_$(1)__" >> $$@
|
|
$(Q) cat $$< | awk '/^__NR/{SYSN=$(AV)1; \
|
|
sub("^__NR", "SYS", SYSN); \
|
|
print "\n#ifndef ", $(AV)1; \
|
|
print "#define", $(AV)1, $(AV)2; \
|
|
print "#endif"; \
|
|
print "\n#ifndef ", SYSN; \
|
|
print "#define ", SYSN, $(AV)1; \
|
|
print "#endif";}' >> $$@
|
|
$(Q) echo "#endif /* ASM_SYSCALL_CODES_H_$(1)__ */" >> $$@
|
|
endef
|
|
|
|
define gen-rule-sys-proto
|
|
$(sys-proto): $(sys-def) $(sys-proto-types)
|
|
$(call msg-gen, $$@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $$@
|
|
$(Q) echo "#ifndef ASM_SYSCALL_PROTO_H_$(1)__" >> $$@
|
|
$(Q) echo "#define ASM_SYSCALL_PROTO_H_$(1)__" >> $$@
|
|
$(Q) echo "/* musl defines loff_t as off_t */" >> $$@
|
|
$(Q) echo '#ifndef loff_t' >> $$@
|
|
$(Q) echo '#define loff_t off_t' >> $$@
|
|
$(Q) echo '#endif' >> $$@
|
|
$(Q) echo '#include <compel/plugins/std/syscall-codes-$(1).h>' >> $$@
|
|
$(Q) echo '#include <compel/plugins/std/syscall-types.h>' >> $$@
|
|
ifeq ($(1),32)
|
|
$(Q) echo '#include "asm/syscall32.h"' >> $$@
|
|
endif
|
|
$(Q) cat $$< | awk '/^__NR/{print "extern long", $(AV)3, \
|
|
substr($(AV)0, index($(AV)0,$(AV)4)), ";"}' >> $$@
|
|
$(Q) echo "#endif /* ASM_SYSCALL_PROTO_H_$(1)__ */" >> $$@
|
|
endef
|
|
|
|
define gen-rule-sys-asm
|
|
$(sys-asm): $(sys-def) $(sys-asm-common) $(sys-codes) $(sys-proto) $(sys-proto-types)
|
|
$(call msg-gen, $$@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $$@
|
|
$(Q) echo '#include <compel/plugins/std/syscall-codes-$(1).h>' >> $$@
|
|
$(Q) echo '#include "$(sys-asm-common-name)"' >> $$@
|
|
$(Q) cat $$< | awk '/^__NR/{print "SYSCALL(", $(AV)3, ",", $(AV)2, ")"}' >> $$@
|
|
endef
|
|
|
|
define gen-rule-sys-exec-tbl
|
|
$(sys-exec-tbl): $(sys-def) $(sys-codes) $(sys-proto) $(sys-proto-generic) $(sys-proto-types)
|
|
$(call msg-gen, $$@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $$@
|
|
$(Q) cat $$< | awk '/^__NR/{print \
|
|
"SYSCALL(", substr($(AV)3, 5), ",", $(AV)2, ")"}' >> $$@
|
|
endef
|
|
|
|
$(sys-codes-generic): $(PLUGIN_ARCH_DIR)/std/syscalls/syscall_32.tbl $(sys-proto-types)
|
|
$(call msg-gen, $@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $@
|
|
$(Q) echo "#ifndef __ASM_CR_SYSCALL_CODES_H__" >> $@
|
|
$(Q) echo "#define __ASM_CR_SYSCALL_CODES_H__" >> $@
|
|
$(Q) echo "/* musl defines loff_t as off_t */" >> $@
|
|
$(Q) echo '#ifndef loff_t' >> $@
|
|
$(Q) echo '#define loff_t off_t' >> $@
|
|
$(Q) echo '#endif' >> $@
|
|
$(Q) echo '#include <compel/plugins/std/syscall-codes-64.h>' >> $@
|
|
$(Q) cat $< | awk '/^__NR/{NR32=$$1; \
|
|
sub("^__NR", "__NR32", NR32); \
|
|
print "\n#ifndef ", NR32; \
|
|
print "#define ", NR32, $$2; \
|
|
print "#endif";}' >> $@
|
|
$(Q) echo "#endif /* __ASM_CR_SYSCALL_CODES_H__ */" >> $@
|
|
mrproper-y += $(sys-codes-generic)
|
|
|
|
$(sys-proto-generic): $(strip $(call map,sys-proto,$(sys-bits))) $(sys-proto-types)
|
|
$(call msg-gen, $@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $@
|
|
$(Q) echo "#ifndef __ASM_CR_SYSCALL_PROTO_H__" >> $@
|
|
$(Q) echo "#define __ASM_CR_SYSCALL_PROTO_H__" >> $@
|
|
$(Q) echo "" >> $@
|
|
$(Q) echo "#ifdef CONFIG_X86_32" >> $@
|
|
$(Q) echo '#include <compel/plugins/std/syscall-32.h>' >> $@
|
|
$(Q) echo "#else" >> $@
|
|
$(Q) echo '#include <compel/plugins/std/syscall-64.h>' >> $@
|
|
$(Q) echo "#endif /* CONFIG_X86_32 */" >> $@
|
|
$(Q) echo "" >> $@
|
|
$(Q) echo "#endif /* __ASM_CR_SYSCALL_PROTO_H__ */" >> $@
|
|
mrproper-y += $(sys-proto-generic)
|
|
|
|
define gen-rule-sys-exec-tbl
|
|
$(sys-exec-tbl): $(sys-def) $(sys-codes) $(sys-proto) $(sys-proto-generic)
|
|
$(call msg-gen, $$@)
|
|
$(Q) echo "/* Autogenerated, don't edit */" > $$@
|
|
$(Q) cat $$< | awk '/^__NR/{print \
|
|
"SYSCALL(", substr($(AV)3, 5), ",", $(AV)2, ")"}' >> $$@
|
|
endef
|
|
|
|
$(eval $(call map,gen-rule-sys-codes,$(sys-bits)))
|
|
$(eval $(call map,gen-rule-sys-proto,$(sys-bits)))
|
|
$(eval $(call map,gen-rule-sys-asm,$(sys-bits)))
|
|
$(eval $(call map,gen-rule-sys-exec-tbl,$(sys-bits)))
|
|
|
|
$(sys-asm-types): $(PLUGIN_ARCH_DIR)/include/asm/syscall-types.h
|
|
$(call msg-gen, $@)
|
|
$(Q) ln -s ../../../../../../$(PLUGIN_ARCH_DIR)/include/asm/syscall-types.h $(sys-asm-types)
|
|
|
|
std-headers-deps += $(call sys-codes,$(sys-bits))
|
|
std-headers-deps += $(call sys-proto,$(sys-bits))
|
|
std-headers-deps += $(call sys-asm,$(sys-bits))
|
|
std-headers-deps += $(call sys-exec-tbl,$(sys-bits))
|
|
std-headers-deps += $(sys-codes-generic)
|
|
std-headers-deps += $(sys-proto-generic)
|
|
std-headers-deps += $(sys-asm-types)
|
|
mrproper-y += $(std-headers-deps)
|