Hide Forgot
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)
*** This bug has been marked as a duplicate of bug 720982 ***