Re: [PATCH 01/11] ftrace: handle generic arch calls

Steven Rostedt
2008-10-29T19:14:40Z

On Wed, 29 Oct 2008, Sam Ravnborg wrote:

> On Mon, Oct 27, 2008 at 01:41:41PM -0400, Steven Rostedt wrote:
> >
> > [
> > Resending patch.
> >
> > Sam, can you Ack this?
> >
> > -- Steve
> > ]
> >
> > From: Steven Rostedt <srostedt@redhat.com>
> > Subject: ftrace: handle generic arch calls
> >
> > The recordmcount script requires that the actual arch is passed in.
> > This works well when ARCH=i386 or ARCH=x86_64 but does not handle the
> > case of ARCH=x86.
> >
> > This patch adds a parameter to the function to pass in the number of
> > bits of the architecture. So that it can determine if x86 should be
> > run for x86_64 or i386 archs.
> >
> > Signed-off-by: Steven Rostedt <srostedt@redhat.com>
> > ---
> > scripts/Makefile.build | 10 ++++++++--
> > scripts/recordmcount.pl | 11 ++++++++++-
> > 2 files changed, 18 insertions(+), 3 deletions(-)
> >
> > Index: linux-compile.git/scripts/Makefile.build
> > ===================================================================
> > --- linux-compile.git.orig/scripts/Makefile.build 2008-10-22 15:09:04.000000000 -0400
> > +++ linux-compile.git/scripts/Makefile.build 2008-10-22 15:09:07.000000000 -0400
> > @@ -198,10 +198,16 @@ cmd_modversions = \
> > fi;
> > endif
> >
> > +ifdef CONFIG_64BIT
> > +arch_bits = 64
> > +else
> > +arch_bits = 32
> > +endif
> > +
> > ifdef CONFIG_FTRACE_MCOUNT_RECORD
> > cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl \
> > - "$(ARCH)" "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" \
> > - "$(MV)" "$(@)";
> > + "$(ARCH)" "$(arch_bits)" "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" \
> > + "$(NM)" "$(RM)" "$(MV)" "$(@)";
> > endif
>
> A simple $(if $(CONFIG_64BIT),64,32) in the command would be more dense.

OK, will fix.

>
> >
> > define rule_cc_o_c
> > Index: linux-compile.git/scripts/recordmcount.pl
> > ===================================================================
> > --- linux-compile.git.orig/scripts/recordmcount.pl 2008-10-22 15:09:04.000000000 -0400
> > +++ linux-compile.git/scripts/recordmcount.pl 2008-10-22 15:09:45.000000000 -0400
> > @@ -106,7 +106,8 @@ if ($#ARGV < 6) {
> > exit(1);
> > }
> >
> > -my ($arch, $objdump, $objcopy, $cc, $ld, $nm, $rm, $mv, $inputfile) = @ARGV;
> > +my ($arch, $bits, $objdump, $objcopy, $cc,
> > + $ld, $nm, $rm, $mv, $inputfile) = @ARGV;
> >
> > $objdump = "objdump" if ((length $objdump) == 0);
> > $objcopy = "objcopy" if ((length $objcopy) == 0);
> > @@ -129,6 +130,14 @@ my $function_regex; # Find the name of a
> > # (return offset and func name)
> > my $mcount_regex; # Find the call site to mcount (return offset)
> >
> > +if ($arch eq "x86") {
> > + if ($bits == 64) {
> > + $arch = "x86_64";
> > + } else {
> > + $arch = "i386";
> > + }
> > +}
> > +
> > if ($arch eq "x86_64") {
> > $section_regex = "Disassembly of section";
> > $function_regex = "^([0-9a-fA-F]+)\\s+<(.*?)>:";
> >
>
> This looks strange to my eyes.
> Why not do the more obvious:
> if ($arch eq "x86" && $bits == 64) {
>
> The change above is like trying to stick to the old i386/x86_64
> notation.

Heh, you're right. This is from writing an update without wanting to
modify the original code too much. But it makes the end result ugly.

I'll create another patch to go on top of this one. We needed this one in
because without it, it broke "make ARCH=x86"

Thanks,

-- Steve