FYI, on a 64-bit host:

make ARCH=um defconfig
make ARCH=um vmlinux
  SYMLINK include/asm-um/ldt.h
  CHK     arch/um/include/uml-config.h
  UPD     arch/um/include/uml-config.h
gcc -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs
-fno-strict-aliasing -fno-common -ffreestanding -O2
-fno-omit-frame-pointer -fno-optimize-sibling-calls -g -D__arch_um__
-DSUBARCH=\"x86_64\" -Dvmap=kernel_vmap
-Din6addr_loopback=kernel_in6addr_loopback -Iarch/um/include
-I/usr/src/linux-2.6.15-rc1-mm2-uml/arch/um/kernel/skas/include
-D_FILE_OFFSET_BITS=64 -fno-builtin -D_GNU_SOURCE -D_LARGEFILE64_SOURCE
-S -o arch/um/user-offsets.s arch/um/sys-x86_64/user-offsets.c
  CHK     arch/um/include/user_constants.h
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  SYMLINK include/asm -> include/asm-um
  SPLIT   include/linux/autoconf.h -> include/config/*
gcc -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs
-fno-strict-aliasing -fno-common -ffreestanding -O2
-fno-omit-frame-pointer -fno-optimize-sibling-calls -g  -D__arch_um__
-DSUBARCH=\"x86_64\" -Iarch/um/include
-I/usr/src/linux-2.6.15-rc1-mm2-uml/arch/um/kernel/skas/include
-Dvmap=kernel_vmap -Din6addr_loopback=kernel_in6addr_loopback
-Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask
-fno-unit-at-a-time -U__x86_64__ -fno-builtin -D_LARGEFILE64_SOURCE
-Wdeclaration-after-statement   -nostdinc
-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.4/include -D__KERNEL__
-Iinclude  -include include/linux/autoconf.h -S -o
arch/um/kernel-offsets.s arch/um/sys-x86_64/kernel-offsets.c
In file included from arch/um/include/um_mmu.h:17,
                 from include/asm/mmu.h:9,
                 from include/linux/sched.h:23,
                 from arch/um/sys-x86_64/kernel-offsets.c:3:
/usr/src/linux-2.6.15-rc1-mm2-uml/arch/um/kernel/skas/include/mmu-skas.h:11:21: 
asm/ldt.h: No such file or directory
In file included from arch/um/include/um_mmu.h:17,
                 from include/asm/mmu.h:9,
                 from include/linux/sched.h:23,
                 from arch/um/sys-x86_64/kernel-offsets.c:3:
/usr/src/linux-2.6.15-rc1-mm2-uml/arch/um/kernel/skas/include/mmu-skas.h:19: 
error: syntax error before "uml_ldt_t"
/usr/src/linux-2.6.15-rc1-mm2-uml/arch/um/kernel/skas/include/mmu-skas.h:19: 
warning: no semicolon at end of struct or union
In file included from include/asm/mmu.h:9,
                 from include/linux/sched.h:23,
                 from arch/um/sys-x86_64/kernel-offsets.c:3:
arch/um/include/um_mmu.h:25: error: field `skas' has incomplete type
make: *** [arch/um/kernel-offsets.s] Error 1


And although 2.6.15-rc1-mm2 builds fine on x86 hosts, I get this when
cross-compiling it:
make ARCH=um SUBARCH=i386 vmlinux
  CC      arch/um/kernel/skas/clone.o
arch/um/kernel/skas/clone.c: In function `stub_clone_handler':
arch/um/include/sysdep/stub.h:41: error: can't find a register in class
`BREG' while reloading `asm'
arch/um/include/sysdep/stub.h:62: error: can't find a register in class
`BREG' while reloading `asm'
arch/um/include/sysdep/stub.h:51: error: can't find a register in class
`BREG' while reloading `asm'
arch/um/include/sysdep/stub.h:84: error: can't find a register in class
`BREG' while reloading `asm'
make[2]: *** [arch/um/kernel/skas/clone.o] Error 1
make[1]: *** [arch/um/kernel/skas] Error 2
make: *** [arch/um/kernel] Error 2

Same error that was mentioned before, this one is gcc getting it wrong I
seem to remember.

Also with patches.tar from sourceforge (dated 18/11/2005), I had to
remove the zero length files as suggested by Rob.
x86 build fails with the same gcc problem as above and the amd64 build
fails (from reading previous posts, I guess this is because ldt isn't
done for x86_64):
  CC      arch/um/kernel/exec_kern.o
arch/um/kernel/exec_kern.c: In function `flush_thread':
arch/um/kernel/exec_kern.c:28: error: structure has no member named
`tls_array'
arch/um/kernel/exec_kern.c:28: error: structure has no member named
`tls_array'
make[1]: *** [arch/um/kernel/exec_kern.o] Error 1
make: *** [arch/um/kernel] Error 2

Last, 2.6.15-rc2 has the same gcc problems for x86, and amd64 fails
with:

  CC      arch/um/sys-x86_64/sysrq.o
  SYMLINK arch/um/sys-x86_64/thunk.S
  AS      arch/um/sys-x86_64/thunk.o
  AR      arch/um/sys-x86_64/lib.a
  GEN     .version
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.4/../../../../x86_64-pc-linux-gnu/bin/ld: 
init/built-in.o: relocation R_X86_64_32 against `a local symbol' can not be 
used when making a shared object; recompile with -fPIC
init/built-in.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
  KSYM    .tmp_kallsyms1.S
nm: '.tmp_vmlinux1': No such file
No valid symbol.
make: *** [.tmp_kallsyms1.S] Error 1

Which can be worked around by enabling TT mode (or just static link?)
I haven't tried to add -fPIC (not sure where it would go)

Antoine



-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to