mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 01:07:52 +00:00
gprofng: 29470 The test suite should be made more flexible
I add two new targets (check-extra, check-install) for gprofng testing: `make check` runs sanity testing for gprofng and takes ~30 secunds. `make check-extra` runs all gprofng tests and takes ~20 minutus. `make check-install` runs all gprofng tests and uses gprofng installation. On aarch64, there are unwind problems in libgp-collector.so. I set ACCT_FILTER to temporarily ignore problematic functions. gprofng/ChangeLog 2023-05-25 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/29470 * Makefile.am: Add check-extra, check-install. * Makefile.in: Rebuild * testsuite/config/default.exp: Set the GPROFNG variable. * testsuite/gprofng.display/display.exp: Updated the test list. * testsuite/gprofng.display/jsynprog/Intface.java: Correct copyright. * testsuite/gprofng.display/jsynprog/Launcher.java: Likewise. * testsuite/gprofng.display/jsynprog/Makefile: Likewise. * testsuite/gprofng.display/jsynprog/Routine.java: Likewise. * testsuite/gprofng.display/jsynprog/Sub_Routine.java: Likewise. * testsuite/gprofng.display/jsynprog/cloop.cc: Likewise. * testsuite/gprofng.display/jsynprog/jsynprog.h: Likewise. * testsuite/gprofng.display/jsynprog/jsynprog.java: Correct copyright. Add the -j option to run the selected functions. * testsuite/gprofng.display/synprog/check_results.pl: Remove unused environment variable. * testsuite/gprofng.display/synprog/synprog.c: Updated DEFAULT_COMMAND. * testsuite/lib/Makefile.skel: Apply $(ACCT_FILTER). * testsuite/lib/acct.pm: Ignore errors when $(ACCT_FILTER) is set. * testsuite/lib/display-lib.exp: Add TARGET_FLAGS in make_args.
This commit is contained in:
@@ -52,9 +52,12 @@ AM_MAKEFLAGS = \
|
||||
GPROFNG_CPPFLAGS="$(GPROFNG_CPPFLAGS)"
|
||||
|
||||
if TCL_TRY
|
||||
check-DEJAGNU: site.exp development.exp
|
||||
.PHONY: check-small check-extra check-install
|
||||
|
||||
check-DEJAGNU: check-small
|
||||
|
||||
check-small check-extra check-install: site.exp development.exp
|
||||
srcroot=`cd $(srcdir) && pwd`; export srcroot; \
|
||||
r=`pwd`; export r; \
|
||||
LC_ALL=C; export LC_ALL; \
|
||||
EXPECT=$(EXPECT); export EXPECT; \
|
||||
jdk_inc="$(jdk_inc)"; export jdk_inc; \
|
||||
@@ -62,6 +65,8 @@ check-DEJAGNU: site.exp development.exp
|
||||
if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
|
||||
$$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
|
||||
JDK_INC="$(jdk_inc)" \
|
||||
CHECK_TARGET=$@ \
|
||||
PREFIX="$(prefix)" \
|
||||
GPROFNG_BROKEN_JAVAC="$(GPROFNG_BROKEN_JAVAC)" \
|
||||
MAKE="$(MAKE)" CC="$(CC)" CFLAGS="$(CFLAGS) $(PTHREAD_CFLAGS)" \
|
||||
LDFLAGS="$(LDFLAGS)" LIBS="$(PTHREAD_LIBS) $(LIBS)" \
|
||||
|
||||
@@ -929,9 +929,12 @@ uninstall-am:
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
@TCL_TRY_TRUE@check-DEJAGNU: site.exp development.exp
|
||||
@TCL_TRY_TRUE@.PHONY: check-small check-extra check-install
|
||||
|
||||
@TCL_TRY_TRUE@check-DEJAGNU: check-small
|
||||
|
||||
@TCL_TRY_TRUE@check-small check-extra check-install: site.exp development.exp
|
||||
@TCL_TRY_TRUE@ srcroot=`cd $(srcdir) && pwd`; export srcroot; \
|
||||
@TCL_TRY_TRUE@ r=`pwd`; export r; \
|
||||
@TCL_TRY_TRUE@ LC_ALL=C; export LC_ALL; \
|
||||
@TCL_TRY_TRUE@ EXPECT=$(EXPECT); export EXPECT; \
|
||||
@TCL_TRY_TRUE@ jdk_inc="$(jdk_inc)"; export jdk_inc; \
|
||||
@@ -939,6 +942,8 @@ uninstall-am:
|
||||
@TCL_TRY_TRUE@ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
|
||||
@TCL_TRY_TRUE@ $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
|
||||
@TCL_TRY_TRUE@ JDK_INC="$(jdk_inc)" \
|
||||
@TCL_TRY_TRUE@ CHECK_TARGET=$@ \
|
||||
@TCL_TRY_TRUE@ PREFIX="$(prefix)" \
|
||||
@TCL_TRY_TRUE@ GPROFNG_BROKEN_JAVAC="$(GPROFNG_BROKEN_JAVAC)" \
|
||||
@TCL_TRY_TRUE@ MAKE="$(MAKE)" CC="$(CC)" CFLAGS="$(CFLAGS) $(PTHREAD_CFLAGS)" \
|
||||
@TCL_TRY_TRUE@ LDFLAGS="$(LDFLAGS)" LIBS="$(PTHREAD_LIBS) $(LIBS)" \
|
||||
|
||||
@@ -32,6 +32,12 @@ if {![info exists CFLAGS]} {
|
||||
set CFLAGS "-g -O2"
|
||||
}
|
||||
|
||||
if { "$CHECK_TARGET" == "check-install" } {
|
||||
set ::env(GPROFNG) "$PREFIX/bin/gprofng"
|
||||
} else {
|
||||
set ::env(GPROFNG) "$BUILDDIR/src/gprofng"
|
||||
}
|
||||
|
||||
# Create directories where gprofng can find libraries and binaries:
|
||||
remote_exec host "sh -c \"rm -rf tmpdir; mkdir -p tmpdir\""
|
||||
remote_exec host "sh -c \"mkdir -p lib; rm -f lib/gprofng; ln -s ../libcollector/.libs lib/gprofng\""
|
||||
|
||||
@@ -31,34 +31,37 @@ if { ![istarget $pltf-*-*]
|
||||
return
|
||||
}
|
||||
|
||||
switch $pltf {
|
||||
x86_64 {
|
||||
# Columns in the table represent:
|
||||
# dir cflags gprofflags Others
|
||||
if { "$pltf" == "aarch64" } {
|
||||
# Use a filter for not leaf functions due to the unwind problem in libgp-collector.so
|
||||
set ::env(ACCT_FILTER) [join { "|egrep -vw 'gpf|tailcallopt|"
|
||||
"cache_trash|calladd|computeF|cond_global|cond_timeout_global|"
|
||||
"lock_global|lock_local|lock_none|nothreads|sema_global|trylock_global'"
|
||||
} "" ]
|
||||
}
|
||||
if { "$CHECK_TARGET" == "check-extra" || "$CHECK_TARGET" == "check-install" } {
|
||||
# dir cflags gprofflags tflags
|
||||
set table {
|
||||
{"jsynprog" "-g -Wall" "-p on -j on"}
|
||||
{"mttest" "-g -O0" "-p on"}
|
||||
{"mttest" "-g -O0" "-p on -h on"}
|
||||
{"synprog" "-g -O0" "-p on"}
|
||||
{"synprog" "-g -O0" "-p on -h on"}
|
||||
{"mttest" "-g -O0" "-p on"}
|
||||
{"mttest" "-g -O0" "-p on -h on"}
|
||||
{"mttest" "-g -O" "-p on -a on"}
|
||||
{"mttest" "-g -O" "-p on -a off"}
|
||||
{"mttest" "-g -O" "-p on -h on"}
|
||||
{"jsynprog" "-g -Wall" "-p on -a on"}
|
||||
{"jsynprog" "-g -Wall" "-p on -a off"}
|
||||
{"jsynprog" "-g -Wall" "-p on -j on"}
|
||||
{"synprog" "-g -O0" "-p on"}
|
||||
{"synprog" "-g -O0" "-p on -h on"}
|
||||
{"synprog" "-g -O" "-p on -a on"}
|
||||
{"synprog" "-g -O" "-p on -a off"}
|
||||
{"synprog" "-g -O" "-p on -h on"}
|
||||
}
|
||||
}
|
||||
aarch64 {
|
||||
} else { # "$CHECK_TARGET" is "check" or "check-DEJAGNU"
|
||||
# dir cflags gprofflags tflags
|
||||
set table {
|
||||
{"jsynprog" "-g -Wall" "-p on -j on"}
|
||||
{"mttest" "-g -O0" "-p on"}
|
||||
{"synprog" "-g -O0" "-p on"}
|
||||
{"jsynprog" "-g -Wall" "-p on -j on" "-j add_int"}
|
||||
{"mttest" "-g -O0" "-p on" "-j calladd"}
|
||||
{"synprog" "-g -O0" "-p on" "cpu"}
|
||||
}
|
||||
}
|
||||
default {
|
||||
# Columns in the table represent:
|
||||
# dir cflags gprofflags Others
|
||||
set table {
|
||||
{"jsynprog" "" ""}
|
||||
{"mttest" "" ""}
|
||||
{"synprog" "" ""}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
global JDK_INC
|
||||
@@ -68,6 +71,11 @@ foreach line $table {
|
||||
set dir [lindex $line 0]
|
||||
set cflags [lindex $line 1]
|
||||
set gprofflags [lindex $line 2]
|
||||
if { [llength $line] > 3 } {
|
||||
set tflags [lindex $line 3]
|
||||
} else {
|
||||
set tflags " "
|
||||
}
|
||||
|
||||
verbose [file rootname $line]
|
||||
verbose running display test $line
|
||||
@@ -75,7 +83,7 @@ foreach line $table {
|
||||
&& ($JDK_INC == "" || $GPROFNG_BROKEN_JAVAC == "yes") } {
|
||||
unsupported $dir
|
||||
} else {
|
||||
run_display_test $dir $cflags $gprofflags
|
||||
run_display_test $dir $cflags $gprofflags $tflags
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,23 @@
|
||||
// Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
|
||||
public interface Intface {
|
||||
public int add_int (int scale);
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
// Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
// @(#)Launcher.java 1.3 10/03/24 SMI
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
import java.lang.reflect.*;
|
||||
|
||||
|
||||
@@ -52,5 +52,5 @@ jsynprog.class: $(JAVA_SRCS)
|
||||
$(EXPERIMENT): $(TARGETS)
|
||||
@echo " ---- Build: $@ -----"
|
||||
rm -rf $@
|
||||
$(COLLECT) $(COLLECT_FLAGS) -o $@ $(JAVA) $(JAVACFLAGS) jsynprog
|
||||
$(COLLECT) $(COLLECT_FLAGS) -o $@ $(JAVA) $(JAVACFLAGS) jsynprog $(TARGET_FLAGS)
|
||||
|
||||
|
||||
@@ -1,8 +1,22 @@
|
||||
/**
|
||||
* Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* This class implements the Intface interface
|
||||
* increments value of integer and floats
|
||||
*/
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
/* Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
** @(#)Sub_Routine.java 1.4 10/03/24 SMI
|
||||
** This is subclass of Routine , overrides one method
|
||||
*/
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
// This is subclass of Routine, overrides one method
|
||||
|
||||
public class Sub_Routine extends Routine {
|
||||
private static native double cTimer();
|
||||
|
||||
@@ -1,6 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
/* Copyright (c) 2006, 2011, Oracle and/or its affiliates. All Rights Reserved. */
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#include <jni.h>
|
||||
/* Header for class jsynprog */
|
||||
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
// Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
// @(#)jsynprog.java SMI
|
||||
/* Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
Contributed by Oracle.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
@@ -27,17 +44,22 @@ class jsynprog
|
||||
jsynprog jsyn_obj = new jsynprog();
|
||||
Integer ni;
|
||||
int scale = 1000;
|
||||
String commands = "memalloc.add_int.add_double.has_inner_class" +
|
||||
".recurse.recursedeep.bounce.array_op.vector_op.sys_op" +
|
||||
".jni_JavaJavaC.JavaCC.JavaCJava.Launcher";
|
||||
|
||||
createAcct();
|
||||
LoadJNILibrary(args);
|
||||
testtime = computeSet();
|
||||
|
||||
/* check for invocation parameter */
|
||||
if (args.length != 0) {
|
||||
if (args[0].equals("fast")) {
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if (args[i].equals("-fast")) {
|
||||
scale = 10000;
|
||||
} else if (args[0].equals("slow")) {
|
||||
} else if (args[i].equals("-slow")) {
|
||||
scale = 1;
|
||||
} else if (args[i].equals("-j") && i + 1 < args.length) {
|
||||
commands = args[++i];
|
||||
} else {
|
||||
System.err.println("fatal: unexpected argument: " + args[0] );
|
||||
System.exit(1);
|
||||
@@ -47,84 +69,115 @@ class jsynprog
|
||||
/* large memory allocations, trigger gc */
|
||||
Routine rtn = new Routine();
|
||||
Sub_Routine sbrt = new Sub_Routine();
|
||||
recTime();
|
||||
rtn.memalloc(10000, scale);
|
||||
printValue("Routine.memalloc", false);
|
||||
|
||||
if (commands.indexOf("memalloc") >= 0) {
|
||||
recTime();
|
||||
rtn.memalloc(10000, scale);
|
||||
printValue("Routine.memalloc", false);
|
||||
}
|
||||
|
||||
/* add integers */
|
||||
recTime();
|
||||
ni = new Integer (rtn.add_int(scale));
|
||||
printValue("Routine.add_int", true);
|
||||
if (commands.indexOf("add_int") >= 0) {
|
||||
recTime();
|
||||
ni = new Integer (rtn.add_int(scale));
|
||||
printValue("Routine.add_int", true);
|
||||
}
|
||||
|
||||
/* add double */
|
||||
recTime();
|
||||
Double nd = new Double(rtn.add_double(scale));
|
||||
printValue("Routine.add_double", true);
|
||||
if (commands.indexOf("add_double") >= 0) {
|
||||
recTime();
|
||||
Double nd = new Double(rtn.add_double(scale));
|
||||
printValue("Routine.add_double", true);
|
||||
}
|
||||
|
||||
/* call method in derived class */
|
||||
recTime();
|
||||
ni = new Integer (sbrt.add_int(scale));
|
||||
printValue("Sub_Routine.add_int", true);
|
||||
if (commands.indexOf("add_int") >= 0) {
|
||||
recTime();
|
||||
ni = new Integer (sbrt.add_int(scale));
|
||||
printValue("Sub_Routine.add_int", true);
|
||||
}
|
||||
|
||||
/* call method that defines an inner class */
|
||||
recTime();
|
||||
Integer[] na = rtn.has_inner_class(scale);
|
||||
printValue("Routine.has_inner_class", true);
|
||||
if (commands.indexOf("has_inner_class") >= 0) {
|
||||
recTime();
|
||||
Integer[] na = rtn.has_inner_class(scale);
|
||||
printValue("Routine.has_inner_class", true);
|
||||
}
|
||||
|
||||
/* recursion */
|
||||
recTime();
|
||||
rtn.recurse(0,80, scale);
|
||||
printValue("Routine.recurse", true);
|
||||
if (commands.indexOf("recurse") >= 0) {
|
||||
recTime();
|
||||
rtn.recurse(0,80, scale);
|
||||
printValue("Routine.recurse", true);
|
||||
}
|
||||
|
||||
/* deep recursion */
|
||||
recTime();
|
||||
rtn.recursedeep(0,500, scale);
|
||||
printValue("<Truncated-stack>", true);
|
||||
if (commands.indexOf("recursedeep") >= 0) {
|
||||
recTime();
|
||||
rtn.recursedeep(0,500, scale);
|
||||
printValue("<Truncated-stack>", true);
|
||||
}
|
||||
|
||||
/* indirect recursion */
|
||||
recTime();
|
||||
rtn.bounce(0,20, scale);
|
||||
printValue("Routine.bounce", true);
|
||||
if (commands.indexOf("bounce") >= 0) {
|
||||
recTime();
|
||||
rtn.bounce(0,20, scale);
|
||||
printValue("Routine.bounce", true);
|
||||
}
|
||||
|
||||
/* array operations */
|
||||
recTime();
|
||||
rtn.array_op(scale);
|
||||
printValue("Routine.array_op", false);
|
||||
if (commands.indexOf("array_op") >= 0) {
|
||||
recTime();
|
||||
rtn.array_op(scale);
|
||||
printValue("Routine.array_op", false);
|
||||
}
|
||||
|
||||
/* Vector operations */
|
||||
recTime();
|
||||
rtn.vector_op(scale);
|
||||
printValue("Routine.vector_op", false);
|
||||
if (commands.indexOf("vector_op") >= 0) {
|
||||
recTime();
|
||||
rtn.vector_op(scale);
|
||||
printValue("Routine.vector_op", false);
|
||||
}
|
||||
|
||||
/* spend time in system calls */
|
||||
recTime();
|
||||
rtn.sys_op(scale);
|
||||
printValue("Routine.sys_op", false);
|
||||
if (commands.indexOf("sys_op") >= 0) {
|
||||
recTime();
|
||||
rtn.sys_op(scale);
|
||||
printValue("Routine.sys_op", false);
|
||||
}
|
||||
|
||||
/* java->java->c */
|
||||
recTime();
|
||||
int np = 0;
|
||||
jni_JavaJavaC(np, scale);
|
||||
printValue("jsynprog.jni_JavaJavaC", true);
|
||||
if (commands.indexOf("jni_JavaJavaC") >= 0) {
|
||||
recTime();
|
||||
int np = 0;
|
||||
jni_JavaJavaC(np, scale);
|
||||
printValue("jsynprog.jni_JavaJavaC", true);
|
||||
}
|
||||
|
||||
/* java->c->c */
|
||||
recTime();
|
||||
JavaCC(scale);
|
||||
printValue("jsynprog.JavaCC", true);
|
||||
if (commands.indexOf("JavaCC") >= 0) {
|
||||
recTime();
|
||||
JavaCC(scale);
|
||||
printValue("jsynprog.JavaCC", true);
|
||||
}
|
||||
|
||||
/* java->c->java */
|
||||
recTime();
|
||||
JavaCJava(scale);
|
||||
printValue("jsynprog.JavaCJava", true);
|
||||
if (commands.indexOf("JavaCJava") >= 0) {
|
||||
recTime();
|
||||
JavaCJava(scale);
|
||||
printValue("jsynprog.JavaCJava", true);
|
||||
}
|
||||
|
||||
|
||||
/* dynamically loaded classes */
|
||||
String java_ver = System.getProperty("java.version");
|
||||
Launcher lnch = new Launcher();
|
||||
String[] params = new String[]{"DynLoadedClass"};
|
||||
recTime();
|
||||
lnch.main(params);
|
||||
printValue("Launcher.main", true);
|
||||
if (commands.indexOf("Launcher") >= 0) {
|
||||
String java_ver = System.getProperty("java.version");
|
||||
Launcher lnch = new Launcher();
|
||||
String[] params = new String[]{"DynLoadedClass"};
|
||||
recTime();
|
||||
lnch.main(params);
|
||||
printValue("Launcher.main", true);
|
||||
}
|
||||
|
||||
System.gc();
|
||||
}
|
||||
|
||||
@@ -25,16 +25,8 @@ if 0;
|
||||
use strict;
|
||||
require "acct.pm";
|
||||
|
||||
my(@checkTime);
|
||||
|
||||
if ("$ENV{DA_io}" eq "on") {
|
||||
@checkTime = ();
|
||||
acct::readAcct("synprog.acct2", @checkTime);
|
||||
} else {
|
||||
@checkTime = (1, 2);
|
||||
acct::readAcct("synprog.acct", @checkTime);
|
||||
}
|
||||
|
||||
my(@checkTime) = (1, 2); # columns 1 and 2 - time in seconds.
|
||||
acct::readAcct($ARGV[0], @checkTime);
|
||||
acct::read_er_print_out($ARGV[1], -1);
|
||||
acct::createDiff();
|
||||
exit acct::set_retVal(0);
|
||||
|
||||
@@ -149,7 +149,7 @@ static int CLONE_FLAGS[] = {
|
||||
/* the default script */
|
||||
static char DEFAULT_COMMAND[] =
|
||||
"icpu.md.cpu.rec.recd.dousl.gpf.fitos.ec.tco.b.nap.uf."
|
||||
"sys.sig.so.sx.so.sched.uwdc";
|
||||
"sys.sig.so.sx.so.sched";
|
||||
|
||||
struct scripttab scripttab[] = {
|
||||
{"abt", doabort, "doabort", 0, 0},
|
||||
|
||||
@@ -56,7 +56,8 @@ $(DISPLAY_LOG): $(EXPERIMENT)
|
||||
$(DISPLAY) $(DISPLAY_FLAGS) $(EXPERIMENT) > $@
|
||||
|
||||
compare: $(DISPLAY_LOG)
|
||||
perl -I $(srcdir)/../../lib $(srcdir)/check_results.pl $(ACCT_FILE) $(DISPLAY_LOG)
|
||||
cat $(ACCT_FILE) $(ACCT_FILTER) > $(ACCT_FILE).fltr
|
||||
perl -I $(srcdir)/../../lib $(srcdir)/check_results.pl $(ACCT_FILE).fltr $(DISPLAY_LOG)
|
||||
|
||||
clobber clean:
|
||||
rm -rf *.er
|
||||
|
||||
@@ -97,7 +97,21 @@ sub set_retVal
|
||||
if ( $retVal == 0 ) {
|
||||
$retVal = $_[0];
|
||||
if ($retVal != 0 ) {
|
||||
warn sprintf("DEBUG: retVal=%d\n", $retVal);
|
||||
my $s = "";
|
||||
if ($retVal == $ERROR_DIFF_RANGE) {
|
||||
$s = "Difference out of range";
|
||||
} elsif ($retVal == $ERROR_HIGH_UNKNOWN) {
|
||||
$s = "High unknown detected";
|
||||
} elsif ($retVal == $ERROR_ACCT_MISMATCH) {
|
||||
$s = "Accounting file mismatch";
|
||||
} elsif ($retVal == $ERROR_CALLER_VERIF) {
|
||||
$s = "Caller/caller verification failed";
|
||||
} elsif ($retVal == $ERROR_ZERO_METRIC) {
|
||||
$s = "Unexpected zero metric";
|
||||
} elsif ($retVal == $ERROR_NEGATIVE_TIME) {
|
||||
$s = "Negative CPU time";
|
||||
}
|
||||
warn sprintf("DEBUG: retVal=%d %s\n", $retVal, $s);
|
||||
}
|
||||
}
|
||||
return $retVal;
|
||||
@@ -450,7 +464,9 @@ sub doComp
|
||||
if ( $r2 > 0 ) {
|
||||
$err_diff_range = $ERROR_DIFF_RANGE;
|
||||
} else {
|
||||
$err_zero_metric = $ERROR_ZERO_METRIC;
|
||||
if (! exists $ENV{ACCT_FILTER}) {
|
||||
$err_zero_metric = $ERROR_ZERO_METRIC;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$err_acct_mismatch = $ERROR_ACCT_MISMATCH;
|
||||
@@ -544,7 +560,9 @@ sub doComp2AVG
|
||||
if ( $r2 > 0 ) {
|
||||
$err_diff_range = $ERROR_DIFF_RANGE;
|
||||
} else {
|
||||
$err_zero_metric = $ERROR_ZERO_METRIC;
|
||||
if (! exists $ENV{ACCT_FILTER}) {
|
||||
$err_zero_metric = $ERROR_ZERO_METRIC;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$err_acct_mismatch = $ERROR_ACCT_MISMATCH;
|
||||
@@ -592,7 +610,8 @@ sub checkUnknown()
|
||||
$val = sprintf($R->{FMT}, $val);
|
||||
$rate = sprintf($R->{FMT},($val / $total) * 100);
|
||||
|
||||
if (($val > $R->{'P_RANGE'}) && ($rate > $R->{'P_RATE'})) {
|
||||
if ((! exists $ENV{ACCT_FILTER}) &&
|
||||
($val > $R->{'P_RANGE'}) && ($rate > $R->{'P_RATE'})) {
|
||||
&set_retVal($ERROR_HIGH_UNKNOWN);
|
||||
&openFsingleScr();
|
||||
$fmt = "#%-8s %10s %10s %s\n";
|
||||
|
||||
@@ -50,7 +50,7 @@ proc run_native_host_cmd { command } {
|
||||
# display options, collect flags, app options? Do we want these to be
|
||||
# set on a per-app basis? (If so, they should probably be driven by a
|
||||
# file in the test dir.)
|
||||
proc run_display_test { dir cflags gprofflags } {
|
||||
proc run_display_test { dir cflags gprofflags tflags } {
|
||||
global srcdir MAKE CC CFLAGS LDFLAGS LIBS BUILDDIR
|
||||
set stripped [string map {" " ""} $dir]
|
||||
set testdir [string map {" " ""} "$dir.$cflags,$gprofflags"]
|
||||
@@ -58,7 +58,7 @@ proc run_display_test { dir cflags gprofflags } {
|
||||
set tdir "tmpdir/$testdir"
|
||||
send_log "create dir: $tdir\n"
|
||||
set output [run_native_host_cmd "mkdir -p $tdir"]
|
||||
set gprofng $BUILDDIR/src/gprofng
|
||||
set gprofng $::env(GPROFNG)
|
||||
|
||||
set fd [open "$tdir/rules.txt" "w"]
|
||||
switch -regexp -- $testdir {
|
||||
@@ -80,6 +80,7 @@ proc run_display_test { dir cflags gprofflags } {
|
||||
|
||||
set make_args "-f $sdir/Makefile srcdir=\"$sdir\" builddir=\"$BUILDDIR\" \
|
||||
VPATH=\"$dir\" CC=\"$CC\" CFLAGS=\"$cflags\" LDFLAGS=\"$LDFLAGS\" \
|
||||
TARGET_FLAGS=\"$tflags\" \
|
||||
DISPLAY_FLAGS=\"$DISPLAY_FLAGS\" \
|
||||
COLLECT_FLAGS=\"$gprofflags\" GPROFNG=\"$gprofng\" MAKE=\"$MAKE\""
|
||||
set output [run_native_host_cmd "cd $tdir && $MAKE $make_args all"]
|
||||
|
||||
Reference in New Issue
Block a user