[3/5] compel: Initial commit

Submitted by Cyrill Gorcunov on Aug. 31, 2016, 1:48 p.m.

Details

Message ID 1472651309-4725-4-git-send-email-gorcunov@openvz.org
State Accepted
Series "compel: Split big patch"
Commit 128fb530e5a3311b5e70e3fe9c979926dc9066c0
Headers show

Commit Message

Cyrill Gorcunov Aug. 31, 2016, 1:48 p.m.
Here we rather suffle source code into directories
preparing ground for future work.

Note: cross-compile won't work for a while.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
---
 Makefile                                           |   8 +-
 Makefile.compel                                    |  35 +++++++
 compel/Makefile                                    |  47 ++++------
 compel/arch/aarch64/handle-elf.c                   |  21 -----
 compel/arch/aarch64/include/handle-elf.h           |  11 ---
 compel/arch/aarch64/src/lib/handle-elf.c           |  34 +++++++
 compel/arch/aarch64/src/lib/include/handle-elf.h   |  11 +++
 compel/arch/arm/include/handle-elf.h               |  11 ---
 compel/arch/arm/{ => src/lib}/handle-elf.c         |  13 ++-
 compel/arch/arm/src/lib/include/handle-elf.h       |  11 +++
 compel/arch/ppc64/handle-elf.c                     |  21 -----
 compel/arch/ppc64/include/handle-elf.h             |  12 ---
 compel/arch/ppc64/src/lib/handle-elf.c             |  34 +++++++
 compel/arch/ppc64/src/lib/include/handle-elf.h     |  13 +++
 compel/arch/x86/handle-elf.c                       |  16 ----
 compel/arch/x86/src/lib/handle-elf.c               |  29 ++++++
 compel/arch/x86/{ => src/lib}/include/handle-elf.h |  18 ++--
 compel/include/elf32-types.h                       |  16 ++++
 compel/include/elf64-types.h                       |  16 ++++
 compel/include/piegen.h                            |  22 +----
 compel/include/uapi/elf32-types.h                  |  20 ----
 compel/include/uapi/elf64-types.h                  |  20 ----
 compel/include/uapi/piegen-err.h                   |  10 --
 compel/{ => src/lib}/handle-elf-32.c               |   0
 compel/{ => src/lib}/handle-elf.c                  | 103 +++++++++++----------
 compel/{ => src}/main.c                            |   1 +
 26 files changed, 299 insertions(+), 254 deletions(-)
 create mode 100644 Makefile.compel
 delete mode 100644 compel/arch/aarch64/handle-elf.c
 delete mode 100644 compel/arch/aarch64/include/handle-elf.h
 create mode 100644 compel/arch/aarch64/src/lib/handle-elf.c
 create mode 100644 compel/arch/aarch64/src/lib/include/handle-elf.h
 delete mode 100644 compel/arch/arm/include/handle-elf.h
 rename compel/arch/arm/{ => src/lib}/handle-elf.c (54%)
 create mode 100644 compel/arch/arm/src/lib/include/handle-elf.h
 delete mode 100644 compel/arch/ppc64/handle-elf.c
 delete mode 100644 compel/arch/ppc64/include/handle-elf.h
 create mode 100644 compel/arch/ppc64/src/lib/handle-elf.c
 create mode 100644 compel/arch/ppc64/src/lib/include/handle-elf.h
 delete mode 100644 compel/arch/x86/handle-elf.c
 create mode 100644 compel/arch/x86/src/lib/handle-elf.c
 rename compel/arch/x86/{ => src/lib}/include/handle-elf.h (59%)
 create mode 100644 compel/include/elf32-types.h
 create mode 100644 compel/include/elf64-types.h
 delete mode 100644 compel/include/uapi/elf32-types.h
 delete mode 100644 compel/include/uapi/elf64-types.h
 delete mode 100644 compel/include/uapi/piegen-err.h
 rename compel/{ => src/lib}/handle-elf-32.c (100%)
 rename compel/{ => src/lib}/handle-elf.c (88%)
 rename compel/{ => src}/main.c (99%)

Patch hide | download patch | download mbox

diff --git a/Makefile b/Makefile
index f850507f014e..c03a0b439142 100644
--- a/Makefile
+++ b/Makefile
@@ -181,12 +181,9 @@  $(eval $(call gen-built-in,images))
 
 .PHONY: .FORCE
 
+#
 # Compel get used by CRIU, build it earlier
-compel/%: .FORCE
-	$(Q) $(MAKE) $(build)=compel $@
-
-test/compel/%: .FORCE
-	$(Q) $(MAKE) $(build)=compel $@
+include Makefile.compel
 
 #
 # CRIU building done in own directory
@@ -235,6 +232,7 @@  mrproper: subclean
 	$(Q) $(MAKE) $(build)=criu $@
 	$(Q) $(MAKE) $(build)=compel $@
 	$(Q) $(RM) $(VERSION_HEADER)
+	$(Q) $(RM) $(COMPEL_VERSION_HEADER)
 	$(Q) $(RM) cscope.*
 	$(Q) $(RM) tags TAGS
 .PHONY: mrproper
diff --git a/Makefile.compel b/Makefile.compel
new file mode 100644
index 000000000000..2fd410ef7628
--- /dev/null
+++ b/Makefile.compel
@@ -0,0 +1,35 @@ 
+COMPEL_VERSION_HEADER	:= compel/include/version.h
+
+$(COMPEL_VERSION_HEADER): $(SRC_DIR)/Makefile.versions
+	$(call msg-gen, $(COMPEL_VERSION_HEADER))
+	$(E) "  GEN     " $@
+	$(Q) echo "/* Autogenerated, do not edit */"	 			 	 > $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#ifndef COMPEL_SO_VERSION_H__"					>> $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#define COMPEL_SO_VERSION_H__"					>> $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#define COMPEL_SO_VERSION \"$(COMPEL_SO_VERSION)\""			>> $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#define COMPEL_SO_VERSION_MAJOR " $(COMPEL_SO_VERSION_MAJOR)		>> $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#define COMPEL_SO_VERSION_MINOR " $(COMPEL_SO_VERSION_MINOR)		>> $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#define COMPEL_SO_VERSION_SUBLEVEL " $(COMPEL_SO_VERSION_SUBLEVEL)	>> $(COMPEL_VERSION_HEADER)
+	$(Q) echo "#endif /* COMPEL_SO_VERSION_H__ */"					>> $(COMPEL_VERSION_HEADER)
+
+#
+# Compel itself.
+compel/%: $(COMPEL_VERSION_HEADER) .FORCE
+	$(Q) $(MAKE) $(build)=compel $@
+
+#
+# Plugins
+compel/plugins/%: $(COMPEL_VERSION_HEADER) .FORCE
+	$(Q) $(MAKE) $(build)=compel/plugins $@
+
+compel/compel: compel/built-in.o compel/lib.a $(COMPEL_VERSION_HEADER)
+	$(call msg-link, $@)
+	$(Q) $(CC) $(CFLAGS) $^ $(WRAPFLAGS) $(LDFLAGS) -rdynamic -o $@
+
+#
+# And compel library.
+LIBCOMPEL_SO		:= libcompel.so
+LIBCOMPEL_SO_CFLAGS	+= $(CFLAGS) -rdynamic -Wl,-soname,$(LIBCOMPEL_SO).$(COMPEL_SO_VERSION_MAJOR)
+compel/$(LIBCOMPEL_SO): compel/lib.a
+	$(call msg-link, $@)
+	$(Q) $(CC) -shared $(LIBCOMPEL_SO_CFLAGS) -o $@ -Wl,--whole-archive $^ -Wl,--no-whole-archive $(LDFLAGS)
diff --git a/compel/Makefile b/compel/Makefile
index 5166e9318196..52eb27ea72f4 100644
--- a/compel/Makefile
+++ b/compel/Makefile
@@ -1,38 +1,23 @@ 
 include $(SRC_DIR)/Makefile.versions
 
-ccflags-y	+= -iquote criu/include
-ccflags-y	+= -iquote compel/include
-ccflags-y	+= -iquote compel/arch/$(ARCH)/include
-ccflags-y	+= -DCOMPEL_VERSION=\"$(COMPEL_SO_VERSION_MAJOR).$(COMPEL_SO_VERSION_MINOR)\"
-
-host-ccflags-y	+= $(filter-out -pg $(CFLAGS-GCOV),$(ccflags-y))
-HOSTCFLAGS	+= $(filter-out -pg $(CFLAGS-GCOV),$(WARNINGS) $(DEFINES))
-HOSTLDFLAGS	+= $(filter-out -pg $(CFLAGS-GCOV),$(LDFLAGS))
-HOSTCFLAGS	:= $(filter-out -DCONFIG_X86_64,$(HOSTCFLAGS))
-export host-ccflags-y HOSTCFLAGS HOSTLDFLAGS
-
-hostprogs-y	+= compel
-compel-objs	+= main.o
-compel-objs	+= handle-elf.o
-compel-objs	+= arch/$(ARCH)/handle-elf.o
-
-ifeq ($(ARCH),x86)
-# Add -DCONFIG_X86_64 or -DCONFIG_X86_32 to HOSTCFLAGS
-define ccflags-defines
-        export HOSTCFLAGS_$(notdir $(1)) += -DCONFIG_X86_64
-endef
-$(eval $(call map,ccflags-defines,$(compel-objs)))
+.PHONY: .FORCE
 
-compel-objs += handle-elf-32.o
-export HOSTCFLAGS_handle-elf-32.o += -DCONFIG_X86_32
-endif # ARCH == x86
+COMPEL_SO_VERSION	:= $(COMPEL_SO_VERSION_MAJOR)$(if $(COMPEL_SO_VERSION_MINOR),.$(COMPEL_SO_VERSION_MINOR))$(if $(COMPEL_SO_VERSION_SUBLEVEL),.$(COMPEL_SO_VERSION_SUBLEVEL))
+COMPEL_SO_VERSION_CODE	:= $(shell expr $(COMPEL_SO_VERSION_MAJOR) \* 65536 \+ $(COMPEL_SO_VERSION_MINOR) \* 256 \+ $(COMPEL_SO_VERSION_SUBLEVEL))
+ccflags-y		+= -iquote compel/arch/$(ARCH)/src/lib/include
+ccflags-y		+= -iquote compel/include
+ccflags-y		+= -iquote compel/plugins/include
+ccflags-y		+= -iquote $(SRC_DIR)/criu/include
+ccflags-y		+= -fPIC
 
-.PHONY: .FORCE
+lib-y			+= arch/$(ARCH)/src/lib/handle-elf.o
+lib-y			+= src/lib/handle-elf.o
+lib-y			+= src/lib/handle-elf-32.o
 
-export compel-objs
-test/compel/%: .FORCE
-	$(Q) $(MAKE) $(build)=test/compel $@
+obj-y			+= src/main.o
 
-test: test/compel/test_handle_binary
+CFLAGS_handle-elf-32.o += -UCONFIG_X86_64 -DCONFIG_X86_32
+CFLAGS_handle-elf-32.d += -UCONFIG_X86_64 -DCONFIG_X86_32
 
-.PHONY: test
+cleanup-y		+= compel/compel
+cleanup-y		+= compel/libcompel.so
diff --git a/compel/arch/aarch64/handle-elf.c b/compel/arch/aarch64/handle-elf.c
deleted file mode 100644
index bbd4bf1b0369..000000000000
--- a/compel/arch/aarch64/handle-elf.c
+++ /dev/null
@@ -1,21 +0,0 @@ 
-#include <string.h>
-
-#include "piegen.h"
-#include "uapi/piegen-err.h"
-#include "handle-elf.h"
-
-int handle_binary(void *mem, size_t size)
-{
-	const unsigned char *elf_ident =
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-		elf_ident_64_le;
-#else
-		elf_ident_64_be;
-#endif
-
-	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
-		return handle_elf_aarch64(mem, size);
-
-	pr_err("Unsupported Elf format detected\n");
-	return -E_NOT_ELF;
-}
diff --git a/compel/arch/aarch64/include/handle-elf.h b/compel/arch/aarch64/include/handle-elf.h
deleted file mode 100644
index 7d7bfb7b3ade..000000000000
--- a/compel/arch/aarch64/include/handle-elf.h
+++ /dev/null
@@ -1,11 +0,0 @@ 
-#ifndef __COMPEL_HANDLE_ELF_H__
-#define __COMPEL_HANDLE_ELF_H__
-
-#include "uapi/elf64-types.h"
-
-#define __handle_elf	handle_elf_aarch64
-#define arch_is_machine_supported(e_machine)   (e_machine == EM_AARCH64)
-
-extern int handle_elf_aarch64(void *mem, size_t size);
-
-#endif /* __COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/arch/aarch64/src/lib/handle-elf.c b/compel/arch/aarch64/src/lib/handle-elf.c
new file mode 100644
index 000000000000..633a382cc2da
--- /dev/null
+++ b/compel/arch/aarch64/src/lib/handle-elf.c
@@ -0,0 +1,34 @@ 
+#include <string.h>
+
+#include "uapi/compel.h"
+
+#include "handle-elf.h"
+#include "piegen.h"
+
+static const unsigned char __maybe_unused
+elf_ident_64_le[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned char __maybe_unused
+elf_ident_64_be[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+int handle_binary(void *mem, size_t size)
+{
+	const unsigned char *elf_ident =
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+		elf_ident_64_le;
+#else
+		elf_ident_64_be;
+#endif
+
+	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
+		return handle_elf_aarch64(mem, size);
+
+	pr_err("Unsupported Elf format detected\n");
+	return -EINVAL;
+}
diff --git a/compel/arch/aarch64/src/lib/include/handle-elf.h b/compel/arch/aarch64/src/lib/include/handle-elf.h
new file mode 100644
index 000000000000..0f64b34cb9c5
--- /dev/null
+++ b/compel/arch/aarch64/src/lib/include/handle-elf.h
@@ -0,0 +1,11 @@ 
+#ifndef COMPEL_HANDLE_ELF_H__
+#define COMPEL_HANDLE_ELF_H__
+
+#include "elf64-types.h"
+
+#define __handle_elf				handle_elf_aarch64
+#define arch_is_machine_supported(e_machine)   (e_machine == EM_AARCH64)
+
+extern int handle_elf_aarch64(void *mem, size_t size);
+
+#endif /* COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/arch/arm/include/handle-elf.h b/compel/arch/arm/include/handle-elf.h
deleted file mode 100644
index a465f427397c..000000000000
--- a/compel/arch/arm/include/handle-elf.h
+++ /dev/null
@@ -1,11 +0,0 @@ 
-#ifndef __COMPEL_HANDLE_ELF_H__
-#define __COMPEL_HANDLE_ELF_H__
-
-#include "uapi/elf32-types.h"
-
-#define __handle_elf	handle_elf_arm
-#define arch_is_machine_supported(e_machine)   (e_machine == EM_ARM)
-
-extern int handle_elf_arm(void *mem, size_t size);
-
-#endif /* __COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/arch/arm/handle-elf.c b/compel/arch/arm/src/lib/handle-elf.c
similarity index 54%
rename from compel/arch/arm/handle-elf.c
rename to compel/arch/arm/src/lib/handle-elf.c
index 2692439c71c7..e2df0f90ddf5 100644
--- a/compel/arch/arm/handle-elf.c
+++ b/compel/arch/arm/src/lib/handle-elf.c
@@ -1,8 +1,15 @@ 
 #include <string.h>
 
-#include "piegen.h"
-#include "uapi/piegen-err.h"
+#include "uapi/compel.h"
+
 #include "handle-elf.h"
+#include "piegen.h"
+
+static const unsigned char __maybe_unused
+elf_ident_32[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
 
 int handle_binary(void *mem, size_t size)
 {
@@ -10,5 +17,5 @@  int handle_binary(void *mem, size_t size)
 		return handle_elf_arm(mem, size);
 
 	pr_err("Unsupported Elf format detected\n");
-	return -E_NOT_ELF;
+	return -EINVAL;
 }
diff --git a/compel/arch/arm/src/lib/include/handle-elf.h b/compel/arch/arm/src/lib/include/handle-elf.h
new file mode 100644
index 000000000000..e5971f37b98c
--- /dev/null
+++ b/compel/arch/arm/src/lib/include/handle-elf.h
@@ -0,0 +1,11 @@ 
+#ifndef COMPEL_HANDLE_ELF_H__
+#define COMPEL_HANDLE_ELF_H__
+
+#include "elf32-types.h"
+
+#define __handle_elf				handle_elf_arm
+#define arch_is_machine_supported(e_machine)   (e_machine == EM_ARM)
+
+extern int handle_elf_arm(void *mem, size_t size);
+
+#endif /* COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/arch/ppc64/handle-elf.c b/compel/arch/ppc64/handle-elf.c
deleted file mode 100644
index 049e3fba0e66..000000000000
--- a/compel/arch/ppc64/handle-elf.c
+++ /dev/null
@@ -1,21 +0,0 @@ 
-#include <string.h>
-
-#include "piegen.h"
-#include "uapi/piegen-err.h"
-#include "handle-elf.h"
-
-int handle_binary(void *mem, size_t size)
-{
-	const unsigned char *elf_ident =
-#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-		elf_ident_64_le;
-#else
-		elf_ident_64_be;
-#endif
-
-	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
-		return handle_elf_ppc64(mem, size);
-
-	pr_err("Unsupported Elf format detected\n");
-	return -E_NOT_ELF;
-}
diff --git a/compel/arch/ppc64/include/handle-elf.h b/compel/arch/ppc64/include/handle-elf.h
deleted file mode 100644
index b324debdf780..000000000000
--- a/compel/arch/ppc64/include/handle-elf.h
+++ /dev/null
@@ -1,12 +0,0 @@ 
-#ifndef __COMPEL_HANDLE_ELF_H__
-#define __COMPEL_HANDLE_ELF_H__
-
-#include "uapi/elf64-types.h"
-
-#define ELF_PPC64
-#define __handle_elf	handle_elf_ppc64
-#define arch_is_machine_supported(e_machine)	(e_machine == EM_PPC64)
-
-extern int handle_elf_ppc64(void *mem, size_t size);
-
-#endif /* __COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/arch/ppc64/src/lib/handle-elf.c b/compel/arch/ppc64/src/lib/handle-elf.c
new file mode 100644
index 000000000000..6491f20850ad
--- /dev/null
+++ b/compel/arch/ppc64/src/lib/handle-elf.c
@@ -0,0 +1,34 @@ 
+#include <string.h>
+
+#include "uapi/compel.h"
+
+#include "handle-elf.h"
+#include "piegen.h"
+
+static const unsigned char __maybe_unused
+elf_ident_64_le[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned char __maybe_unused
+elf_ident_64_be[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+int handle_binary(void *mem, size_t size)
+{
+	const unsigned char *elf_ident =
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+		elf_ident_64_le;
+#else
+		elf_ident_64_be;
+#endif
+
+	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
+		return handle_elf_ppc64(mem, size);
+
+	pr_err("Unsupported Elf format detected\n");
+	return -EINVAL;
+}
diff --git a/compel/arch/ppc64/src/lib/include/handle-elf.h b/compel/arch/ppc64/src/lib/include/handle-elf.h
new file mode 100644
index 000000000000..1a8217e6b8e4
--- /dev/null
+++ b/compel/arch/ppc64/src/lib/include/handle-elf.h
@@ -0,0 +1,13 @@ 
+#ifndef COMPEL_HANDLE_ELF_H__
+#define COMPEL_HANDLE_ELF_H__
+
+#include "elf64-types.h"
+
+#define ELF_PPC64
+
+#define __handle_elf				handle_elf_ppc64
+#define arch_is_machine_supported(e_machine)	(e_machine == EM_PPC64)
+
+extern int handle_elf_ppc64(void *mem, size_t size);
+
+#endif /* COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/arch/x86/handle-elf.c b/compel/arch/x86/handle-elf.c
deleted file mode 100644
index 9edb94262f70..000000000000
--- a/compel/arch/x86/handle-elf.c
+++ /dev/null
@@ -1,16 +0,0 @@ 
-#include <string.h>
-
-#include "piegen.h"
-#include "uapi/piegen-err.h"
-#include "handle-elf.h"
-
-int handle_binary(void *mem, size_t size)
-{
-	if (memcmp(mem, elf_ident_32, sizeof(elf_ident_32)) == 0)
-		return handle_elf_x86_32(mem, size);
-	else if (memcmp(mem, elf_ident_64_le, sizeof(elf_ident_64_le)) == 0)
-		return handle_elf_x86_64(mem, size);
-
-	pr_err("Unsupported Elf format detected\n");
-	return -E_NOT_ELF;
-}
diff --git a/compel/arch/x86/src/lib/handle-elf.c b/compel/arch/x86/src/lib/handle-elf.c
new file mode 100644
index 000000000000..7cfbaa1dd026
--- /dev/null
+++ b/compel/arch/x86/src/lib/handle-elf.c
@@ -0,0 +1,29 @@ 
+#include <string.h>
+
+#include "uapi/compel.h"
+
+#include "handle-elf.h"
+#include "piegen.h"
+
+static const unsigned char __maybe_unused
+elf_ident_64_le[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned char __maybe_unused
+elf_ident_32[EI_NIDENT] = {
+	0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+int handle_binary(void *mem, size_t size)
+{
+	if (memcmp(mem, elf_ident_32, sizeof(elf_ident_32)) == 0)
+		return handle_elf_x86_32(mem, size);
+	else if (memcmp(mem, elf_ident_64_le, sizeof(elf_ident_64_le)) == 0)
+		return handle_elf_x86_64(mem, size);
+
+	pr_err("Unsupported Elf format detected\n");
+	return -EINVAL;
+}
diff --git a/compel/arch/x86/include/handle-elf.h b/compel/arch/x86/src/lib/include/handle-elf.h
similarity index 59%
rename from compel/arch/x86/include/handle-elf.h
rename to compel/arch/x86/src/lib/include/handle-elf.h
index eea94d4633ab..bfc935a4e751 100644
--- a/compel/arch/x86/include/handle-elf.h
+++ b/compel/arch/x86/src/lib/include/handle-elf.h
@@ -1,18 +1,22 @@ 
-#ifndef __COMPEL_HANDLE_ELF_H__
-#define __COMPEL_HANDLE_ELF_H__
+#ifndef COMPEL_HANDLE_ELF_H__
+#define COMPEL_HANDLE_ELF_H__
 
 #ifdef CONFIG_X86_32
 
-#include "uapi/elf32-types.h"
+#include "elf32-types.h"
+
 #define ELF_X86_32
-#define __handle_elf	handle_elf_x86_32
+
+#define __handle_elf				handle_elf_x86_32
 #define arch_is_machine_supported(e_machine)	(e_machine == EM_386)
 
 #else /* CONFIG_X86_64 */
 
-#include "uapi/elf64-types.h"
+#include "elf64-types.h"
+
 #define ELF_X86_64
-#define __handle_elf	handle_elf_x86_64
+
+#define __handle_elf				handle_elf_x86_64
 #define arch_is_machine_supported(e_machine)	(e_machine == EM_X86_64)
 
 #endif
@@ -20,4 +24,4 @@ 
 extern int handle_elf_x86_32(void *mem, size_t size);
 extern int handle_elf_x86_64(void *mem, size_t size);
 
-#endif /* __COMPEL_HANDLE_ELF_H__ */
+#endif /* COMPEL_HANDLE_ELF_H__ */
diff --git a/compel/include/elf32-types.h b/compel/include/elf32-types.h
new file mode 100644
index 000000000000..b516ba17ea55
--- /dev/null
+++ b/compel/include/elf32-types.h
@@ -0,0 +1,16 @@ 
+#ifndef COMPEL_ELF32_TYPES_H__
+#define COMPEL_ELF32_TYPES_H__
+
+#define Elf_Ehdr	Elf32_Ehdr
+#define Elf_Shdr	Elf32_Shdr
+#define Elf_Sym		Elf32_Sym
+#define Elf_Rel		Elf32_Rel
+#define Elf_Rela	Elf32_Rela
+
+#define ELF_ST_TYPE	ELF32_ST_TYPE
+#define ELF_ST_BIND	ELF32_ST_BIND
+
+#define ELF_R_SYM	ELF32_R_SYM
+#define ELF_R_TYPE	ELF32_R_TYPE
+
+#endif /* COMPEL_ELF32_TYPES_H__ */
diff --git a/compel/include/elf64-types.h b/compel/include/elf64-types.h
new file mode 100644
index 000000000000..c4d5f1c72aa2
--- /dev/null
+++ b/compel/include/elf64-types.h
@@ -0,0 +1,16 @@ 
+#ifndef COMPEL_ELF64_TYPES_H__
+#define COMPEL_ELF64_TYPES_H__
+
+#define Elf_Ehdr	Elf64_Ehdr
+#define Elf_Shdr	Elf64_Shdr
+#define Elf_Sym		Elf64_Sym
+#define Elf_Rel		Elf64_Rel
+#define Elf_Rela	Elf64_Rela
+
+#define ELF_ST_TYPE	ELF64_ST_TYPE
+#define ELF_ST_BIND	ELF64_ST_BIND
+
+#define ELF_R_SYM	ELF64_R_SYM
+#define ELF_R_TYPE	ELF64_R_TYPE
+
+#endif /* COMPEL_ELF64_TYPES_H__ */
diff --git a/compel/include/piegen.h b/compel/include/piegen.h
index 736152a2c475..f1ed2e13d309 100644
--- a/compel/include/piegen.h
+++ b/compel/include/piegen.h
@@ -1,5 +1,5 @@ 
-#ifndef __ELFTIL_H__
-#define __ELFTIL_H__
+#ifndef COMPEL_PIEGEN_H__
+#define COMPEL_PIEGEN_H__
 
 #include <stdio.h>
 #include <unistd.h>
@@ -51,20 +51,4 @@  do {										\
 
 extern int handle_binary(void *mem, size_t size);
 
-static const unsigned char __maybe_unused
-elf_ident_32[EI_NIDENT] = {
-	0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-static const unsigned char __maybe_unused
-elf_ident_64_le[EI_NIDENT] = {
-	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-static const unsigned char __maybe_unused
-elf_ident_64_be[EI_NIDENT] = {
-	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-#endif /* __ELFTIL_H__ */
+#endif /* COMPEL_PIEGEN_H__ */
diff --git a/compel/include/uapi/elf32-types.h b/compel/include/uapi/elf32-types.h
deleted file mode 100644
index 51bf4a24a59b..000000000000
--- a/compel/include/uapi/elf32-types.h
+++ /dev/null
@@ -1,20 +0,0 @@ 
-#ifndef __COMPEL_ELF32_TYPES_H__
-#define __COMPEL_ELF32_TYPES_H__
-
-#define Ehdr_t		Elf32_Ehdr
-#define Shdr_t		Elf32_Shdr
-#define Sym_t		Elf32_Sym
-#define Rel_t		Elf32_Rel
-#define Rela_t		Elf32_Rela
-
-#define Off_t		Elf32_Off
-#define Word_t		Elf32_Word
-#define Half_t		Elf32_Half
-
-#define ELF_ST_TYPE	ELF32_ST_TYPE
-#define ELF_ST_BIND	ELF32_ST_BIND
-
-#define ELF_R_SYM	ELF32_R_SYM
-#define ELF_R_TYPE	ELF32_R_TYPE
-
-#endif /* __COMPEL_ELF32_TYPES_H__ */
diff --git a/compel/include/uapi/elf64-types.h b/compel/include/uapi/elf64-types.h
deleted file mode 100644
index d4d6f6f163da..000000000000
--- a/compel/include/uapi/elf64-types.h
+++ /dev/null
@@ -1,20 +0,0 @@ 
-#ifndef __COMPEL_ELF64_TYPES_H__
-#define __COMPEL_ELF64_TYPES_H__
-
-#define Ehdr_t		Elf64_Ehdr
-#define Shdr_t		Elf64_Shdr
-#define Sym_t		Elf64_Sym
-#define Rel_t		Elf64_Rel
-#define Rela_t		Elf64_Rela
-
-#define Off_t		Elf64_Off
-#define Word_t		Elf64_Word
-#define Half_t		Elf64_Half
-
-#define ELF_ST_TYPE	ELF64_ST_TYPE
-#define ELF_ST_BIND	ELF64_ST_BIND
-
-#define ELF_R_SYM	ELF64_R_SYM
-#define ELF_R_TYPE	ELF64_R_TYPE
-
-#endif /* __COMPEL_ELF64_TYPES_H__ */
diff --git a/compel/include/uapi/piegen-err.h b/compel/include/uapi/piegen-err.h
deleted file mode 100644
index f8a2349a1d26..000000000000
--- a/compel/include/uapi/piegen-err.h
+++ /dev/null
@@ -1,10 +0,0 @@ 
-#ifndef __PIEGEN_ERR_H__
-#define __PIEGEN_ERR_H__
-
-/* Error numbers for piegen. Success is 0, so errors should differ. */
-#define E_UNKNOWN	1
-#define E_NOMEM		2
-#define E_NOT_ELF	3
-#define E_NO_STR_SEC	4
-
-#endif /* __PIEGEN_ERR_H__ */
diff --git a/compel/handle-elf-32.c b/compel/src/lib/handle-elf-32.c
similarity index 100%
rename from compel/handle-elf-32.c
rename to compel/src/lib/handle-elf-32.c
diff --git a/compel/handle-elf.c b/compel/src/lib/handle-elf.c
similarity index 88%
rename from compel/handle-elf.c
rename to compel/src/lib/handle-elf.c
index 64616f978d87..c9d9a4955e35 100644
--- a/compel/handle-elf.c
+++ b/compel/src/lib/handle-elf.c
@@ -11,16 +11,15 @@ 
 #include <sys/stat.h>
 #include <sys/mman.h>
 
+#include "uapi/compel.h"
+
 #include "asm-generic/int.h"
 
-#include "uapi/piegen-err.h"
-#include "piegen.h"
 #include "handle-elf.h"
+#include "piegen.h"
 
-/* TODO: merge with util-vdso.c part in criu header */
 /* Check if pointer is out-of-bound */
-static bool
-__ptr_oob(const uintptr_t ptr, const uintptr_t start, const size_t size)
+static bool __ptr_oob(const uintptr_t ptr, const uintptr_t start, const size_t size)
 {
 	uintptr_t end = start + size;
 
@@ -29,7 +28,7 @@  __ptr_oob(const uintptr_t ptr, const uintptr_t start, const size_t size)
 
 /* Check if pointed structure's end is out-of-bound */
 static bool __ptr_struct_end_oob(const uintptr_t ptr, const size_t struct_size,
-				const uintptr_t start, const size_t size)
+				 const uintptr_t start, const size_t size)
 {
 	/* the last byte of the structure should be inside [begin, end) */
 	return __ptr_oob(ptr + struct_size - 1, start, size);
@@ -37,7 +36,7 @@  static bool __ptr_struct_end_oob(const uintptr_t ptr, const size_t struct_size,
 
 /* Check if pointed structure is out-of-bound */
 static bool __ptr_struct_oob(const uintptr_t ptr, const size_t struct_size,
-				const uintptr_t start, const size_t size)
+			     const uintptr_t start, const size_t size)
 {
 	return __ptr_oob(ptr, start, size) ||
 		__ptr_struct_end_oob(ptr, struct_size, start, size);
@@ -73,7 +72,8 @@  static int do_relative_toc(long value, uint16_t *location,
         }
 
 	if ((~mask & 0xffff) & value) {
-		pr_err("bad TOC16 relocation (%ld) (0x%lx)\n", value, (~mask & 0xffff) & value);
+		pr_err("bad TOC16 relocation (%ld) (0x%lx)\n",
+		       value, (~mask & 0xffff) & value);
 		return -1;
 	}
 
@@ -82,7 +82,7 @@  static int do_relative_toc(long value, uint16_t *location,
 }
 #endif
 
-static bool is_header_supported(Ehdr_t *hdr)
+static bool is_header_supported(Elf_Ehdr *hdr)
 {
 	if (!arch_is_machine_supported(hdr->e_machine))
 		return false;
@@ -91,11 +91,11 @@  static bool is_header_supported(Ehdr_t *hdr)
 	return true;
 }
 
-static const char *get_strings_section(Ehdr_t *hdr, uintptr_t mem, size_t size)
+static const char *get_strings_section(Elf_Ehdr *hdr, uintptr_t mem, size_t size)
 {
 	size_t sec_table_size = ((size_t) hdr->e_shentsize) * hdr->e_shnum;
 	uintptr_t sec_table = mem + hdr->e_shoff;
-	Shdr_t *secstrings_hdr;
+	Elf_Shdr *secstrings_hdr;
 	uintptr_t addr;
 
 	if (__ptr_struct_oob(sec_table, sec_table_size, mem, size)) {
@@ -109,7 +109,7 @@  static const char *get_strings_section(Ehdr_t *hdr, uintptr_t mem, size_t size)
 	 * (size of section header * index of string section header)
 	 */
 	addr = sec_table + ((size_t) hdr->e_shentsize) * hdr->e_shstrndx;
-	if (__ptr_struct_oob(addr, sizeof(Shdr_t),
+	if (__ptr_struct_oob(addr, sizeof(Elf_Shdr),
 			sec_table, sec_table + sec_table_size)) {
 		pr_err("String section header @%#zx is out of [%#zx, %#zx)\n",
 			addr, sec_table, sec_table + sec_table_size);
@@ -128,51 +128,55 @@  static const char *get_strings_section(Ehdr_t *hdr, uintptr_t mem, size_t size)
 	return (void*)addr;
 }
 
+/*
+ * This name @__handle_elf get renamed into
+ * @handle_elf_ppc64 or say @handle_elf_x86_64
+ * depending on the architecture it's compiled
+ * under.
+ */
 int __handle_elf(void *mem, size_t size)
 {
 	const char *symstrings = NULL;
-	Shdr_t *symtab_hdr = NULL;
-	Sym_t *symbols = NULL;
-	Ehdr_t *hdr = mem;
+	Elf_Shdr *symtab_hdr = NULL;
+	Elf_Sym *symbols = NULL;
+	Elf_Ehdr *hdr = mem;
 
-	Shdr_t *strtab_hdr = NULL;
-	Shdr_t **sec_hdrs = NULL;
+	Elf_Shdr *strtab_hdr = NULL;
+	Elf_Shdr **sec_hdrs = NULL;
 	const char *secstrings;
 
 	size_t i, k, nr_gotpcrel = 0;
 #ifdef ELF_PPC64
 	s64 toc_offset = 0;
 #endif
-	int ret = -E_UNKNOWN;
+	int ret = -EINVAL;
 
 	pr_debug("Header\n");
 	pr_debug("------------\n");
 	pr_debug("\ttype 0x%x machine 0x%x version 0x%x\n",
-		 (unsigned)hdr->e_type, (unsigned)hdr->e_machine, (unsigned)hdr->e_version);
+		 (unsigned)hdr->e_type, (unsigned)hdr->e_machine,
+		 (unsigned)hdr->e_version);
 
 	if (!is_header_supported(hdr)) {
 		pr_err("Unsupported header detected\n");
-		ret = -E_NOT_ELF;
 		goto err;
 	}
 
 	sec_hdrs = malloc(sizeof(*sec_hdrs) * hdr->e_shnum);
 	if (!sec_hdrs) {
 		pr_err("No memory for section headers\n");
-		ret = -E_NOMEM;
+		ret = -ENOMEM;
 		goto err;
 	}
 
 	secstrings = get_strings_section(hdr, (uintptr_t)mem, size);
-	if (!secstrings) {
-		ret = -E_NO_STR_SEC;
+	if (!secstrings)
 		goto err;
-	}
 
 	pr_debug("Sections\n");
 	pr_debug("------------\n");
 	for (i = 0; i < hdr->e_shnum; i++) {
-		Shdr_t *sh = mem + hdr->e_shoff + hdr->e_shentsize * i;
+		Elf_Shdr *sh = mem + hdr->e_shoff + hdr->e_shentsize * i;
 		ptr_func_exit(sh);
 
 		if (sh->sh_type == SHT_SYMTAB)
@@ -221,9 +225,9 @@  int __handle_elf(void *mem, size_t size)
 	pr_out("#include \"%s/types.h\"\n", opts.uapi_dir);
 
 	for (i = 0; i < symtab_hdr->sh_size / symtab_hdr->sh_entsize; i++) {
-		Sym_t *sym = &symbols[i];
+		Elf_Sym *sym = &symbols[i];
 		const char *name;
-		Shdr_t *sh_src;
+		Elf_Shdr *sh_src;
 
 		ptr_func_exit(sym);
 		name = &symstrings[sym->st_name];
@@ -245,7 +249,8 @@  int __handle_elf(void *mem, size_t size)
 #endif
 			if (strncmp(name, "__export", 8))
 				continue;
-			if ((sym->st_shndx && sym->st_shndx < hdr->e_shnum) || sym->st_shndx == SHN_ABS) {
+			if ((sym->st_shndx && sym->st_shndx < hdr->e_shnum) ||
+			    sym->st_shndx == SHN_ABS) {
 				if (sym->st_shndx == SHN_ABS) {
 					sh_src = NULL;
 				} else {
@@ -254,7 +259,8 @@  int __handle_elf(void *mem, size_t size)
 				}
 				pr_out("#define %s%s 0x%lx\n",
 				       opts.prefix_name, name,
-				       (unsigned long)(sym->st_value + (sh_src ? sh_src->sh_addr : 0)));
+				       (unsigned long)(sym->st_value +
+						       (sh_src ? sh_src->sh_addr : 0)));
 			}
 		}
 	}
@@ -264,8 +270,8 @@  int __handle_elf(void *mem, size_t size)
 	pr_debug("Relocations\n");
 	pr_debug("------------\n");
 	for (i = 0; i < hdr->e_shnum; i++) {
-		Shdr_t *sh = sec_hdrs[i];
-		Shdr_t *sh_rel;
+		Elf_Shdr *sh = sec_hdrs[i];
+		Elf_Shdr *sh_rel;
 
 		if (sh->sh_type != SHT_REL && sh->sh_type != SHT_RELA)
 			continue;
@@ -283,11 +289,11 @@  int __handle_elf(void *mem, size_t size)
 			unsigned long place;
 			const char *name;
 			void *where;
-			Sym_t *sym;
+			Elf_Sym *sym;
 
 			union {
-				Rel_t rel;
-				Rela_t rela;
+				Elf_Rel rel;
+				Elf_Rela rela;
 			} *r = mem + sh->sh_offset + sh->sh_entsize * k;
 			ptr_func_exit(r);
 
@@ -340,7 +346,7 @@  int __handle_elf(void *mem, size_t size)
 				value32 = (s32)sym->st_value;
 				value64 = (s64)sym->st_value;
 			} else {
-				Shdr_t *sh_src;
+				Elf_Shdr *sh_src;
 
 				if ((unsigned)sym->st_shndx > (unsigned)hdr->e_shnum) {
 					pr_err("Unexpected symbol section index %u/%u\n",
@@ -355,7 +361,9 @@  int __handle_elf(void *mem, size_t size)
 			}
 
 #ifdef ELF_PPC64
-/* Snippet from the OpenPOWER ABI for Linux Supplement:
+/*
+ * Snippet from the OpenPOWER ABI for Linux Supplement:
+ *
  * The OpenPOWER ABI uses the three most-significant bits in the symbol
  * st_other field specifies the number of instructions between a function's
  * global entry point and local entry point. The global entry point is used
@@ -363,6 +371,7 @@  int __handle_elf(void *mem, size_t size)
  * local entry point is used when r2 is known to already be valid for the
  * function. A value of zero in these bits asserts that the function does
  * not use r2.
+ *
  * The st_other values have the following meanings:
  * 0 and 1, the local and global entry points are the same.
  * 2, the local entry point is at 1 instruction past the global entry point.
@@ -407,7 +416,7 @@  int __handle_elf(void *mem, size_t size)
 			case R_PPC64_ADDR32:
 				pr_debug("\t\t\tR_PPC64_ADDR32 at 0x%-4lx val 0x%x\n",
 					 place, (unsigned int)(value32 + addend32));
-				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_INT, "
+				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_INT, "
 				       " .addend = %-8d, .value = 0x%-16x, "
 				       "}, /* R_PPC64_ADDR32 */\n",
 				       (unsigned int) place,  addend32, value32);
@@ -417,7 +426,7 @@  int __handle_elf(void *mem, size_t size)
 			case R_PPC64_REL64:
 				pr_debug("\t\t\tR_PPC64_ADDR64 at 0x%-4lx val 0x%lx\n",
 					 place, value64 + addend64);
-				pr_out("\t{ .offset = 0x%-8x, .type = PIEGEN_TYPE_LONG,"
+				pr_out("\t{ .offset = 0x%-8x, .type = COMPEL_TYPE_LONG,"
 				       " .addend = %-8ld, .value = 0x%-16lx, "
 				       "}, /* R_PPC64_ADDR64 */\n",
 				       (unsigned int) place, (long)addend64, (long)value64);
@@ -477,13 +486,13 @@  int __handle_elf(void *mem, size_t size)
 			case R_X86_64_32: /* Symbol + Addend (4 bytes) */
 			case R_X86_64_32S: /* Symbol + Addend (4 bytes) */
 				pr_debug("\t\t\t\tR_X86_64_32       at 0x%-4lx val 0x%x\n", place, value32);
-				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_INT, "
+				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_INT, "
 				       ".addend = %-8d, .value = 0x%-16x, }, /* R_X86_64_32 */\n",
 				       (unsigned int)place, addend32, value32);
 				break;
 			case R_X86_64_64: /* Symbol + Addend (8 bytes) */
 				pr_debug("\t\t\t\tR_X86_64_64       at 0x%-4lx val 0x%lx\n", place, (long)value64);
-				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_LONG, "
+				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_LONG, "
 				       ".addend = %-8ld, .value = 0x%-16lx, }, /* R_X86_64_64 */\n",
 				       (unsigned int)place, (long)addend64, (long)value64);
 				break;
@@ -503,7 +512,7 @@  int __handle_elf(void *mem, size_t size)
 				break;
 			case R_X86_64_GOTPCREL: /* SymbolOffsetInGot + GOT + Addend - Place  (4 bytes) */
 				pr_debug("\t\t\t\tR_X86_64_GOTPCREL at 0x%-4lx val 0x%x\n", place, value32);
-				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_LONG | PIEGEN_TYPE_GOTPCREL, "
+				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_LONG | COMPEL_TYPE_GOTPCREL, "
 				       ".addend = %-8d, .value = 0x%-16x, }, /* R_X86_64_GOTPCREL */\n",
 				       (unsigned int)place, addend32, value32);
 				nr_gotpcrel++;
@@ -513,7 +522,7 @@  int __handle_elf(void *mem, size_t size)
 #ifdef ELF_X86_32
 			case R_386_32: /* Symbol + Addend */
 				pr_debug("\t\t\t\tR_386_32   at 0x%-4lx val 0x%x\n", place, value32 + addend32);
-				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_INT, "
+				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_INT, "
 				       ".addend = %-4d, .value = 0x%x, },\n",
 				       (unsigned int)place, addend32, value32);
 				break;
@@ -538,8 +547,8 @@  int __handle_elf(void *mem, size_t size)
 
 	pr_out("static __maybe_unused const char %s[] = {\n\t", opts.stream_name);
 
-	for (i=0, k=0; i < hdr->e_shnum; i++) {
-		Shdr_t *sh = sec_hdrs[i];
+	for (i = 0, k = 0; i < hdr->e_shnum; i++) {
+		Elf_Shdr *sh = sec_hdrs[i];
 		unsigned char *shdata;
 		size_t j;
 
@@ -547,19 +556,19 @@  int __handle_elf(void *mem, size_t size)
 			continue;
 
 		shdata =  mem + sh->sh_offset;
-		pr_debug("Copying section '%s'\n" \
+		pr_debug("Copying section '%s'\n"
 			 "\tstart:0x%lx (gap:0x%lx) size:0x%lx\n",
 			 &secstrings[sh->sh_name], (unsigned long) sh->sh_addr,
 			 (unsigned long)(sh->sh_addr - k), (unsigned long) sh->sh_size);
 
 		/* write 0 in the gap between the 2 sections */
-		for (;k < sh->sh_addr; k++) {
+		for (; k < sh->sh_addr; k++) {
 			if (k && (k % 8) == 0)
 				pr_out("\n\t");
 			pr_out("0x00,");
 		}
 
-		for (j=0; j < sh->sh_size; j++, k++) {
+		for (j = 0; j < sh->sh_size; j++, k++) {
 			if (k && (k % 8) == 0)
 				pr_out("\n\t");
 			pr_out("%#02x,", shdata[j]);
diff --git a/compel/main.c b/compel/src/main.c
similarity index 99%
rename from compel/main.c
rename to compel/src/main.c
index 6f117cded569..ee6ccd53acdd 100644
--- a/compel/main.c
+++ b/compel/src/main.c
@@ -12,6 +12,7 @@ 
 #include <sys/stat.h>
 #include <sys/mman.h>
 
+#include "version.h"
 #include "piegen.h"
 
 static const char compel_cflags_pie[] = "-fpie -Wa,--noexecstack -fno-stack-protector";

Comments

Pavel Emelianov Sept. 1, 2016, 9:27 a.m.
compel: Initial commit :\ Haven't we had this one already?

Also -- turn on rename detection when generating patch, please, and resend.

On 08/31/2016 04:48 PM, Cyrill Gorcunov wrote:
> Here we rather suffle source code into directories
> preparing ground for future work.
> 
> Note: cross-compile won't work for a while.
> 
> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
> ---
>  Makefile                                           |   8 +-
>  Makefile.compel                                    |  35 +++++++
>  compel/Makefile                                    |  47 ++++------
>  compel/arch/aarch64/handle-elf.c                   |  21 -----
>  compel/arch/aarch64/include/handle-elf.h           |  11 ---
>  compel/arch/aarch64/src/lib/handle-elf.c           |  34 +++++++
>  compel/arch/aarch64/src/lib/include/handle-elf.h   |  11 +++
>  compel/arch/arm/include/handle-elf.h               |  11 ---
>  compel/arch/arm/{ => src/lib}/handle-elf.c         |  13 ++-
>  compel/arch/arm/src/lib/include/handle-elf.h       |  11 +++
>  compel/arch/ppc64/handle-elf.c                     |  21 -----
>  compel/arch/ppc64/include/handle-elf.h             |  12 ---
>  compel/arch/ppc64/src/lib/handle-elf.c             |  34 +++++++
>  compel/arch/ppc64/src/lib/include/handle-elf.h     |  13 +++
>  compel/arch/x86/handle-elf.c                       |  16 ----
>  compel/arch/x86/src/lib/handle-elf.c               |  29 ++++++
>  compel/arch/x86/{ => src/lib}/include/handle-elf.h |  18 ++--
>  compel/include/elf32-types.h                       |  16 ++++
>  compel/include/elf64-types.h                       |  16 ++++
>  compel/include/piegen.h                            |  22 +----
>  compel/include/uapi/elf32-types.h                  |  20 ----
>  compel/include/uapi/elf64-types.h                  |  20 ----
>  compel/include/uapi/piegen-err.h                   |  10 --
>  compel/{ => src/lib}/handle-elf-32.c               |   0
>  compel/{ => src/lib}/handle-elf.c                  | 103 +++++++++++----------
>  compel/{ => src}/main.c                            |   1 +
>  26 files changed, 299 insertions(+), 254 deletions(-)
>  create mode 100644 Makefile.compel
>  delete mode 100644 compel/arch/aarch64/handle-elf.c
>  delete mode 100644 compel/arch/aarch64/include/handle-elf.h
>  create mode 100644 compel/arch/aarch64/src/lib/handle-elf.c
>  create mode 100644 compel/arch/aarch64/src/lib/include/handle-elf.h
>  delete mode 100644 compel/arch/arm/include/handle-elf.h
>  rename compel/arch/arm/{ => src/lib}/handle-elf.c (54%)
>  create mode 100644 compel/arch/arm/src/lib/include/handle-elf.h
>  delete mode 100644 compel/arch/ppc64/handle-elf.c
>  delete mode 100644 compel/arch/ppc64/include/handle-elf.h
>  create mode 100644 compel/arch/ppc64/src/lib/handle-elf.c
>  create mode 100644 compel/arch/ppc64/src/lib/include/handle-elf.h
>  delete mode 100644 compel/arch/x86/handle-elf.c
>  create mode 100644 compel/arch/x86/src/lib/handle-elf.c
>  rename compel/arch/x86/{ => src/lib}/include/handle-elf.h (59%)
>  create mode 100644 compel/include/elf32-types.h
>  create mode 100644 compel/include/elf64-types.h
>  delete mode 100644 compel/include/uapi/elf32-types.h
>  delete mode 100644 compel/include/uapi/elf64-types.h
>  delete mode 100644 compel/include/uapi/piegen-err.h
>  rename compel/{ => src/lib}/handle-elf-32.c (100%)
>  rename compel/{ => src/lib}/handle-elf.c (88%)
>  rename compel/{ => src}/main.c (99%)
> 
> diff --git a/Makefile b/Makefile
> index f850507f014e..c03a0b439142 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -181,12 +181,9 @@ $(eval $(call gen-built-in,images))
>  
>  .PHONY: .FORCE
>  
> +#
>  # Compel get used by CRIU, build it earlier
> -compel/%: .FORCE
> -	$(Q) $(MAKE) $(build)=compel $@
> -
> -test/compel/%: .FORCE
> -	$(Q) $(MAKE) $(build)=compel $@
> +include Makefile.compel
>  
>  #
>  # CRIU building done in own directory
> @@ -235,6 +232,7 @@ mrproper: subclean
>  	$(Q) $(MAKE) $(build)=criu $@
>  	$(Q) $(MAKE) $(build)=compel $@
>  	$(Q) $(RM) $(VERSION_HEADER)
> +	$(Q) $(RM) $(COMPEL_VERSION_HEADER)
>  	$(Q) $(RM) cscope.*
>  	$(Q) $(RM) tags TAGS
>  .PHONY: mrproper
> diff --git a/Makefile.compel b/Makefile.compel
> new file mode 100644
> index 000000000000..2fd410ef7628
> --- /dev/null
> +++ b/Makefile.compel
> @@ -0,0 +1,35 @@
> +COMPEL_VERSION_HEADER	:= compel/include/version.h
> +
> +$(COMPEL_VERSION_HEADER): $(SRC_DIR)/Makefile.versions
> +	$(call msg-gen, $(COMPEL_VERSION_HEADER))
> +	$(E) "  GEN     " $@
> +	$(Q) echo "/* Autogenerated, do not edit */"	 			 	 > $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#ifndef COMPEL_SO_VERSION_H__"					>> $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#define COMPEL_SO_VERSION_H__"					>> $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#define COMPEL_SO_VERSION \"$(COMPEL_SO_VERSION)\""			>> $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#define COMPEL_SO_VERSION_MAJOR " $(COMPEL_SO_VERSION_MAJOR)		>> $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#define COMPEL_SO_VERSION_MINOR " $(COMPEL_SO_VERSION_MINOR)		>> $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#define COMPEL_SO_VERSION_SUBLEVEL " $(COMPEL_SO_VERSION_SUBLEVEL)	>> $(COMPEL_VERSION_HEADER)
> +	$(Q) echo "#endif /* COMPEL_SO_VERSION_H__ */"					>> $(COMPEL_VERSION_HEADER)
> +
> +#
> +# Compel itself.
> +compel/%: $(COMPEL_VERSION_HEADER) .FORCE
> +	$(Q) $(MAKE) $(build)=compel $@
> +
> +#
> +# Plugins
> +compel/plugins/%: $(COMPEL_VERSION_HEADER) .FORCE
> +	$(Q) $(MAKE) $(build)=compel/plugins $@
> +
> +compel/compel: compel/built-in.o compel/lib.a $(COMPEL_VERSION_HEADER)
> +	$(call msg-link, $@)
> +	$(Q) $(CC) $(CFLAGS) $^ $(WRAPFLAGS) $(LDFLAGS) -rdynamic -o $@
> +
> +#
> +# And compel library.
> +LIBCOMPEL_SO		:= libcompel.so
> +LIBCOMPEL_SO_CFLAGS	+= $(CFLAGS) -rdynamic -Wl,-soname,$(LIBCOMPEL_SO).$(COMPEL_SO_VERSION_MAJOR)
> +compel/$(LIBCOMPEL_SO): compel/lib.a
> +	$(call msg-link, $@)
> +	$(Q) $(CC) -shared $(LIBCOMPEL_SO_CFLAGS) -o $@ -Wl,--whole-archive $^ -Wl,--no-whole-archive $(LDFLAGS)
> diff --git a/compel/Makefile b/compel/Makefile
> index 5166e9318196..52eb27ea72f4 100644
> --- a/compel/Makefile
> +++ b/compel/Makefile
> @@ -1,38 +1,23 @@
>  include $(SRC_DIR)/Makefile.versions
>  
> -ccflags-y	+= -iquote criu/include
> -ccflags-y	+= -iquote compel/include
> -ccflags-y	+= -iquote compel/arch/$(ARCH)/include
> -ccflags-y	+= -DCOMPEL_VERSION=\"$(COMPEL_SO_VERSION_MAJOR).$(COMPEL_SO_VERSION_MINOR)\"
> -
> -host-ccflags-y	+= $(filter-out -pg $(CFLAGS-GCOV),$(ccflags-y))
> -HOSTCFLAGS	+= $(filter-out -pg $(CFLAGS-GCOV),$(WARNINGS) $(DEFINES))
> -HOSTLDFLAGS	+= $(filter-out -pg $(CFLAGS-GCOV),$(LDFLAGS))
> -HOSTCFLAGS	:= $(filter-out -DCONFIG_X86_64,$(HOSTCFLAGS))
> -export host-ccflags-y HOSTCFLAGS HOSTLDFLAGS
> -
> -hostprogs-y	+= compel
> -compel-objs	+= main.o
> -compel-objs	+= handle-elf.o
> -compel-objs	+= arch/$(ARCH)/handle-elf.o
> -
> -ifeq ($(ARCH),x86)
> -# Add -DCONFIG_X86_64 or -DCONFIG_X86_32 to HOSTCFLAGS
> -define ccflags-defines
> -        export HOSTCFLAGS_$(notdir $(1)) += -DCONFIG_X86_64
> -endef
> -$(eval $(call map,ccflags-defines,$(compel-objs)))
> +.PHONY: .FORCE
>  
> -compel-objs += handle-elf-32.o
> -export HOSTCFLAGS_handle-elf-32.o += -DCONFIG_X86_32
> -endif # ARCH == x86
> +COMPEL_SO_VERSION	:= $(COMPEL_SO_VERSION_MAJOR)$(if $(COMPEL_SO_VERSION_MINOR),.$(COMPEL_SO_VERSION_MINOR))$(if $(COMPEL_SO_VERSION_SUBLEVEL),.$(COMPEL_SO_VERSION_SUBLEVEL))
> +COMPEL_SO_VERSION_CODE	:= $(shell expr $(COMPEL_SO_VERSION_MAJOR) \* 65536 \+ $(COMPEL_SO_VERSION_MINOR) \* 256 \+ $(COMPEL_SO_VERSION_SUBLEVEL))
> +ccflags-y		+= -iquote compel/arch/$(ARCH)/src/lib/include
> +ccflags-y		+= -iquote compel/include
> +ccflags-y		+= -iquote compel/plugins/include
> +ccflags-y		+= -iquote $(SRC_DIR)/criu/include
> +ccflags-y		+= -fPIC
>  
> -.PHONY: .FORCE
> +lib-y			+= arch/$(ARCH)/src/lib/handle-elf.o
> +lib-y			+= src/lib/handle-elf.o
> +lib-y			+= src/lib/handle-elf-32.o
>  
> -export compel-objs
> -test/compel/%: .FORCE
> -	$(Q) $(MAKE) $(build)=test/compel $@
> +obj-y			+= src/main.o
>  
> -test: test/compel/test_handle_binary
> +CFLAGS_handle-elf-32.o += -UCONFIG_X86_64 -DCONFIG_X86_32
> +CFLAGS_handle-elf-32.d += -UCONFIG_X86_64 -DCONFIG_X86_32
>  
> -.PHONY: test
> +cleanup-y		+= compel/compel
> +cleanup-y		+= compel/libcompel.so
> diff --git a/compel/arch/aarch64/handle-elf.c b/compel/arch/aarch64/handle-elf.c
> deleted file mode 100644
> index bbd4bf1b0369..000000000000
> --- a/compel/arch/aarch64/handle-elf.c
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -#include <string.h>
> -
> -#include "piegen.h"
> -#include "uapi/piegen-err.h"
> -#include "handle-elf.h"
> -
> -int handle_binary(void *mem, size_t size)
> -{
> -	const unsigned char *elf_ident =
> -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> -		elf_ident_64_le;
> -#else
> -		elf_ident_64_be;
> -#endif
> -
> -	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
> -		return handle_elf_aarch64(mem, size);
> -
> -	pr_err("Unsupported Elf format detected\n");
> -	return -E_NOT_ELF;
> -}
> diff --git a/compel/arch/aarch64/include/handle-elf.h b/compel/arch/aarch64/include/handle-elf.h
> deleted file mode 100644
> index 7d7bfb7b3ade..000000000000
> --- a/compel/arch/aarch64/include/handle-elf.h
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -#ifndef __COMPEL_HANDLE_ELF_H__
> -#define __COMPEL_HANDLE_ELF_H__
> -
> -#include "uapi/elf64-types.h"
> -
> -#define __handle_elf	handle_elf_aarch64
> -#define arch_is_machine_supported(e_machine)   (e_machine == EM_AARCH64)
> -
> -extern int handle_elf_aarch64(void *mem, size_t size);
> -
> -#endif /* __COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/arch/aarch64/src/lib/handle-elf.c b/compel/arch/aarch64/src/lib/handle-elf.c
> new file mode 100644
> index 000000000000..633a382cc2da
> --- /dev/null
> +++ b/compel/arch/aarch64/src/lib/handle-elf.c
> @@ -0,0 +1,34 @@
> +#include <string.h>
> +
> +#include "uapi/compel.h"
> +
> +#include "handle-elf.h"
> +#include "piegen.h"
> +
> +static const unsigned char __maybe_unused
> +elf_ident_64_le[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
> +
> +static const unsigned char __maybe_unused
> +elf_ident_64_be[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
> +
> +int handle_binary(void *mem, size_t size)
> +{
> +	const unsigned char *elf_ident =
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +		elf_ident_64_le;
> +#else
> +		elf_ident_64_be;
> +#endif
> +
> +	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
> +		return handle_elf_aarch64(mem, size);
> +
> +	pr_err("Unsupported Elf format detected\n");
> +	return -EINVAL;
> +}
> diff --git a/compel/arch/aarch64/src/lib/include/handle-elf.h b/compel/arch/aarch64/src/lib/include/handle-elf.h
> new file mode 100644
> index 000000000000..0f64b34cb9c5
> --- /dev/null
> +++ b/compel/arch/aarch64/src/lib/include/handle-elf.h
> @@ -0,0 +1,11 @@
> +#ifndef COMPEL_HANDLE_ELF_H__
> +#define COMPEL_HANDLE_ELF_H__
> +
> +#include "elf64-types.h"
> +
> +#define __handle_elf				handle_elf_aarch64
> +#define arch_is_machine_supported(e_machine)   (e_machine == EM_AARCH64)
> +
> +extern int handle_elf_aarch64(void *mem, size_t size);
> +
> +#endif /* COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/arch/arm/include/handle-elf.h b/compel/arch/arm/include/handle-elf.h
> deleted file mode 100644
> index a465f427397c..000000000000
> --- a/compel/arch/arm/include/handle-elf.h
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -#ifndef __COMPEL_HANDLE_ELF_H__
> -#define __COMPEL_HANDLE_ELF_H__
> -
> -#include "uapi/elf32-types.h"
> -
> -#define __handle_elf	handle_elf_arm
> -#define arch_is_machine_supported(e_machine)   (e_machine == EM_ARM)
> -
> -extern int handle_elf_arm(void *mem, size_t size);
> -
> -#endif /* __COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/arch/arm/handle-elf.c b/compel/arch/arm/src/lib/handle-elf.c
> similarity index 54%
> rename from compel/arch/arm/handle-elf.c
> rename to compel/arch/arm/src/lib/handle-elf.c
> index 2692439c71c7..e2df0f90ddf5 100644
> --- a/compel/arch/arm/handle-elf.c
> +++ b/compel/arch/arm/src/lib/handle-elf.c
> @@ -1,8 +1,15 @@
>  #include <string.h>
>  
> -#include "piegen.h"
> -#include "uapi/piegen-err.h"
> +#include "uapi/compel.h"
> +
>  #include "handle-elf.h"
> +#include "piegen.h"
> +
> +static const unsigned char __maybe_unused
> +elf_ident_32[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
>  
>  int handle_binary(void *mem, size_t size)
>  {
> @@ -10,5 +17,5 @@ int handle_binary(void *mem, size_t size)
>  		return handle_elf_arm(mem, size);
>  
>  	pr_err("Unsupported Elf format detected\n");
> -	return -E_NOT_ELF;
> +	return -EINVAL;
>  }
> diff --git a/compel/arch/arm/src/lib/include/handle-elf.h b/compel/arch/arm/src/lib/include/handle-elf.h
> new file mode 100644
> index 000000000000..e5971f37b98c
> --- /dev/null
> +++ b/compel/arch/arm/src/lib/include/handle-elf.h
> @@ -0,0 +1,11 @@
> +#ifndef COMPEL_HANDLE_ELF_H__
> +#define COMPEL_HANDLE_ELF_H__
> +
> +#include "elf32-types.h"
> +
> +#define __handle_elf				handle_elf_arm
> +#define arch_is_machine_supported(e_machine)   (e_machine == EM_ARM)
> +
> +extern int handle_elf_arm(void *mem, size_t size);
> +
> +#endif /* COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/arch/ppc64/handle-elf.c b/compel/arch/ppc64/handle-elf.c
> deleted file mode 100644
> index 049e3fba0e66..000000000000
> --- a/compel/arch/ppc64/handle-elf.c
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -#include <string.h>
> -
> -#include "piegen.h"
> -#include "uapi/piegen-err.h"
> -#include "handle-elf.h"
> -
> -int handle_binary(void *mem, size_t size)
> -{
> -	const unsigned char *elf_ident =
> -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> -		elf_ident_64_le;
> -#else
> -		elf_ident_64_be;
> -#endif
> -
> -	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
> -		return handle_elf_ppc64(mem, size);
> -
> -	pr_err("Unsupported Elf format detected\n");
> -	return -E_NOT_ELF;
> -}
> diff --git a/compel/arch/ppc64/include/handle-elf.h b/compel/arch/ppc64/include/handle-elf.h
> deleted file mode 100644
> index b324debdf780..000000000000
> --- a/compel/arch/ppc64/include/handle-elf.h
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -#ifndef __COMPEL_HANDLE_ELF_H__
> -#define __COMPEL_HANDLE_ELF_H__
> -
> -#include "uapi/elf64-types.h"
> -
> -#define ELF_PPC64
> -#define __handle_elf	handle_elf_ppc64
> -#define arch_is_machine_supported(e_machine)	(e_machine == EM_PPC64)
> -
> -extern int handle_elf_ppc64(void *mem, size_t size);
> -
> -#endif /* __COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/arch/ppc64/src/lib/handle-elf.c b/compel/arch/ppc64/src/lib/handle-elf.c
> new file mode 100644
> index 000000000000..6491f20850ad
> --- /dev/null
> +++ b/compel/arch/ppc64/src/lib/handle-elf.c
> @@ -0,0 +1,34 @@
> +#include <string.h>
> +
> +#include "uapi/compel.h"
> +
> +#include "handle-elf.h"
> +#include "piegen.h"
> +
> +static const unsigned char __maybe_unused
> +elf_ident_64_le[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
> +
> +static const unsigned char __maybe_unused
> +elf_ident_64_be[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
> +
> +int handle_binary(void *mem, size_t size)
> +{
> +	const unsigned char *elf_ident =
> +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
> +		elf_ident_64_le;
> +#else
> +		elf_ident_64_be;
> +#endif
> +
> +	if (memcmp(mem, elf_ident, sizeof(elf_ident_64_le)) == 0)
> +		return handle_elf_ppc64(mem, size);
> +
> +	pr_err("Unsupported Elf format detected\n");
> +	return -EINVAL;
> +}
> diff --git a/compel/arch/ppc64/src/lib/include/handle-elf.h b/compel/arch/ppc64/src/lib/include/handle-elf.h
> new file mode 100644
> index 000000000000..1a8217e6b8e4
> --- /dev/null
> +++ b/compel/arch/ppc64/src/lib/include/handle-elf.h
> @@ -0,0 +1,13 @@
> +#ifndef COMPEL_HANDLE_ELF_H__
> +#define COMPEL_HANDLE_ELF_H__
> +
> +#include "elf64-types.h"
> +
> +#define ELF_PPC64
> +
> +#define __handle_elf				handle_elf_ppc64
> +#define arch_is_machine_supported(e_machine)	(e_machine == EM_PPC64)
> +
> +extern int handle_elf_ppc64(void *mem, size_t size);
> +
> +#endif /* COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/arch/x86/handle-elf.c b/compel/arch/x86/handle-elf.c
> deleted file mode 100644
> index 9edb94262f70..000000000000
> --- a/compel/arch/x86/handle-elf.c
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -#include <string.h>
> -
> -#include "piegen.h"
> -#include "uapi/piegen-err.h"
> -#include "handle-elf.h"
> -
> -int handle_binary(void *mem, size_t size)
> -{
> -	if (memcmp(mem, elf_ident_32, sizeof(elf_ident_32)) == 0)
> -		return handle_elf_x86_32(mem, size);
> -	else if (memcmp(mem, elf_ident_64_le, sizeof(elf_ident_64_le)) == 0)
> -		return handle_elf_x86_64(mem, size);
> -
> -	pr_err("Unsupported Elf format detected\n");
> -	return -E_NOT_ELF;
> -}
> diff --git a/compel/arch/x86/src/lib/handle-elf.c b/compel/arch/x86/src/lib/handle-elf.c
> new file mode 100644
> index 000000000000..7cfbaa1dd026
> --- /dev/null
> +++ b/compel/arch/x86/src/lib/handle-elf.c
> @@ -0,0 +1,29 @@
> +#include <string.h>
> +
> +#include "uapi/compel.h"
> +
> +#include "handle-elf.h"
> +#include "piegen.h"
> +
> +static const unsigned char __maybe_unused
> +elf_ident_64_le[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
> +
> +static const unsigned char __maybe_unused
> +elf_ident_32[EI_NIDENT] = {
> +	0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00,
> +	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +};
> +
> +int handle_binary(void *mem, size_t size)
> +{
> +	if (memcmp(mem, elf_ident_32, sizeof(elf_ident_32)) == 0)
> +		return handle_elf_x86_32(mem, size);
> +	else if (memcmp(mem, elf_ident_64_le, sizeof(elf_ident_64_le)) == 0)
> +		return handle_elf_x86_64(mem, size);
> +
> +	pr_err("Unsupported Elf format detected\n");
> +	return -EINVAL;
> +}
> diff --git a/compel/arch/x86/include/handle-elf.h b/compel/arch/x86/src/lib/include/handle-elf.h
> similarity index 59%
> rename from compel/arch/x86/include/handle-elf.h
> rename to compel/arch/x86/src/lib/include/handle-elf.h
> index eea94d4633ab..bfc935a4e751 100644
> --- a/compel/arch/x86/include/handle-elf.h
> +++ b/compel/arch/x86/src/lib/include/handle-elf.h
> @@ -1,18 +1,22 @@
> -#ifndef __COMPEL_HANDLE_ELF_H__
> -#define __COMPEL_HANDLE_ELF_H__
> +#ifndef COMPEL_HANDLE_ELF_H__
> +#define COMPEL_HANDLE_ELF_H__
>  
>  #ifdef CONFIG_X86_32
>  
> -#include "uapi/elf32-types.h"
> +#include "elf32-types.h"
> +
>  #define ELF_X86_32
> -#define __handle_elf	handle_elf_x86_32
> +
> +#define __handle_elf				handle_elf_x86_32
>  #define arch_is_machine_supported(e_machine)	(e_machine == EM_386)
>  
>  #else /* CONFIG_X86_64 */
>  
> -#include "uapi/elf64-types.h"
> +#include "elf64-types.h"
> +
>  #define ELF_X86_64
> -#define __handle_elf	handle_elf_x86_64
> +
> +#define __handle_elf				handle_elf_x86_64
>  #define arch_is_machine_supported(e_machine)	(e_machine == EM_X86_64)
>  
>  #endif
> @@ -20,4 +24,4 @@
>  extern int handle_elf_x86_32(void *mem, size_t size);
>  extern int handle_elf_x86_64(void *mem, size_t size);
>  
> -#endif /* __COMPEL_HANDLE_ELF_H__ */
> +#endif /* COMPEL_HANDLE_ELF_H__ */
> diff --git a/compel/include/elf32-types.h b/compel/include/elf32-types.h
> new file mode 100644
> index 000000000000..b516ba17ea55
> --- /dev/null
> +++ b/compel/include/elf32-types.h
> @@ -0,0 +1,16 @@
> +#ifndef COMPEL_ELF32_TYPES_H__
> +#define COMPEL_ELF32_TYPES_H__
> +
> +#define Elf_Ehdr	Elf32_Ehdr
> +#define Elf_Shdr	Elf32_Shdr
> +#define Elf_Sym		Elf32_Sym
> +#define Elf_Rel		Elf32_Rel
> +#define Elf_Rela	Elf32_Rela
> +
> +#define ELF_ST_TYPE	ELF32_ST_TYPE
> +#define ELF_ST_BIND	ELF32_ST_BIND
> +
> +#define ELF_R_SYM	ELF32_R_SYM
> +#define ELF_R_TYPE	ELF32_R_TYPE
> +
> +#endif /* COMPEL_ELF32_TYPES_H__ */
> diff --git a/compel/include/elf64-types.h b/compel/include/elf64-types.h
> new file mode 100644
> index 000000000000..c4d5f1c72aa2
> --- /dev/null
> +++ b/compel/include/elf64-types.h
> @@ -0,0 +1,16 @@
> +#ifndef COMPEL_ELF64_TYPES_H__
> +#define COMPEL_ELF64_TYPES_H__
> +
> +#define Elf_Ehdr	Elf64_Ehdr
> +#define Elf_Shdr	Elf64_Shdr
> +#define Elf_Sym		Elf64_Sym
> +#define Elf_Rel		Elf64_Rel
> +#define Elf_Rela	Elf64_Rela
> +
> +#define ELF_ST_TYPE	ELF64_ST_TYPE
> +#define ELF_ST_BIND	ELF64_ST_BIND
> +
> +#define ELF_R_SYM	ELF64_R_SYM
> +#define ELF_R_TYPE	ELF64_R_TYPE
> +
> +#endif /* COMPEL_ELF64_TYPES_H__ */
> diff --git a/compel/include/piegen.h b/compel/include/piegen.h
> index 736152a2c475..f1ed2e13d309 100644
> --- a/compel/include/piegen.h
> +++ b/compel/include/piegen.h
> @@ -1,5 +1,5 @@
> -#ifndef __ELFTIL_H__
> -#define __ELFTIL_H__
> +#ifndef COMPEL_PIEGEN_H__
> +#define COMPEL_PIEGEN_H__
>  
>  #include <stdio.h>
>  #include <unistd.h>
> @@ -51,20 +51,4 @@ do {										\
>  
>  extern int handle_binary(void *mem, size_t size);
>  
> -static const unsigned char __maybe_unused
> -elf_ident_32[EI_NIDENT] = {
> -	0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00,
> -	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> -};
> -static const unsigned char __maybe_unused
> -elf_ident_64_le[EI_NIDENT] = {
> -	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00,
> -	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> -};
> -static const unsigned char __maybe_unused
> -elf_ident_64_be[EI_NIDENT] = {
> -	0x7f, 0x45, 0x4c, 0x46, 0x02, 0x02, 0x01, 0x00,
> -	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> -};
> -
> -#endif /* __ELFTIL_H__ */
> +#endif /* COMPEL_PIEGEN_H__ */
> diff --git a/compel/include/uapi/elf32-types.h b/compel/include/uapi/elf32-types.h
> deleted file mode 100644
> index 51bf4a24a59b..000000000000
> --- a/compel/include/uapi/elf32-types.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __COMPEL_ELF32_TYPES_H__
> -#define __COMPEL_ELF32_TYPES_H__
> -
> -#define Ehdr_t		Elf32_Ehdr
> -#define Shdr_t		Elf32_Shdr
> -#define Sym_t		Elf32_Sym
> -#define Rel_t		Elf32_Rel
> -#define Rela_t		Elf32_Rela
> -
> -#define Off_t		Elf32_Off
> -#define Word_t		Elf32_Word
> -#define Half_t		Elf32_Half
> -
> -#define ELF_ST_TYPE	ELF32_ST_TYPE
> -#define ELF_ST_BIND	ELF32_ST_BIND
> -
> -#define ELF_R_SYM	ELF32_R_SYM
> -#define ELF_R_TYPE	ELF32_R_TYPE
> -
> -#endif /* __COMPEL_ELF32_TYPES_H__ */
> diff --git a/compel/include/uapi/elf64-types.h b/compel/include/uapi/elf64-types.h
> deleted file mode 100644
> index d4d6f6f163da..000000000000
> --- a/compel/include/uapi/elf64-types.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __COMPEL_ELF64_TYPES_H__
> -#define __COMPEL_ELF64_TYPES_H__
> -
> -#define Ehdr_t		Elf64_Ehdr
> -#define Shdr_t		Elf64_Shdr
> -#define Sym_t		Elf64_Sym
> -#define Rel_t		Elf64_Rel
> -#define Rela_t		Elf64_Rela
> -
> -#define Off_t		Elf64_Off
> -#define Word_t		Elf64_Word
> -#define Half_t		Elf64_Half
> -
> -#define ELF_ST_TYPE	ELF64_ST_TYPE
> -#define ELF_ST_BIND	ELF64_ST_BIND
> -
> -#define ELF_R_SYM	ELF64_R_SYM
> -#define ELF_R_TYPE	ELF64_R_TYPE
> -
> -#endif /* __COMPEL_ELF64_TYPES_H__ */
> diff --git a/compel/include/uapi/piegen-err.h b/compel/include/uapi/piegen-err.h
> deleted file mode 100644
> index f8a2349a1d26..000000000000
> --- a/compel/include/uapi/piegen-err.h
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -#ifndef __PIEGEN_ERR_H__
> -#define __PIEGEN_ERR_H__
> -
> -/* Error numbers for piegen. Success is 0, so errors should differ. */
> -#define E_UNKNOWN	1
> -#define E_NOMEM		2
> -#define E_NOT_ELF	3
> -#define E_NO_STR_SEC	4
> -
> -#endif /* __PIEGEN_ERR_H__ */
> diff --git a/compel/handle-elf-32.c b/compel/src/lib/handle-elf-32.c
> similarity index 100%
> rename from compel/handle-elf-32.c
> rename to compel/src/lib/handle-elf-32.c
> diff --git a/compel/handle-elf.c b/compel/src/lib/handle-elf.c
> similarity index 88%
> rename from compel/handle-elf.c
> rename to compel/src/lib/handle-elf.c
> index 64616f978d87..c9d9a4955e35 100644
> --- a/compel/handle-elf.c
> +++ b/compel/src/lib/handle-elf.c
> @@ -11,16 +11,15 @@
>  #include <sys/stat.h>
>  #include <sys/mman.h>
>  
> +#include "uapi/compel.h"
> +
>  #include "asm-generic/int.h"
>  
> -#include "uapi/piegen-err.h"
> -#include "piegen.h"
>  #include "handle-elf.h"
> +#include "piegen.h"
>  
> -/* TODO: merge with util-vdso.c part in criu header */
>  /* Check if pointer is out-of-bound */
> -static bool
> -__ptr_oob(const uintptr_t ptr, const uintptr_t start, const size_t size)
> +static bool __ptr_oob(const uintptr_t ptr, const uintptr_t start, const size_t size)
>  {
>  	uintptr_t end = start + size;
>  
> @@ -29,7 +28,7 @@ __ptr_oob(const uintptr_t ptr, const uintptr_t start, const size_t size)
>  
>  /* Check if pointed structure's end is out-of-bound */
>  static bool __ptr_struct_end_oob(const uintptr_t ptr, const size_t struct_size,
> -				const uintptr_t start, const size_t size)
> +				 const uintptr_t start, const size_t size)
>  {
>  	/* the last byte of the structure should be inside [begin, end) */
>  	return __ptr_oob(ptr + struct_size - 1, start, size);
> @@ -37,7 +36,7 @@ static bool __ptr_struct_end_oob(const uintptr_t ptr, const size_t struct_size,
>  
>  /* Check if pointed structure is out-of-bound */
>  static bool __ptr_struct_oob(const uintptr_t ptr, const size_t struct_size,
> -				const uintptr_t start, const size_t size)
> +			     const uintptr_t start, const size_t size)
>  {
>  	return __ptr_oob(ptr, start, size) ||
>  		__ptr_struct_end_oob(ptr, struct_size, start, size);
> @@ -73,7 +72,8 @@ static int do_relative_toc(long value, uint16_t *location,
>          }
>  
>  	if ((~mask & 0xffff) & value) {
> -		pr_err("bad TOC16 relocation (%ld) (0x%lx)\n", value, (~mask & 0xffff) & value);
> +		pr_err("bad TOC16 relocation (%ld) (0x%lx)\n",
> +		       value, (~mask & 0xffff) & value);
>  		return -1;
>  	}
>  
> @@ -82,7 +82,7 @@ static int do_relative_toc(long value, uint16_t *location,
>  }
>  #endif
>  
> -static bool is_header_supported(Ehdr_t *hdr)
> +static bool is_header_supported(Elf_Ehdr *hdr)
>  {
>  	if (!arch_is_machine_supported(hdr->e_machine))
>  		return false;
> @@ -91,11 +91,11 @@ static bool is_header_supported(Ehdr_t *hdr)
>  	return true;
>  }
>  
> -static const char *get_strings_section(Ehdr_t *hdr, uintptr_t mem, size_t size)
> +static const char *get_strings_section(Elf_Ehdr *hdr, uintptr_t mem, size_t size)
>  {
>  	size_t sec_table_size = ((size_t) hdr->e_shentsize) * hdr->e_shnum;
>  	uintptr_t sec_table = mem + hdr->e_shoff;
> -	Shdr_t *secstrings_hdr;
> +	Elf_Shdr *secstrings_hdr;
>  	uintptr_t addr;
>  
>  	if (__ptr_struct_oob(sec_table, sec_table_size, mem, size)) {
> @@ -109,7 +109,7 @@ static const char *get_strings_section(Ehdr_t *hdr, uintptr_t mem, size_t size)
>  	 * (size of section header * index of string section header)
>  	 */
>  	addr = sec_table + ((size_t) hdr->e_shentsize) * hdr->e_shstrndx;
> -	if (__ptr_struct_oob(addr, sizeof(Shdr_t),
> +	if (__ptr_struct_oob(addr, sizeof(Elf_Shdr),
>  			sec_table, sec_table + sec_table_size)) {
>  		pr_err("String section header @%#zx is out of [%#zx, %#zx)\n",
>  			addr, sec_table, sec_table + sec_table_size);
> @@ -128,51 +128,55 @@ static const char *get_strings_section(Ehdr_t *hdr, uintptr_t mem, size_t size)
>  	return (void*)addr;
>  }
>  
> +/*
> + * This name @__handle_elf get renamed into
> + * @handle_elf_ppc64 or say @handle_elf_x86_64
> + * depending on the architecture it's compiled
> + * under.
> + */
>  int __handle_elf(void *mem, size_t size)
>  {
>  	const char *symstrings = NULL;
> -	Shdr_t *symtab_hdr = NULL;
> -	Sym_t *symbols = NULL;
> -	Ehdr_t *hdr = mem;
> +	Elf_Shdr *symtab_hdr = NULL;
> +	Elf_Sym *symbols = NULL;
> +	Elf_Ehdr *hdr = mem;
>  
> -	Shdr_t *strtab_hdr = NULL;
> -	Shdr_t **sec_hdrs = NULL;
> +	Elf_Shdr *strtab_hdr = NULL;
> +	Elf_Shdr **sec_hdrs = NULL;
>  	const char *secstrings;
>  
>  	size_t i, k, nr_gotpcrel = 0;
>  #ifdef ELF_PPC64
>  	s64 toc_offset = 0;
>  #endif
> -	int ret = -E_UNKNOWN;
> +	int ret = -EINVAL;
>  
>  	pr_debug("Header\n");
>  	pr_debug("------------\n");
>  	pr_debug("\ttype 0x%x machine 0x%x version 0x%x\n",
> -		 (unsigned)hdr->e_type, (unsigned)hdr->e_machine, (unsigned)hdr->e_version);
> +		 (unsigned)hdr->e_type, (unsigned)hdr->e_machine,
> +		 (unsigned)hdr->e_version);
>  
>  	if (!is_header_supported(hdr)) {
>  		pr_err("Unsupported header detected\n");
> -		ret = -E_NOT_ELF;
>  		goto err;
>  	}
>  
>  	sec_hdrs = malloc(sizeof(*sec_hdrs) * hdr->e_shnum);
>  	if (!sec_hdrs) {
>  		pr_err("No memory for section headers\n");
> -		ret = -E_NOMEM;
> +		ret = -ENOMEM;
>  		goto err;
>  	}
>  
>  	secstrings = get_strings_section(hdr, (uintptr_t)mem, size);
> -	if (!secstrings) {
> -		ret = -E_NO_STR_SEC;
> +	if (!secstrings)
>  		goto err;
> -	}
>  
>  	pr_debug("Sections\n");
>  	pr_debug("------------\n");
>  	for (i = 0; i < hdr->e_shnum; i++) {
> -		Shdr_t *sh = mem + hdr->e_shoff + hdr->e_shentsize * i;
> +		Elf_Shdr *sh = mem + hdr->e_shoff + hdr->e_shentsize * i;
>  		ptr_func_exit(sh);
>  
>  		if (sh->sh_type == SHT_SYMTAB)
> @@ -221,9 +225,9 @@ int __handle_elf(void *mem, size_t size)
>  	pr_out("#include \"%s/types.h\"\n", opts.uapi_dir);
>  
>  	for (i = 0; i < symtab_hdr->sh_size / symtab_hdr->sh_entsize; i++) {
> -		Sym_t *sym = &symbols[i];
> +		Elf_Sym *sym = &symbols[i];
>  		const char *name;
> -		Shdr_t *sh_src;
> +		Elf_Shdr *sh_src;
>  
>  		ptr_func_exit(sym);
>  		name = &symstrings[sym->st_name];
> @@ -245,7 +249,8 @@ int __handle_elf(void *mem, size_t size)
>  #endif
>  			if (strncmp(name, "__export", 8))
>  				continue;
> -			if ((sym->st_shndx && sym->st_shndx < hdr->e_shnum) || sym->st_shndx == SHN_ABS) {
> +			if ((sym->st_shndx && sym->st_shndx < hdr->e_shnum) ||
> +			    sym->st_shndx == SHN_ABS) {
>  				if (sym->st_shndx == SHN_ABS) {
>  					sh_src = NULL;
>  				} else {
> @@ -254,7 +259,8 @@ int __handle_elf(void *mem, size_t size)
>  				}
>  				pr_out("#define %s%s 0x%lx\n",
>  				       opts.prefix_name, name,
> -				       (unsigned long)(sym->st_value + (sh_src ? sh_src->sh_addr : 0)));
> +				       (unsigned long)(sym->st_value +
> +						       (sh_src ? sh_src->sh_addr : 0)));
>  			}
>  		}
>  	}
> @@ -264,8 +270,8 @@ int __handle_elf(void *mem, size_t size)
>  	pr_debug("Relocations\n");
>  	pr_debug("------------\n");
>  	for (i = 0; i < hdr->e_shnum; i++) {
> -		Shdr_t *sh = sec_hdrs[i];
> -		Shdr_t *sh_rel;
> +		Elf_Shdr *sh = sec_hdrs[i];
> +		Elf_Shdr *sh_rel;
>  
>  		if (sh->sh_type != SHT_REL && sh->sh_type != SHT_RELA)
>  			continue;
> @@ -283,11 +289,11 @@ int __handle_elf(void *mem, size_t size)
>  			unsigned long place;
>  			const char *name;
>  			void *where;
> -			Sym_t *sym;
> +			Elf_Sym *sym;
>  
>  			union {
> -				Rel_t rel;
> -				Rela_t rela;
> +				Elf_Rel rel;
> +				Elf_Rela rela;
>  			} *r = mem + sh->sh_offset + sh->sh_entsize * k;
>  			ptr_func_exit(r);
>  
> @@ -340,7 +346,7 @@ int __handle_elf(void *mem, size_t size)
>  				value32 = (s32)sym->st_value;
>  				value64 = (s64)sym->st_value;
>  			} else {
> -				Shdr_t *sh_src;
> +				Elf_Shdr *sh_src;
>  
>  				if ((unsigned)sym->st_shndx > (unsigned)hdr->e_shnum) {
>  					pr_err("Unexpected symbol section index %u/%u\n",
> @@ -355,7 +361,9 @@ int __handle_elf(void *mem, size_t size)
>  			}
>  
>  #ifdef ELF_PPC64
> -/* Snippet from the OpenPOWER ABI for Linux Supplement:
> +/*
> + * Snippet from the OpenPOWER ABI for Linux Supplement:
> + *
>   * The OpenPOWER ABI uses the three most-significant bits in the symbol
>   * st_other field specifies the number of instructions between a function's
>   * global entry point and local entry point. The global entry point is used
> @@ -363,6 +371,7 @@ int __handle_elf(void *mem, size_t size)
>   * local entry point is used when r2 is known to already be valid for the
>   * function. A value of zero in these bits asserts that the function does
>   * not use r2.
> + *
>   * The st_other values have the following meanings:
>   * 0 and 1, the local and global entry points are the same.
>   * 2, the local entry point is at 1 instruction past the global entry point.
> @@ -407,7 +416,7 @@ int __handle_elf(void *mem, size_t size)
>  			case R_PPC64_ADDR32:
>  				pr_debug("\t\t\tR_PPC64_ADDR32 at 0x%-4lx val 0x%x\n",
>  					 place, (unsigned int)(value32 + addend32));
> -				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_INT, "
> +				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_INT, "
>  				       " .addend = %-8d, .value = 0x%-16x, "
>  				       "}, /* R_PPC64_ADDR32 */\n",
>  				       (unsigned int) place,  addend32, value32);
> @@ -417,7 +426,7 @@ int __handle_elf(void *mem, size_t size)
>  			case R_PPC64_REL64:
>  				pr_debug("\t\t\tR_PPC64_ADDR64 at 0x%-4lx val 0x%lx\n",
>  					 place, value64 + addend64);
> -				pr_out("\t{ .offset = 0x%-8x, .type = PIEGEN_TYPE_LONG,"
> +				pr_out("\t{ .offset = 0x%-8x, .type = COMPEL_TYPE_LONG,"
>  				       " .addend = %-8ld, .value = 0x%-16lx, "
>  				       "}, /* R_PPC64_ADDR64 */\n",
>  				       (unsigned int) place, (long)addend64, (long)value64);
> @@ -477,13 +486,13 @@ int __handle_elf(void *mem, size_t size)
>  			case R_X86_64_32: /* Symbol + Addend (4 bytes) */
>  			case R_X86_64_32S: /* Symbol + Addend (4 bytes) */
>  				pr_debug("\t\t\t\tR_X86_64_32       at 0x%-4lx val 0x%x\n", place, value32);
> -				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_INT, "
> +				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_INT, "
>  				       ".addend = %-8d, .value = 0x%-16x, }, /* R_X86_64_32 */\n",
>  				       (unsigned int)place, addend32, value32);
>  				break;
>  			case R_X86_64_64: /* Symbol + Addend (8 bytes) */
>  				pr_debug("\t\t\t\tR_X86_64_64       at 0x%-4lx val 0x%lx\n", place, (long)value64);
> -				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_LONG, "
> +				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_LONG, "
>  				       ".addend = %-8ld, .value = 0x%-16lx, }, /* R_X86_64_64 */\n",
>  				       (unsigned int)place, (long)addend64, (long)value64);
>  				break;
> @@ -503,7 +512,7 @@ int __handle_elf(void *mem, size_t size)
>  				break;
>  			case R_X86_64_GOTPCREL: /* SymbolOffsetInGot + GOT + Addend - Place  (4 bytes) */
>  				pr_debug("\t\t\t\tR_X86_64_GOTPCREL at 0x%-4lx val 0x%x\n", place, value32);
> -				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_LONG | PIEGEN_TYPE_GOTPCREL, "
> +				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_LONG | COMPEL_TYPE_GOTPCREL, "
>  				       ".addend = %-8d, .value = 0x%-16x, }, /* R_X86_64_GOTPCREL */\n",
>  				       (unsigned int)place, addend32, value32);
>  				nr_gotpcrel++;
> @@ -513,7 +522,7 @@ int __handle_elf(void *mem, size_t size)
>  #ifdef ELF_X86_32
>  			case R_386_32: /* Symbol + Addend */
>  				pr_debug("\t\t\t\tR_386_32   at 0x%-4lx val 0x%x\n", place, value32 + addend32);
> -				pr_out("	{ .offset = 0x%-8x, .type = PIEGEN_TYPE_INT, "
> +				pr_out("	{ .offset = 0x%-8x, .type = COMPEL_TYPE_INT, "
>  				       ".addend = %-4d, .value = 0x%x, },\n",
>  				       (unsigned int)place, addend32, value32);
>  				break;
> @@ -538,8 +547,8 @@ int __handle_elf(void *mem, size_t size)
>  
>  	pr_out("static __maybe_unused const char %s[] = {\n\t", opts.stream_name);
>  
> -	for (i=0, k=0; i < hdr->e_shnum; i++) {
> -		Shdr_t *sh = sec_hdrs[i];
> +	for (i = 0, k = 0; i < hdr->e_shnum; i++) {
> +		Elf_Shdr *sh = sec_hdrs[i];
>  		unsigned char *shdata;
>  		size_t j;
>  
> @@ -547,19 +556,19 @@ int __handle_elf(void *mem, size_t size)
>  			continue;
>  
>  		shdata =  mem + sh->sh_offset;
> -		pr_debug("Copying section '%s'\n" \
> +		pr_debug("Copying section '%s'\n"
>  			 "\tstart:0x%lx (gap:0x%lx) size:0x%lx\n",
>  			 &secstrings[sh->sh_name], (unsigned long) sh->sh_addr,
>  			 (unsigned long)(sh->sh_addr - k), (unsigned long) sh->sh_size);
>  
>  		/* write 0 in the gap between the 2 sections */
> -		for (;k < sh->sh_addr; k++) {
> +		for (; k < sh->sh_addr; k++) {
>  			if (k && (k % 8) == 0)
>  				pr_out("\n\t");
>  			pr_out("0x00,");
>  		}
>  
> -		for (j=0; j < sh->sh_size; j++, k++) {
> +		for (j = 0; j < sh->sh_size; j++, k++) {
>  			if (k && (k % 8) == 0)
>  				pr_out("\n\t");
>  			pr_out("%#02x,", shdata[j]);
> diff --git a/compel/main.c b/compel/src/main.c
> similarity index 99%
> rename from compel/main.c
> rename to compel/src/main.c
> index 6f117cded569..ee6ccd53acdd 100644
> --- a/compel/main.c
> +++ b/compel/src/main.c
> @@ -12,6 +12,7 @@
>  #include <sys/stat.h>
>  #include <sys/mman.h>
>  
> +#include "version.h"
>  #include "piegen.h"
>  
>  static const char compel_cflags_pie[] = "-fpie -Wa,--noexecstack -fno-stack-protector";
>
Cyrill Gorcunov Sept. 1, 2016, 9:29 a.m.
On Thu, Sep 01, 2016 at 12:27:54PM +0300, Pavel Emelyanov wrote:
> compel: Initial commit :\ Haven't we had this one already?

Mind to simply name it the way you like?
Say "compel: rework -- Initial commit"
(git commit --amend)

> 
> Also -- turn on rename detection when generating patch, please, and resend.
> 
> On 08/31/2016 04:48 PM, Cyrill Gorcunov wrote:
> > Here we rather suffle source code into directories
> > preparing ground for future work.
> > 
> > Note: cross-compile won't work for a while.
> > 
> > Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
> > ---
> >  compel/{ => src/lib}/handle-elf-32.c               |   0
> >  compel/{ => src/lib}/handle-elf.c                  | 103 +++++++++++----------
> >  compel/{ => src}/main.c                            |   1 +

This is *already* with rename turned on.