2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-30 05:48:05 +00:00

ia32/feature-test: Don't check i686 libraries presence

I was adapting CRIU with ia32 support for building with Koji,
and found that Koji can't build x86_64 packages and have
i686 libs installed.
While at it, I found that i686 libraries requirement is
no longer valid since I've deleted the second parasite.

Drop feature test for i686 libs and put test for gcc.
That will effectively test if gcc can compile 32-bit code
and bug with debian's gcc (#315).

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
Dmitry Safonov 2017-05-31 23:23:39 +03:00 committed by Andrei Vagin
parent f32ffdef90
commit 37b3e5953b
2 changed files with 34 additions and 9 deletions

View File

@ -21,12 +21,14 @@ $(CONFIG_FILE):
ifeq ($(SRCARCH),x86)
# CONFIG_COMPAT is only for x86 now, no need for compile-test other archs
ifeq ($(call try-cc,$(FEATURE_TEST_X86_COMPAT),-m32),true)
ifeq ($(call try-asm,$(FEATURE_TEST_X86_COMPAT)),true)
export CONFIG_COMPAT := y
FEATURE_DEFINES += -DCONFIG_COMPAT
else
$(info Note: Building without ia32 C/R, missed package(s):)
$(info $(info) libc6-dev-i386 and/or gcc-multilib)
$(info Note: Building without ia32 C/R, missed ia32 support in gcc)
$(info $(info) That may be related to missing gcc-multilib in your)
$(info $(info) distribution or you may have Debian with buggy toolchain)
$(info $(info) (issue https://github.com/xemul/criu/issues/315))
endif
endif

View File

@ -90,13 +90,36 @@ int main(int argc, char *argv[], char *envp[])
endef
define FEATURE_TEST_X86_COMPAT
#define __ALIGN .align 4, 0x90
#define ENTRY(name) \
.globl name; \
.type name, @function; \
__ALIGN; \
name:
/* Test for glibc-devel.i686 presence */
#include <gnu/stubs-32.h>
#define END(sym) \
.size sym, . - sym
int main(int argc, char **argv)
{
return 0;
}
#define __USER32_CS 0x23
#define __USER_CS 0x33
.text
ENTRY(call32_from_64)
/* Switch into compatibility mode */
pushq \$$__USER32_CS
pushq \$$1f
lretq
1:
.code32
/* Run function and switch back */
call *%esi
jmp \$$__USER_CS,\$$1f
.code64
1:
END(call32_from_64)
ENTRY(main)
nop
END(main)
endef