Commit 37b3e595 authored by Dmitry Safonov's avatar Dmitry Safonov Committed by Andrei Vagin

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: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent f32ffdef
......@@ -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
......
......@@ -90,13 +90,36 @@ int main(int argc, char *argv[], char *envp[])
endef
define FEATURE_TEST_X86_COMPAT
/* Test for glibc-devel.i686 presence */
#include <gnu/stubs-32.h>
int main(int argc, char **argv)
{
return 0;
}
#define __ALIGN .align 4, 0x90
#define ENTRY(name) \
.globl name; \
.type name, @function; \
__ALIGN; \
name:
#define END(sym) \
.size sym, . - sym
#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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment