- 14 Mar, 2017 40 commits
-
-
Kir Kolyshkin authored
When compiled with clang-3.8 on ppc, compel complains: > GEN criu/pie/parasite-native-blob.h > parasite_native_blob: Error (compel/src/lib/handle-elf-host.c:541): > Unsupported relocation of type 26 Look into R_PPC64_REL64/R_PPC64_ADDR64 and handle 32-bit the same way. travis-ci: success for PPC+clang compile fixes Cc: Laurent Dufour <ldufour@linux.vnet.ibm.com> Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Three reasons: 1. this flag doesn't work for ppc64 (see commit dc7b08b); 2. clang is not aware of this flag; 3. all seems to work just fine without it. Cc: Laurent Dufour <ldufour@linux.vnet.ibm.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
In a manner similar to one of commit 9303ed3 ("Makefiles: move -Wa,--noexecstack out of CFLAGS"), let's move this option to linker flags (see the abovementioned commit for reasoning). travis-ci: success for series starting with [1/3] compel: mv noexecstack from CFLAGS to LDFLAGS Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Dmitry Safonov authored
While writing this, I somehow managed to miss the check of how many entries were saved in core image. So it may dereference here bs. Fixes: #228 Fixes: commit 6fde3b8c27db ("x86: restore TLS") travis-ci: success for x86, tls: read no more than saved TLS entries Cc: Andrei Vagin <avagin@virtuozzo.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Reported-by:
Andrei Vagin <avagin@virtuozzo.com> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Tycho Andersen authored
Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
The problem is, -Wa is a flag for assembler, but CFLAGS are also used to generate dependencies, and clang complains loudly when it is used for deps: > > DEP compel/arch/x86/plugins/std/syscalls-64.d > > clang-3.8: error: argument unused during compilation: > > '-Wa,--noexecstack' This patch moved the noexecflag from assembler to linker. I am not 100% sure but the end result seems to be the same. This fixes dependency generation when using clang instead of gcc. I surely have done my research before proposing this change, and I have tested this change as good as I could. Sorry, I should have provided more background in the commit message. Here it goes. There are a few ways to have non-executable stack: 1. mark the assembler source file (.S) with .section .note.GNU-stack,"",%progbits 2. pass the -Wa,--noexecstack to compiler 3. pass the -z execstack to linker All three ways are fine, let's see them in greater details. Some people say (1) is the best way, but we have way too many .S files now (23 of them, to be exact). Anyway, I can certainly do it this way if you like, just let me know. It would look like this: --- a/compel/arch/aarch64/plugins/std/syscalls/syscall-aux.S +++ b/compel/arch/aarch64/plugins/std/syscalls/syscall-aux.S @@ -3,6 +3,8 @@ * that are not implemented in the AArch64 Linux kernel */ +.section .note.GNU-stack,"",%progbits + ENTRY(sys_open) mov x3, x2 mov x2, x1 Way (2) is what is currently used. Unfortunately it breaks dependency generation with clang. One way to fix it would be to filter-out the bad flag when we're generating deps. I tried experimenting with $(filter-out) function in Makefiles today but it's complicated and I failed to make it work. Way (3) is what this commit offers. It seem to work fine while being the least intrusive. Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Reviewed-by:
Cyrill Gorcunov <gorcunov@openvz.org> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Cc: Laurent Dufour <ldufour@linux.vnet.ibm.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Acked-by:
Laurent Dufour <ldufour@linux.vnet.ibm.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Kir Kolyshkin authored
Got the following from clang: > CC criu/parasite-syscall.o > criu/parasite-syscall.c:1494:6: error: variable 'parasite_size' is used > uninitialized whenever 'if' condition is false > [-Werror,-Wsometimes-uninitialized] > if (seized_native(ctl)) > ^~~~~~~~~~~~~~~~~~ > criu/parasite-syscall.c:1503:2: note: uninitialized use occurs here > parasite_size += ctl->args_size; > ^~~~~~~~~~~~~ > criu/parasite-syscall.c:1494:2: note: remove the 'if' if its condition > is always true > if (seized_native(ctl)) > ^~~~~~~~~~~~~~~~~~~~~~~ I look at the code and I'm still not quite sure whether parasite_size can end up being uninitialized. Looks like for CONFIG_X86_64 it can. So, let's initialize it. Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Laurent Dufour authored
This patch fix a build break on ppc64le introduced by changes in the compel's build option. I factorized the common CFLAGS to make easier identifying particular flags required by some architectures. Fixes: fef01d79f7ee ("compel: cli -- Add more flags into cflags report") travis-ci: success for compel: fix build break on ppc64le Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Laurent Dufour <ldufour@linux.vnet.ibm.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
When compel build objects it provides ".compel.init" and ".compel.exit" setions for plugins init/exit routines and when we link PIE code in criu we simply zap them out but code still reference to them inside std text (even if we don't call them) so dont drop them. Eventually compel will be loading plugins by self but for now it's good for testing purpose to refernce the plugin inside criu code. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-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 an addition to commit ed5b351. travis-ci: success for Add compel-host to .gitignore Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
They are not supported in plugins. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Reviewed-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Not supported for a while. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
@std plugin known to fail when trying to execute, investigating now. Meanwhile to not block tests lets use syscalls object file. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
And use it in CRIU directly instead: - move syscalls into compel/arch/ARCH/plugins/std/syscalls - drop old symlinks - no build for 32bit on x86 as expected - use std.built-in.o inside criu directly (compel_main stub) - drop syscalls on x86 criu directory, I copied them already in first compel commist, so we can't move them now, but delete in place Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Real syscalls generation is inside criu for a while but will be moved out in the next patch. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
CRIU will reference to them, but for now they are just stubs. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Both std and criu will use it for syscalls sake. Note I've to disable x86 compat mode for a while: we have to provide native types there thus will back once everything else is complete. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
- linkage.h points to CRIU's asm specific - prologue.h is just a link to x86, we will need to fix it when start using std with other plugins Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Plain "main" makes compilers unhappy since it's known predefined name. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-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
As it's a make/build option, the set of files to compile depends on it. We don't do feature tests on mrproper/clean (no point in it). Let's define CONFIG_COMPAT for those targets, so compiled files will be properly cleaned. Reported-by:
Adrian Reber <adrian@lisas.de> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> 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
As -lsoccr now is in $(LIBS) in Makefile.packages, it should be build before criu objects. Otherwise, we try to compile feature-tests with $(LIBS) and the succesful features fails with: <stdin>:1:25: warning: extra tokens at end of #include directive /usr/bin/ld: cannot find -lsoccr collect2: error: ld returned 1 exit status Which lead to later problems: criu/sk-tcp.c:50:8: error: redefinition of 'struct tcp_repair_opt' struct tcp_repair_opt { ^ In file included from criu/sk-tcp.c:1:0: /usr/include/netinet/tcp.h:259:8: note: originally defined here struct tcp_repair_opt Because of fails in really-sucessful feture-tests. P.S. Maybe we should unbound feature-tests compilation from $(LIBS), specified in Makefile.packages - that looks right after all. Cc: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
compel-host is needed to build criu itself and run during piegen blob generation. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
The default compel binary is the one compiled for target architecture. The compel-host one is compel compiled for current arch that is needed to build something for target arch. We could use default compel if target arch == current arch, but this makes things more complex. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-
Cyrill Gorcunov authored
Use new compel.h header with appropriate types. Signed-off-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
This is fd passing via unix sockets (scm creds) suitable for use by parasite code. 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
prologue.h defines sys_recv() macro - let's use it by now 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 shmem pluging allows creation of shared memory segment between parasite code and the caller. 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 prologue includes routines needed for parasite blob to work and is always included with the std plugin. 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
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
Fixes: GEN compel/include/version.h GEN compel/include/version.h 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
Signed-off-by:
Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by:
Andrei Vagin <avagin@virtuozzo.com>
-