Bug 7419

Summary: kexec-tools fails to compile with x32 ABI
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Mariano Lopez <mariano.lopez>
Component: coreAssignee: Aníbal Limón <anibal.limon>
Status: VERIFIED FIXED QA Contact: Cristina Agurida <cristina-danielax.agurida>
Severity: normal    
Priority: Medium CC: anibal.limon, cristina-danielax.agurida, meta.mr.watcher, meta.watcher, sgw
Version: 1.8   
Target Milestone: 1.9   
Hardware: x86   
OS: x86_64   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)
Bug Depends on:    
Bug Blocks: 3437    

Description Mariano Lopez 2015-03-06 20:52:35 UTC
Trying to compile kexec-tools fails using x32.

| x86_64-poky-linux-gnux32-gcc  -mx32 --sysroot=/home/mlopezva/poky/build/tmp/sysroots/qemux86-64 -O2 -pipe -g -feliminate-unused-debug-types -fno-strict-aliasing -Wall -Wstrict-prototypes -fno-zero-initialized-in-bss -mcmodel=large -Os -fno-builtin -ffreestanding -mcmodel=large -I/home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/purgatory/include -I/home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/purgatory/arch/x86_64/include -I/home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/util_lib/include -I/home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/include -Iinclude -I/home/mlopezva/poky/build/tmp/sysroots/x86_64-linux/usr/lib/x86_64-poky-linux-gnux32/gcc/x86_64-poky-linux-gnux32/4.9.2/include  -c -MD -o purgatory/string.o /home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/purgatory/string.c
| make: *** [purgatory/purgatory.o] Error 1
| make: *** Waiting for unfinished jobs....
| /home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/purgatory/printf.c:1:0: error: code model 'large' not supported in x32 mode
|  #include <stdarg.h>
|  ^
| /home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/kexec-tools-2.0.9/purgatory/string.c:1:0: error: code model 'large' not supported in x32 mode
|  #include <stddef.h>
lines 1-40ERROR: Task 6 (/home/mlopezva/poky/meta/recipes-kernel/kexec/kexec-tools_2.0.9.bb, do_compile) failed with exit code '1'
|  ^
| make: *** [purgatory/printf.o] Error 1
| make: *** [purgatory/string.o] Error 1
| make: *** wait: No child processes.  Stop.
| ERROR: oe_runmake failed
| WARNING: /home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/temp/run.do_compile.45642:1 exit 1 from
|   exit 1
| ERROR: Function failed: do_compile (log file is located at /home/mlopezva/poky/build/tmp/work/x86_64_x32-poky-linux-gnux32/kexec-tools/2.0.9-r1/temp/log.do_compile.45642)
Comment 1 Aníbal Limón 2015-03-12 17:44:22 UTC
Partial solution was implement to provide support in autoconf for detect when build is x32,

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/kexec-tools-x32-abi

Some issues still exist when try to exec:

# kexec -l vmlinux

These issues are related to ELF read's.
Comment 3 Cristina Agurida 2015-05-26 09:10:30 UTC
Can you provide me the steps for testing?
Comment 4 Cristina Agurida 2015-05-27 10:46:27 UTC
Verified on master: 5170177719a93a69cc6c7c1218b3f26eed82d6e0