lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1243617723.18071.18.camel@falcon>
Date:	Sat, 30 May 2009 01:22:03 +0800
From:	Wu Zhangjin <wuzhangjin@...il.com>
To:	Steven Rostedt <rostedt@...dmis.org>
Cc:	linux-mips@...ux-mips.org, linux-kernel@...r.kernel.org,
	Ralf Baechle <ralf@...ux-mips.org>,
	Ingo Molnar <mingo@...e.hu>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	Nicholas Mc Guire <der.herr@...r.at>
Subject: Re: [PATCH v2 2/6] mips dynamic function tracer support

On Fri, 2009-05-29 at 11:24 -0400, Steven Rostedt wrote:
> On Fri, 29 May 2009, wuzhangjin@...il.com wrote:
> > diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
> > index 409596e..a5d2ace 100755
> > --- a/scripts/recordmcount.pl
> > +++ b/scripts/recordmcount.pl
> > @@ -213,6 +213,17 @@ if ($arch eq "x86_64") {
> >      if ($is_module eq "0") {
> >          $cc .= " -mconstant-gp";
> >      }
> > +
> > +} elsif ($arch eq "mips") {
> > +	$mcount_regex = "^\\s*([0-9a-fA-F]+):.*\\s_mcount\$";
> > +	$ld .= " -melf".$bits."btsmip";
> > +
> > +	$cc .= " -mno-abicalls -fno-pic ";
> > +
> > +    if ($bits == 64) {
> > +		$type = ".dword";
> > +    }
> > +
> >  } else {
> >      die "Arch $arch is not supported with CONFIG_FTRACE_MCOUNT_RECORD";
> >  }
> > @@ -441,12 +452,12 @@ if ($#converts >= 0) {
> >      #
> >      # Step 5: set up each local function as a global
> >      #
> > -    `$objcopy $globallist $inputfile $globalobj`;
> > +    `$objcopy $globallist $inputfile $globalobj 2>&1 >/dev/null`;
> >  
> >      #
> >      # Step 6: Link the global version to our list.
> >      #
> > -    `$ld -r $globalobj $mcount_o -o $globalmix`;
> > +    `$ld -r $globalobj $mcount_o -o $globalmix 2>&1 >/dev/null`;
> 
> We still need to find out why these are giving errors. I don't like the 
> idea of hiding errors that might be useful. The better way is to change 
> the code to avoid having any warnings or errors.
> 

ooh, there is really a bug in scripts/recordmcount.pl, just fixed it.

warnings like this(only in mips/64bit):

 CC      fs/proc/devices.o
mipsel-linux-gnu-objcopy: 'fs/proc/.tmp_gl_devices.o': No such file
mipsel-linux-gnu-ld: fs/proc/.tmp_gl_devices.o: No such file: No such
file or directory
rm: cannot remove `fs/proc/.tmp_gl_devices.o': No such file or directory
rm: cannot remove `fs/proc/.tmp_mx_devices.o': No such file or directory

so i checked the source code and let it print something:

     #
     # Step 5: set up each local function as a global
     #
+    print "$objcopy $globallist $inputfile $globalobj\n";
     `$objcopy $globallist $inputfile $globalobj`;

something like this is printed:

mipsel-linux-gnu-objcopy  --globalize-symbol $L12
arch/mips/kernel/irq_cpu.o arch/mips/kernel/.tmp_gl_irq_cpu.o
mipsel-linux-gnu-objcopy: 'arch/mips/kernel/.tmp_gl_irq_cpu.o': No such
file
mipsel-linux-gnu-ld: arch/mips/kernel/.tmp_gl_irq_cpu.o: No such file:
No such file or directory
rm: cannot remove `arch/mips/kernel/.tmp_gl_irq_cpu.o': No such file or
directory
rm: cannot remove `arch/mips/kernel/.tmp_mx_irq_cpu.o': No such file or
directory


did you see the symbol: $L12, which should be quoted, otherwise, it will
be interpreted as the value of a variable L12(the whole $L12 should be a
string), this $L12 will be an empty string. so, the whole command
becomes:

mipsel-linux-gnu-objcopy --globalize-symbol arch/mips/kernel/irq_cpu.o
arch/mips/kernel/.tmp_gl_irq_cpu.o

the last string .../.tmp_gl_irq_cpu.o becomes the input file, but it's
not there, that is the warning.

fix it like this:

diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
index 59ea43a..907110e 100755
--- a/scripts/recordmcount.pl
+++ b/scripts/recordmcount.pl
@@ -451,8 +451,8 @@ if ($#converts >= 0) {
     my $locallist = "";
 
     foreach my $con (@converts) {
-       $globallist .= " --globalize-symbol $con";
-       $locallist .= " --localize-symbol $con";
+       $globallist .= " --globalize-symbol \"$con\"";
+       $locallist .= " --localize-symbol \"$con\"";
     }
 
     my $globalobj = $dirname . "/.tmp_gl_" . $filename;

I will add this as the third patch, is it okay?

Best Wishes,
--- Wu Zhangjin

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ