lkml.org 
[lkml]   [2012]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: x86_64: undefined symbol 'mcount' in 3.7-rc1
From
Date
On Wed, 2012-10-17 at 22:23 +0200, Arend van Spriel wrote:
> Hi Steven,
>
> I have nightly test machines upgraded to 3.7-rc1 and on the 64-bit
> platform I get MODPOST warning on 'mcount'.
>
> It is conditionally exported in x8664_ksyms_64.c:
> #ifdef CONFIG_FUNCTION_TRACER
> /* mcount is defined in assembly */
> EXPORT_SYMBOL(mcount);
> #endif
>
> #ifdef CONFIG_FUNCTION_TRACER
> #ifdef CC_USING_FENTRY
> # define MCOUNT_ADDR ((long)(__fentry__))
> #else
> # define MCOUNT_ADDR ((long)(mcount))
> #endif
> #define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
>
> I have built the kernel on x86 machine with gcc 4.6.3 and the modules
> are built during the test execution on test machine which has gcc 4.4.5.
> Reading commit below
>
> commit d57c5d51a30152f3175d2344cb6395f08bf8ee0c
> Author: Steven Rostedt <srostedt@redhat.com>
> Date: Wed Feb 9 13:32:18 2011 -0500
>
> ftrace/x86: Add support for -mfentry to x86_64
>
> I suppose the gcc version mismatch is causing my problem. Is that a
> correct assumption?

Yes.

gcc 4.6.0 added a new option to gcc called '-mfentry'. The kernel build
checks to see if this option is supported and if so it will use it. What
this option does (when added to -pg), will not do the mcount calling but
instead call fentry. The two have different semantics and are not
compatible. When you built your kernel, the build process detected that
-mfentry is supported and used that.

Now when you built your modules with gcc 4.4.5, -mfentry was not
supported and it used the mcount feature instead. In general, it's not a
good idea to use two different gcc's to build the kernel and modules.

But if you really need to, then you should disable function tracing of
your modules, where the -pg and -mfentry wont be used.

-- Steve




\
 
 \ /
  Last update: 2012-10-31 20:01    [W:0.046 / U:0.036 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site