Bug 760051 - compiling broken on arch/x86/kernel/entry_64.S
Summary: compiling broken on arch/x86/kernel/entry_64.S
Keywords:
Status: CLOSED DUPLICATE of bug 720982
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: kernel
Version: 6.1
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Red Hat Kernel Manager
QA Contact: Red Hat Kernel QE team
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-12-05 11:24 UTC by colyli
Modified: 2011-12-05 11:58 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-12-05 11:58:30 UTC
Target Upstream Version:


Attachments (Terms of Use)

Description colyli 2011-12-05 11:24:40 UTC
Description of problem:
code error in arch/x86/kernel/entry_64.S, when I compile kernel code on ubuntu 12.04, gcc complains an error:
  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-x86
  CALL    scripts/checksyscalls.sh
  CHK     include/linux/compile.h
  AS      arch/x86/kernel/entry_64.o
/tmp/cc9K85uN.s: Assembler messages:
/tmp/cc9K85uN.s: Error: .size expression for do_hypervisor_callback does not evaluate to a constant
make[2]: *** [arch/x86/kernel/entry_64.o] Error 1
make[1]: *** [arch/x86/kernel] Error 2
make: *** [arch/x86] Error 2


Version-Release number of selected component (if applicable):
rhel6 2.6.32-131.21.1

How reproducible:
see the code from 2.6.32-131.21.1:

1270 #ifdef CONFIG_XEN
1271 zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
1272 
1273 /*
1274  * A note on the "critical region" in our callback handler.
1275  * We want to avoid stacking callback handlers due to events occurring
1276  * during handling of the last event. To do this, we keep events disabled
1277  * until we've done all processing. HOWEVER, we must enable events before
1278  * popping the stack frame (can't be done atomically) and so it would still
1279  * be possible to get enough handler activations to overflow the stack.
1280  * Although unlikely, bugs of that kind are hard to track down, so we'd
1281  * like to avoid the possibility.
1282  * So, on entry to the handler we detect whether we interrupted an
1283  * existing activation in its critical region -- if so, we pop the current
1284  * activation and restart the handler using the previous one.
1285  */
1286 ENTRY(xen_do_hypervisor_callback)   # do_hypervisor_callback(struct *pt_regs)
1287         CFI_STARTPROC
1288 /*
1289  * Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will
1290  * see the correct pointer to the pt_regs
1291  */
1292         movq %rdi, %rsp            # we don't return, adjust the stack frame
1293         CFI_ENDPROC
1294         DEFAULT_FRAME
1295 11:     incl PER_CPU_VAR(irq_count)
1296         movq %rsp,%rbp
1297         CFI_DEF_CFA_REGISTER rbp
1298         cmovzq PER_CPU_VAR(irq_stack_ptr),%rsp
1299         pushq %rbp                      # backlink for old unwinder
1300         call xen_evtchn_do_upcall
1301         popq %rsp
1302         CFI_DEF_CFA_REGISTER rsp
1303         decl PER_CPU_VAR(irq_count)
1304         jmp  error_exit
1305         CFI_ENDPROC
1306 END(do_hypervisor_callback)

there is a typo on line 1306, do_hypervisor_callback should be xen_do_hypervisor_callback.

Additional info:
1) after fix the typo, gcc does not complain the error.
2) gcc version:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.2-5ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.2 (Ubuntu/Linaro 4.6.2-5ubuntu1)

Comment 2 Igor Mammedov 2011-12-05 11:58:30 UTC

*** This bug has been marked as a duplicate of bug 720982 ***


Note You need to log in before you can comment on or make changes to this bug.