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:
parent
f32ffdef90
commit
37b3e5953b
@ -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
|
||||
#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
|
||||
|
Loading…
x
Reference in New Issue
Block a user