- 14 Mar, 2017 40 commits
-
-
Kir Kolyshkin authored
A compel user should not be aware of compel internals, including the paths to various files. This commit introduces a command to get the plugin files (well, currently just one plugin, "std"). Example for uninstalled compel: $ cd compel/test/infect/ $ ../../../compel/compel-host plugins ../../../compel/plugins/std.built-in Example for installed compel: $ compel plugins /usr/libexec/compel/std.built-in.o The commit also makes use of this command by compel/test/infect and criu/pie. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Commit 8173ea2 ("compel/test/infect/Makefile: don't add .h to sources") was a bad one as it removed dependency between parasite.h and spy binary. Fix it. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Since commit 656710e the list of prerequisites are the same as the list of objects, so we can use $^ to avoid repetition. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
compel tool doesn't need to be run as root, so it makes no sense to install it to SBINDIR. Fix to use BINDIR. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
This commit adds -T path/to/linker_script to the output of "compel ldflags", so compel user does not have to specify one manually. This commit also makes use of this functionality in criu/pie and compel/test. NOTE this commit also drops the linker script dependency in criu/pie/Makefile, meaning if it will be changed that won't cause a rebuild. I hope it's not a big issue, and it is sort of inevitable as compel is becoming a separate tool. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Instead of hardcoding the path to compel uapi includes, call compel tool to get one. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Build of criu binary depends on many other things that needs to be built before it. Let's clean these deps a bit by using criu-deps variable. This also removes wrong "$(VERSION_HEADER): include/common/asm" dependency -- one can certainly succeed in generating criu/include/version.h file without creating include/common/asm symlink fist! travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Working on CRIU Makefilest feels like walking on a minefield. This is not an attempt to demine it, but to make some mines a bit easier to notice. OK, this is what we're trying to do here: 1. Drop the $(SRC_DIR)/ prefix from the target: as this is a top-level Makefile, we can just use paths relative to top-level source dir. 2. Drop the $(SRC_DIR) from the symlink, use relative one. Relative symlinks are always better -- say, if a source directory is moved, everything will still work. 3. The "compel/include/asm: compel/arch/$(ARCH)/src/lib/include" dependency is useless. Yes, the left side is created as a symlink to the right side, but that doesn't mean that "make" should compare the timestamps of both to decide whether to remake the target. 4. The "$(COMPEL_VERSION_HEADER): compel/include/asm" dependency is wrong, the compel/include/asm symlink is not needed for $(COMPEL_VERSION_HEADER) generation. Remove it. 5. Move compel/plugins/std.built-in.o prerequisite from the rule to compel-plugins variable, and use it. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Similar to the previous commit, there is absolutely no need to create/remove this symlink from Makefiles, as it can be made a constant one. Add the symlink to sources and save a few lines in Makefiles. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
There is absolutely no need to create/remove this symlink from Makefiles, as it is constant. Just add the symlink to sources and save a few lines in Makefiles. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
As of commit 3c16dc5 ("compel: plugins -- Merge fds plugin into std") fds plugin is no more. Remove this leftover. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
We call compel-host binary from a number of places, so let's add COMPEL_BIN variable and use it. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
I have noticed compel/plugins/include[/uapi] is not needed, not entirely sure why (added symlinks?) but everything compiles just fine without it. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
1. Add "compel includes" command, to be used for parasite *loading* code compilation. 2. Add includes to output of "compel cflags", which is used for parasite code compilation. Now, this patch looks big and complex, this is mostly because we want compel cli to work for both uninstalled (right from the source tree) and installed cases. The paths to be printed are quite different for these two cases, so I had to introduce a wrapper for a non-installed case. The wrapper sets an environment variable, which compel binary uses as a path to non-installed file. If this env var is not set, it means compel is installed so no tricks are needed. Note the wrapper is only provided for the compel-host binary, as compel (which differs from compel-host in case of cross-compiling) is not executed from within the source tree. Because of the wrapper, the original binary had to be renamed, thus the changes to Makefiles and .gitignore. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
This is mainly dictated by the fact that we use stdout from "compel *flags" in a special way, so it should not be garbled by the usage info. Otherwise, for example, the following code in Makefile CFLAGS += $(shell compel --badopt cflags) will lead to the whole usage() output to be added to compiler flags, which looks really really weird. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
There is no need to support all possible architectures for "compel cflags" action. In fact, "compel hgen" can only support the one it was compiled for (with the only exception of 32-bit mode for x86). It looks like if we can use a few #ifdefs, there is no need to specify --arch anymore, let's drop it! Still, for the x86 32-bit mode we need to introduce --compat option. Note that "compel hgen" autodetects 32-bit mode for x86 by looking into ELF header, but in case of "compel clfags" there are no files to look into, so we need this --compat specified explicitly. While at it, - Makefile: define CONFIG_AARCH64 if building for ARM64 - fail to compile on unsupported/unspecified ARCH - make "compel --help" output a bit more compact travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
1 Since all the fields are now initialized to zeroes, we can just say ={}; 2 Since this is static, it is initialized to zeroes anyway, but from my POV being explicit about it is better. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
I saw this line in the code unsigned long sret = -ENOSYS; and ended up with this patch. Note syscall(2) man page says return value is long -- who am I to disagree? travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
1. Remove COMMON_IDIR -- there's no need for it, and it makes the build process look more complicated than it is. 2. Use standard CC and CFLAGS defines (so one can use say make CC=clang) 3. Drop the dependency on COMPEL_LIBRARY, as it's supposed to be an external file/tool. 4. Add -Wall to CFLAGS. 5. Simplify ARCH setting in infect test. 6. Drop ARCH from rsys test, as it's not used there. travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
travis-ci: success for More polishing for compel cli Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
I managed to forgot that kernel erases R8...R11 regitster prior returning to userspace from `int 0x80`: https://lkml.org/lkml/2009/10/1/164 That was the reason for hang on gcc v6.1 on Jenkins/elsewhere: https://ci.openvz.org/job/CRIU/job/CRIU-x86_64/branch/criu-dev/ Tested on gcc v6.1 locally, on Travis-CI: https://travis-ci.org/0x7f454c46/criu/builds/183976899 travis-ci: success for pie: fix clobber registers for int 0x80 (rev2) Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Tested-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Resolves merge conflict with commit 71abfb84e158 ("compel: simplify usage wrt ids"). Sets start ip for parasite blob according to app mode: native/compat. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Supported only from v4.9 kernel :) The following commits may be backported if needed: b059a453b ("x86/vdso: Add mremap hook to vm_special_mapping") e38447ee1 ("x86/vdso: Unmap vdso blob on vvar mapping failure") 576ebfefd ("x86/vdso: Replace calculate_addr in map_vdso() with addr") 2eefd8789 ("x86/arch_prctl/vdso: Add ARCH_MAP_VDSO_*") 90954e7b9 ("x86/coredump: Use pr_reg size, rather that TIF_IA32 flag") cc87324b3 ("x86/ptrace: Down with test_thread_flag(TIF_IA32)") 684635105 ("x86/signal: Add SA_{X32,IA32}_ABI sa_flags") ed1e7db33 ("x86/signal: Remove bogus user_64bit_mode() check from sigaction_compat_abi()") The required patches list may be checked also at https://criu.org/Upstream_kernel_commits travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
It's 32-bit syscall and the high-part of address is dropped, so call it only on 32-bit addr. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
As 64-bit parasite is now in 32-bit compat app and 64-bit applications can also have TLS in GDT - simplify and just always dump TLS with 32-bit syscall get_thread_area, it's 3 syscalls more - but that's a low cost for that. Note that entry point for sys_get_thread_area() is only for 32-bits, so we need to call raw int80 here with 32-bit syscall number. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
More reliable way to check support of mapping 32-bit blob. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
We can live here without 32-bit CS - this syscall doesn't depend on descriptor type. No functional changes expected, cleanup. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Parasite is 64-bit and if we want to check if vma is vDSO, we need to link parasite blob with util-vdso-elf32. But luckely, there is no need to do that: mremap() for compat vDSO works only after v4.8 kernel: commit b059a453b1cf ("x86/vdso: Add mremap hook to vm_special_mapping"). And in those kernels "[vdso]" is always reported in /proc/.../maps rightly - so no need to check that. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
No need to fill symtab at restorer - previous commit add vdso filling at startup: on vdso_init(). Now it's possible just to use the symtab and sizes if we need them. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Adds a helper to parse compatible vdso blob at time of vdso_init(). The following patches will remove parsing vdso in restorer. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
The next patch will remove filling in restorer rt symtable for compat tasks. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
I'll need to validate compat vdso/vvar positioning in the same way. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
We need to know compatible vdso/vvar sizes, so add pid argument to parse another process - it's needed to fork(), remap vdso and parse child's vdso/vvar in CRIU. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
On first versions of x86 compat patches it returned 0 or err. In merged version it returns error < 0 or vDSO blob's size. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Oh, thanks god - those silly crippy macro are gone! The best part of removing second parasite, I think. This is partial revert to commit 8c3b3bc2efa0 ("parasite-syscall: deserialize compat parasite's answers"). travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Parasite transfers pages in the same iovec format now: drop compatible format (yay!). travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
Let's try having one with two entries/exits. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
No need in two libraries if we have only one parasite blob. With left hand I write code - with right I erase it. travis-ci: success for Rectify 32-bit compatible C/R on x86 Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-