+--gdbindex
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 27 Feb 2011 10:20:42 +0000 (11:20 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 27 Feb 2011 10:20:42 +0000 (11:20 +0100)
+--dwarf4
+cgclassify hammock

bin/hammock

index 683f6f9..748bb43 100755 (executable)
@@ -1,5 +1,4 @@
 #! /usr/bin/perl
-# $Id$
 
 use strict;
 use warnings;
@@ -51,6 +50,8 @@ my $strip;
 # <last 2 lines repearing>
 my $gdbserver;
 my $valgrind;
+my $gdbindex;
+my $dwarf4;
 die if !GetOptions(
   "i|userid=s"=>\$userid,
     "force"=>\$force,
@@ -72,6 +73,8 @@ die if !GetOptions(
     "strip"=>\$strip,
     "gdbserver"=>\$gdbserver,
     "valgrind"=>\$valgrind,
+    "gdbindex"=>\$gdbindex,
+    "dwarf4"=>\$dwarf4,
 );
 $component and ($component=~m{^(?:(?:fedora|rhel)(?:gdb|binutils|glibc)|gdbcvs|binutilscvs|archer-.*|/home/.*)$} or die "-c|--component required to be: fedoragdb|rhelgdb|fedorabinutils|rhelbinutils|fedoraglibc|rhelglibc|gdbcvs|binutilscvs|archer-*|/home/*");
 $component and $component=~m{^/home/} and (-f "$component/gdb/gdbtypes.c" or die "$component/gdb/gdbtypes.c not found");
@@ -90,6 +93,8 @@ $strip and ($srcrpm or $component=~/^(?:fedora|rhel)/) and die "--strip is avail
 $gdbserver and $component ne "gdbcvs" and die "--gdbserver is available only for gdbcvs";
 $valgrind and $component ne "gdbcvs" and die "--valgrind is available only for gdbcvs";
 $gdbserver and $valgrind and die "--gdbserver and --valgrind are mutually exclusive";
+($gdbserver || $valgrind) and $gdbindex and die "--gdbserver|--valgrind and --gdbindex are mutually exclusive";
+($gdbserver || $valgrind || $gdbindex) and $dwarf4 and die "--gdbserver|--valgrind|--gdbindex and --dwarf4 are mutually exclusive";
 my %target;
 do { error "Duplicate target: $_\n" if $target{$_}++; } for @target;
 @arch="x86_64" if @target&&!@arch;
@@ -210,6 +215,9 @@ sub writefile
   close F or die $fname;
 }
 
+# /etc/cgconfig.conf
+spawn "echo cgclassify -g '*':hammock $$ || :";
+
 spawn "renice +19 -p $$";
 spawn "ionice -c3 -p $$";
 newdir $dir;
@@ -229,6 +237,10 @@ my %dump=(
   "file"=>join("\n",@file),
   "configure"=>$configure,
   "gdbcvspie"=>$gdbcvspie,
+  "gdbserver"=>$gdbserver,
+  "valgrind"=>$valgrind,
+  "gdbindex"=>$gdbindex,
+  "dwarf4"=>$dwarf4,
 );
 while (my($name,$val)=each(%dump)) {
   next if !$val;
@@ -455,6 +467,8 @@ while (@distrouse || keys(%child)) {
                ."orphanripper make -k ".join(" ",@check)
                .(!$gdbserver?"":' RUNTESTFLAGS=--target_board=native-gdbserver')
                .(!$valgrind?"":' RUNTESTFLAGS=--target_board=valgrind')
+               .(!$gdbindex?"":' RUNTESTFLAGS="CC_FOR_TARGET=/bin/sh\ $PWD/cc-with-index.sh\ gcc CXX_FOR_TARGET=/bin/sh\ $PWD/cc-with-index.sh\ g++"')
+               .(!$dwarf4?"":' RUNTESTFLAGS="CC_FOR_TARGET=gcc\ -gdwarf-4\ -g0 CXX_FOR_TARGET=g++\ -gdwarf-4\ -g0"')
                ." FORCE_PARALLEL=1 || :; ".q{for t in sum log;do for file in testsuite*/gdb.$t;do suffix="${file#testsuite.unix.}"; suffix="${suffix%/gdb.$t}"; ln $file}." $out/gdb".q{$suffix.$t || :; done; done;};
       }
       # gdbunpack does:
@@ -481,6 +495,13 @@ while (@distrouse || keys(%child)) {
       spawn "mv $out $out.x; gdbunpack $log; mv $out.x/* $out/; rmdir $out.x";
     }
 
+    if ($valgrind) {
+      for my $from (glob "$out/*.log") {
+       (my $to=$from).="filt";
+       spawn q{sed -n 's/^==[0-9]*== \([A-Z]\)/\1/p' <}.$from.q{|grep -v '^\(Conditional jump \|Invalid read \|Use of uninitialised value \|Syscall param .* uninitialised byte\)' >}.$to;
+      }
+    }
+
     my $resultout="$resultdir/$id/$distrodirbase";
     newdir $resultout;
     $resultout.="/out";