1
1

Added using of a portable implementation of 'snprintf()', that comes also with the VT-package

This commit was SVN r19836.
Этот коммит содержится в:
Matthias Jurenz 2008-10-29 10:03:23 +00:00
родитель b50a4f126a
Коммит 93fcd24832
54 изменённых файлов: 1004 добавлений и 418 удалений

Просмотреть файл

@ -1,10 +1,14 @@
SUBDIRS = \ SUBDIRS = \
util \
extlib \ extlib \
vtlib \ vtlib \
tools \ tools \
doc doc
EXTRA_DIST = \ EXTRA_DIST = \
config_bottom.h \
CONFIG-EXAMPLES \
VERSION \
examples/c/Makefile \ examples/c/Makefile \
examples/c/Makefile.config \ examples/c/Makefile.config \
examples/c/hello.c \ examples/c/hello.c \
@ -19,7 +23,5 @@ EXTRA_DIST = \
examples/fortran/Makefile.config \ examples/fortran/Makefile.config \
examples/fortran/hello.F \ examples/fortran/hello.F \
examples/fortran/pi.F \ examples/fortran/pi.F \
examples/fortran/ring.F \ examples/fortran/ring.F
CONFIG-EXAMPLES \
VERSION

Просмотреть файл

@ -345,27 +345,30 @@ AC_DEFUN([ACVT_CONF_SUMMARY],
echo " Host (H): $host" echo " Host (H): $host"
echo " Cross compiling: $cross_compiling" echo " Cross compiling: $cross_compiling"
echo "" echo ""
echo " C compiler: $CC" AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C Compiler (H|B): $CC | $CC_FOR_BUILD"],
[echo " C Compiler: $CC"])
AS_IF([test x"$cross_compiling" = "xyes"], AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C++ Compiler (H|B): $CXX | $CXX_FOR_BUILD"], [echo " C++ Compiler (H|B): $CXX | $CXX_FOR_BUILD"],
[echo " C++ compiler: $CXX"]) [echo " C++ compiler: $CXX"])
echo " Fortran 77 compiler: $F77" echo " Fortran 77 compiler: $F77"
echo " Fortran 90 compiler: $FC" echo " Fortran 90 compiler: $FC"
echo " C preprocessor: $CPP" AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C preprocessor (H|B): $CPP | $CPP_FOR_BUILD"],
[echo " C preprocessor: $CPP"])
AS_IF([test x"$cross_compiling" = "xyes"], AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C++ preprocessor (H|B): $CXXCPP | $CXXCPP_FOR_BUILD"], [echo " C++ preprocessor (H|B): $CXXCPP | $CXXCPP_FOR_BUILD"],
[echo " C++ preprocessor: $CXXCPP"]) [echo " C++ preprocessor: $CXXCPP"])
echo "" echo ""
echo " CFLAGS: $CFLAGS" AS_IF([test x"$cross_compiling" = "xyes"],
[echo " CFLAGS (H|B): $CFLAGS | $CFLAGS_FOR_BUILD"],
[echo " CFLAGS: $CFLAGS"])
AS_IF([test x"$cross_compiling" = "xyes"], AS_IF([test x"$cross_compiling" = "xyes"],
[echo " CXXFLAGS (H|B): $CXXFLAGS | $CXXFLAGS_FOR_BUILD"], [echo " CXXFLAGS (H|B): $CXXFLAGS | $CXXFLAGS_FOR_BUILD"],
[echo " CXXFLAGS: $CXXFLAGS"]) [echo " CXXFLAGS: $CXXFLAGS"])
echo " FFLAGS: $FFLAGS" echo " FFLAGS: $FFLAGS"
echo " FCFLAGS: $FCFLAGS" echo " FCFLAGS: $FCFLAGS"
AS_IF([test x"$cross_compiling" = "xyes"], AS_IF([test x"$cross_compiling" = "xyes"],
[echo " CPPFLAGS (H|B): $CPPFLAGS | $CPPFLAGS_FOR_BUILD"],
[echo " CPPFLAGS: $CPPFLAGS"])
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " LDFLAGS (H|B): $LDFLAGS | $LDFLAGS_FOR_BUILD"], [echo " LDFLAGS (H|B): $LDFLAGS | $LDFLAGS_FOR_BUILD"],
[echo " LDFLAGS: $LDFLAGS"]) [echo " LDFLAGS: $LDFLAGS"])
AS_IF([test x"$cross_compiling" = "xyes"], AS_IF([test x"$cross_compiling" = "xyes"],
@ -438,6 +441,109 @@ AC_DEFUN([ACVT_CONF_SUMMARY],
echo "-----------------------------------------------------------------------------" echo "-----------------------------------------------------------------------------"
]) ])
]) ])
AC_DEFUN([ACVT_CROSS],
[
comp_for_build_given="no"
AC_ARG_VAR(CC_FOR_BUILD, [C compiler command for build system])
AC_ARG_VAR(CFLAGS_FOR_BUILD, [C compiler flags for build system])
AC_ARG_VAR(CPP_FOR_BUILD, [C preprocessor for build system])
AC_ARG_VAR(CXX_FOR_BUILD, [C++ compiler command for build system])
AC_ARG_VAR(CXXFLAGS_FOR_BUILD, [C++ compiler flags for build system])
AC_ARG_VAR(CXXCPP_FOR_BUILD, [C++ preprocessor for build system])
AC_ARG_VAR(CPPFLAGS_FOR_BUILD, [C/C++/Objective C preprocessor flags for build system])
AC_ARG_VAR(LDFLAGS_FOR_BUILD, [linker flags for build system])
AC_ARG_VAR(LIBS_FOR_BUILD, [libraries to pass to the linker for build system])
AS_IF([test x"$cross_compiling" != "xyes"],
[
# reset *_FOR_BUILD variables, if no cross compiling
CC_FOR_BUILD=$CC; CFLAGS_FOR_BUILD=$CFLAGS; CPP_FOR_BUILD=$CPP
CXX_FOR_BUILD=$CXX; CXXFLAGS_FOR_BUILD=$CXXFLAGS; CXXCPP_FOR_BUILD=$CXXCPP
CPPFLAGS_FOR_BUILD=$CPPFLAGS; LDFLAGS_FOR_BUILD=$LDFLAGS; LIBS_FOR_BUILD=$LIBS
],
[
AC_MSG_CHECKING([for C compiler for build system ($build)])
AS_IF([test x"$CC_FOR_BUILD" = x],
[AC_MSG_RESULT([$CC])], [AC_MSG_RESULT([$CC_FOR_BUILD])])
AC_MSG_CHECKING([for C++ compiler for build system ($build)])
AS_IF([test x"$CXX_FOR_BUILD" = x],
[AC_MSG_RESULT([$CXX])], [AC_MSG_RESULT([$CXX_FOR_BUILD])])
AS_IF([test x"$CC_FOR_BUILD" = x -a x"$CXX_FOR_BUILD" != x],
[
AC_MSG_ERROR([no C compiler command for build system given
Set \`CC_FOR_BUILD' to the C compiler of build system.])
])
AS_IF([test x"$CXX_FOR_BUILD" = x -a x"$CC_FOR_BUILD" != x],
[
AC_MSG_ERROR([no C++ compiler command for build system given
Set \`CXX_FOR_BUILD' to the C++ compiler of build system.])
])
AS_IF([test x"$CC_FOR_BUILD" != x -a x"$CXX_FOR_BUILD" != x],
[
comp_for_build_given="yes"
])
AS_IF([test x"$CC_FOR_BUILD" = x -a x"$CXX_FOR_BUILD" = x],
[
AC_MSG_NOTICE([no C/C++ compiler command for build system given
In cross compile mode, it's recommended to build the compiler wrappers and OPARI for the build system. Set \`CC_FOR_BUILD' and `CXX_FOR_BUILD' to the C/C++ compiler of build system therfor.])
CC_FOR_BUILD=$CC
CXX_FOR_BUILD=$CXX
])
AS_IF([test x"$CFLAGS_FOR_BUILD" = x], [CFLAGS_FOR_BUILD=$CFLAGS])
AS_IF([test x"$CXXFLAGS_FOR_BUILD" = x], [CXXFLAGS_FOR_BUILD=$CXXFLAGS])
AS_IF([test x"$CPPFLAGS_FOR_BUILD" = x], [CPPFLAGS_FOR_BUILD=$CPPFLAGS])
AS_IF([test x"$LDFLAGS_FOR_BUILD" = x], [LDFLAGS_FOR_BUILD=$LDFLAGS])
AS_IF([test x"$LIBS_FOR_BUILD" = x], [LIBS_FOR_BUILD=$LIBS])
AS_IF([test x"$comp_for_build_given" = "xyes"],
[
sav_CPPFLAGS=$CPPFLAGS; sav_LDFLAGS=$LDFLAGS; sav_LIBS=$LIBS
CPPFLAGS=$CPPFLAGS_FOR_BUILD; LDFLAGS=$LDFLAGS_FOR_BUILD; LIBS=$LIBS_FOR_BUILD
sav_CC=$CC; sav_CFLAGS=$CFLAGS; sav_CPP=$CPP
CC=$CC_FOR_BUILD; CFLAGS=$CFLAGS_FOR_BUILD
AC_MSG_CHECKING([whether the C compiler for build system works])
AC_TRY_LINK([], [],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([C compiler for build system cannot create executables
See \`config.log' for more details.])])
AS_IF([test x"$CPP_FOR_BUILD" = x],
[
unset CPP
unset ac_cv_prog_CPP # clear cache variable for CPP
AC_PROG_CPP
CPP_FOR_BUILD=$CPP
])
CC=$sav_CC; CFLAGS=$sav_CFLAGS; CPP=$sav_CPP
AC_LANG([C++])
sav_CXX=$CXX; sav_CXXFLAGS=$CXXFLAGS; sav_CXXCPP=$CXXCPP
CXX=$CXX_FOR_BUILD; CXXFLAGS=$CXXFLAGS_FOR_BUILD
AC_MSG_CHECKING([whether the C++ compiler for build system works])
AC_TRY_LINK([], [],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([C++ compiler for build system cannot create executables
See \`config.log' for more details.])])
AS_IF([test x"$CXXCPP_FOR_BUILD" = x],
[
unset CXXCPP
unset ac_cv_prog_CXXCPP # clear cache variable for CXXCPP
AC_PROG_CXXCPP
CXXCPP_FOR_BUILD=$CXXCPP
])
CXX=$sav_CXX; CXXFLAGS=$sav_CXXFLAGS; CXXCPP=$sav_CXXCPP
AC_LANG([C])
CPPFLAGS=$sav_CPPFLAGS; LDFLAGS=$sav_LDFLAGS; LIBS=$sav_LIBS
])
])
])
AC_DEFUN([ACVT_DL], AC_DEFUN([ACVT_DL],
[ [
dl_error="no" dl_error="no"

40
ompi/contrib/vt/vt/config_bottom.h Обычный файл
Просмотреть файл

@ -0,0 +1,40 @@
#ifndef _CONFIG_H
#error "config_bottom.h should only be included from config.h"
#endif /* _CONFIG_H */
#include "util/util.h"
#if !(defined(HAVE_ASPRINTF) && HAVE_ASPRINTF)
# undef asprintf
# define asprintf vt_asprintf
#endif /* HAVE_ASPRINTF */
#if !(defined(HAVE_SNPRINTF) && HAVE_SNPRINTF)
# undef snprintf
# define snprintf vt_snprintf
#endif /* HAVE_SNPRINTF */
#if !(defined(HAVE_VASPRINTF) && HAVE_VASPRINTF)
# undef vasprintf
# define vasprintf vt_vasprintf
#endif /* HAVE_VASPRINTF */
#if !(defined(HAVE_VSNPRINTF) && HAVE_VSNPRINTF)
# undef vsnprintf
# define vsnprintf vt_vsnprintf
#endif /* HAVE_VSNPRINTF */
#if !(defined(HAVE_STRDUP) && HAVE_STRDUP)
# undef strdup
# define strdup vt_strdup
#endif /* HAVE_STRDUP */
#if defined(HAVE_FNMATCH_H) && HAVE_FNMATCH_H
# include <fnmatch.h>
#else /* HAVE_FNMATCH_H */
# undef fnmatch
# define fnmatch vt_fnmatch
# define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
# define vt_fnmatch(_pattern, _string, __flags) strcmp(_string, _pattern)
#endif /* HAVE_FNMATCH_H */

Просмотреть файл

@ -2,15 +2,24 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.60) AC_PREREQ(2.60)
AC_INIT(VampirTrace, 5.4.6, service@vampir.eu) AC_INIT(VampirTrace, 5.4.6, vampirsupport@zih.tu-dresden.de)
AM_INIT_AUTOMAKE(VampirTrace, 5.4.6) AM_INIT_AUTOMAKE(VampirTrace, 5.4.6)
AC_CONFIG_SRCDIR(config.h.in)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
ACVT_CONF_INIT ACVT_CONF_INIT
ACVT_CONF_TITLE([Initialization]) ACVT_CONF_TITLE([Initialization])
# Setup the top and bottom of the config.h file
AH_TOP([
#ifndef _CONFIG_H
#define _CONFIG_H
])
AH_BOTTOM([
#include "config_bottom.h"
#endif /* _CONFIG_H */
])
# Check for absolute paths of $builddir and $srcdir # Check for absolute paths of $builddir and $srcdir
top_vt_builddir="`pwd`" top_vt_builddir="`pwd`"
cd "$srcdir" cd "$srcdir"
@ -18,7 +27,14 @@ top_vt_srcdir="`pwd`"
cd "$top_vt_builddir" cd "$top_vt_builddir"
AC_MSG_NOTICE([builddir: $top_vt_builddir]) AC_MSG_NOTICE([builddir: $top_vt_builddir])
AC_MSG_NOTICE([srcdir: $top_vt_srcdir]) AC_MSG_NOTICE([srcdir: $top_vt_srcdir])
AS_IF([test "$top_vt_builddir" != "$top_vt_srcdir"], AC_MSG_NOTICE([detected VPATH build])) AS_IF([test "$top_vt_builddir" != "$top_vt_srcdir"],
[
AC_MSG_NOTICE([detected VPATH build])
# If VPATH build, including of the source directory needed
# to find '<srcdir>/config_bottom.h' and '<srcdir>/util/util.h'
CPPFLAGS='-I$(top_srcdir)'" $CPPFLAGS"
CXXCPPFLAGS='-I$(top_srcdir)'" $CXXCPPFLAGS"
])
# Check for type of host system # Check for type of host system
AC_CANONICAL_HOST AC_CANONICAL_HOST
@ -43,70 +59,11 @@ AC_PROG_CXXCPP
AC_PROG_F77 AC_PROG_F77
AC_PROG_FC AC_PROG_FC
AM_CONDITIONAL(AMHAVECC, test x"$CC" != x)
AM_CONDITIONAL(AMHAVECXX, test x"$CXX" != x)
AM_CONDITIONAL(AMHAVEF77, test x"$F77" != x) AM_CONDITIONAL(AMHAVEF77, test x"$F77" != x)
AM_CONDITIONAL(AMHAVEFC, test x"$FC" != x) AM_CONDITIONAL(AMHAVEFC, test x"$FC" != x)
# Check for *front-end* C++ compiler, preprocessor, and flags # Check cross-build related stuff
AC_ARG_VAR(CXX_FOR_BUILD, [C++ compiler command for build system]) ACVT_CROSS
AC_ARG_VAR(CXXFLAGS_FOR_BUILD, [C++ compiler flags for build system])
AC_ARG_VAR(CXXCPP_FOR_BUILD, [C++ preprocessor for build system])
AC_ARG_VAR(CPPFLAGS_FOR_BUILD, [C/C++/Objective C preprocessor flags for build system])
AC_ARG_VAR(LDFLAGS_FOR_BUILD, [linker flags for build system])
AC_ARG_VAR(LIBS_FOR_BUILD, [libraries to pass to the linker for build system])
AS_IF([test x"$cross_compiling" = "xyes"],
[
AC_MSG_CHECKING([for C++ compiler for build system ($build)])
AS_IF([test x"$CXX_FOR_BUILD" = x],
[
AC_MSG_RESULT([$CXX])
AC_MSG_NOTICE([no C++ compiler command for build system given
In cross compile mode, it's recommended to build the compiler wrappers and OPARI for the build system. Set \`CXX_FOR_BUILD' to the C++ compiler of build system therefor.])
CXX_FOR_BUILD=$CXX
cxx_for_build_given="no"
],
[
AC_MSG_RESULT([$CXX_FOR_BUILD])
cxx_for_build_given="yes"
])
AS_IF([test x"$CXXFLAGS_FOR_BUILD" = x], [CXXFLAGS_FOR_BUILD=$CXXFLAGS])
AS_IF([test x"$CPPFLAGS_FOR_BUILD" = x], [CPPFLAGS_FOR_BUILD=$CPPFLAGS])
AS_IF([test x"$LDFLAGS_FOR_BUILD" = x], [LDFLAGS_FOR_BUILD=$LDFLAGS])
AS_IF([test x"$LIBS_FOR_BUILD" = x], [LIBS_FOR_BUILD=$LIBS])
AS_IF([test x"$cxx_for_build_given" = "xyes"],
[
AC_LANG([C++])
sav_CXX=$CXX; sav_CXXFLAGS=$CXXFLAGS; sav_CXXCPP=$CXXCPP
sav_CPPFLAGS=$CPPFLAGS; sav_LDFLAGS=$LDFLAGS; sav_LIBS=$LIBS
CXX=$CXX_FOR_BUILD; CXXFLAGS=$CXXFLAGS_FOR_BUILD
CPPFLAGS=$CPPFLAGS_FOR_BUILD; LDFLAGS=$LDFLAGS_FOR_BUILD; LIBS=$LIBS_FOR_BUILD
AC_MSG_CHECKING([whether the C++ compiler for build system works])
AC_TRY_LINK([], [],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([C++ compiler for build system cannot create executables
See \`config.log' for more details.])])
AS_IF([test x"$CXXCPP_FOR_BUILD" = x],
[
unset CXXCPP
unset ac_cv_prog_CXXCPP # clear cache variable for CXXCPP
AC_PROG_CXXCPP
CXXCPP_FOR_BUILD=$CXXCPP
])
CXX=$sav_CXX; CXXFLAGS=$sav_CXXFLAGS; CXXCPP=$sav_CXXCPP
CPPFLAGS=$sav_CPPFLAGS; LDFLAGS=$sav_LDFLAGS; LIBS=$sav_LIBS
AC_LANG([C])
])
],
[
# reset *_FOR_BUILD variables, if no cross compiling
CXX_FOR_BUILD=$CXX; CXXFLAGS_FOR_BUILD=$CXXFLAGS; CXXCPP_FOR_BUILD=$CXXCPP
CPPFLAGS_FOR_BUILD=$CPPFLAGS; LDFLAGS_FOR_BUILD=$LDFLAGS; LIBS_FOR_BUILD=$LIBS
])
# Do we want to build and install binaries # Do we want to build and install binaries
AC_ARG_ENABLE(binaries, AC_ARG_ENABLE(binaries,
@ -138,7 +95,13 @@ AC_CHECK_SIZEOF(mode_t, 4)
#AC_REPLACE_FNMATCH #AC_REPLACE_FNMATCH
#AC_FUNC_MALLOC #AC_FUNC_MALLOC
#AC_FUNC_REALLOC #AC_FUNC_REALLOC
AC_CHECK_FUNCS([atexit gethostname setenv]) AC_CHECK_DECL([va_copy],
[AC_DEFINE([HAVE_VA_COPY], [1], [Define to 1 if you have the `va_copy' function.])],
[], [#include <stdarg.h>])
AC_CHECK_DECL([__va_copy],
[AC_DEFINE([HAVE_UNDERSCORE_VA_COPY], [1], [Define to 1 if you have the `__va_copy' function.])],
[], [#include <stdarg.h>])
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf strdup])
# Check for OTF # Check for OTF
ACVT_CONF_TITLE([Open Trace Format (OTF) library and tools]) ACVT_CONF_TITLE([Open Trace Format (OTF) library and tools])
@ -289,6 +252,7 @@ ACVT_COMPWRAP
# Output files # Output files
AC_CONFIG_FILES([Makefile AC_CONFIG_FILES([Makefile
util/Makefile
extlib/Makefile extlib/Makefile
vtlib/Makefile vtlib/Makefile
tools/Makefile tools/Makefile

Просмотреть файл

@ -52,7 +52,13 @@ AC_SUBST([have_stdint_h])
AC_SUBST([have_inttypes_h]) AC_SUBST([have_inttypes_h])
# Checks for library functions. # Checks for library functions.
AC_CHECK_FUNCS([fseeko ftello strdup]) AC_CHECK_DECL([va_copy],
[AC_DEFINE([HAVE_VA_COPY], [1], [Define to 1 if you have the `va_copy' function.])],
[], [#include <stdarg.h>])
AC_CHECK_DECL([__va_copy],
[AC_DEFINE([HAVE_UNDERSCORE_VA_COPY], [1], [Define to 1 if you have the `__va_copy' function.])],
[], [#include <stdarg.h>])
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf strdup fseeko ftello])
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
# AC_C_CONST ### do not use this if you want to do C++ programs because it might define 'const' # AC_C_CONST ### do not use this if you want to do C++ programs because it might define 'const'

Просмотреть файл

@ -440,7 +440,7 @@ int OTF_File_seek( OTF_File* file, uint64_t pos ) {
} }
ret= OTF_fseek( file->file, pos, SEEK_SET ); ret= fseeko( file->file, pos, SEEK_SET );
#ifdef HAVE_ZLIB #ifdef HAVE_ZLIB
@ -522,7 +522,7 @@ uint64_t OTF_File_tell( OTF_File* file ) {
if ( NULL != file->file ) { if ( NULL != file->file ) {
file->pos= OTF_ftell( file->file ); file->pos= ftello( file->file );
} }
return file->pos; return file->pos;
@ -674,7 +674,7 @@ void OTF_File_suspend( OTF_File* file ) {
/* get status and close OS file */ /* get status and close OS file */
file->pos= OTF_ftell( file->file ); file->pos= ftello( file->file );
fclose( file->file ); fclose( file->file );
file->file= NULL; file->file= NULL;
} }
@ -723,7 +723,7 @@ int OTF_File_revive( OTF_File* file, OTF_FileMode mode ) {
return 0; return 0;
} }
OTF_fseek( file->file, file->pos, SEEK_SET ); fseeko( file->file, file->pos, SEEK_SET );
} else { } else {
@ -904,7 +904,7 @@ int OTF_File_revive( OTF_File* file, OTF_FileMode mode ) {
/* dont need to seek to the saved position because there /* dont need to seek to the saved position because there
will be another seek anyway*/ will be another seek anyway*/
/* /*
OTF_fseek( file->file, file->pos, SEEK_SET ); fseeko( file->file, file->pos, SEEK_SET );
*/ */
} else { } else {

Просмотреть файл

@ -56,36 +56,36 @@ char* OTF_getFilename( const char* namestub, uint32_t id, OTF_FileType type,
case OTF_FILETYPE_MASTER: case OTF_FILETYPE_MASTER:
/* mastercontrol file stays uncompressed even with compression */ /* mastercontrol file stays uncompressed even with compression */
OTF_snprintf( ret, l, "%s.%s", namestub, OTF_FILENAMESUFFIX_MAIN ); snprintf( ret, l, "%s.%s", namestub, OTF_FILENAMESUFFIX_MAIN );
break; break;
case OTF_FILETYPE_GLOBAL_DEF: case OTF_FILETYPE_GLOBAL_DEF:
OTF_snprintf( ret, l, "%s.%s%s", namestub, OTF_FILENAMESUFFIX_DEF, snprintf( ret, l, "%s.%s%s", namestub, OTF_FILENAMESUFFIX_DEF,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" ); ((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break; break;
case OTF_FILETYPE_DEF: case OTF_FILETYPE_DEF:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_DEF, snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_DEF,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" ); ((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break; break;
case OTF_FILETYPE_EVENT: case OTF_FILETYPE_EVENT:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_EVENTS, snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_EVENTS,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" ); ((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break; break;
case OTF_FILETYPE_SNAPS: case OTF_FILETYPE_SNAPS:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_SNAPS, snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_SNAPS,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" ); ((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break; break;
case OTF_FILETYPE_STATS: case OTF_FILETYPE_STATS:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_STATS, snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_STATS,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" ); ((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break; break;
@ -102,7 +102,7 @@ char* OTF_getFilename( const char* namestub, uint32_t id, OTF_FileType type,
char* OTF_stripFilename( const char* filename ) { char* OTF_stripFilename( const char* filename ) {
char* ret= OTF_strdup( filename ); char* ret= strdup( filename );
char* p= ret; char* p= ret;
if( NULL == p ) { if( NULL == p ) {

Просмотреть файл

@ -5,14 +5,11 @@
#include "OTF_Platform.h" #include "OTF_Platform.h"
#include <stdlib.h>
#include <string.h>
#if defined(_WIN32) /* windows */ #if defined(_WIN32) /* windows */
# include <Windows.h> #include <Windows.h>
int gettimeofday(struct timeval* tv, void* dummytimezone) { int gettimeofday(struct timeval* tv, void* dummytimezone) {
union { union {
long long ns100; long long ns100;
FILETIME ft; FILETIME ft;
@ -23,40 +20,244 @@
tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL); tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL);
return 0; return 0;
}
#else /* unix */
#include <errno.h>
#include <stdio.h>
#include <string.h>
static int guess_strlen(const char* fmt, va_list ap) {
char* sarg;
double darg;
float farg;
size_t i;
int iarg;
int len;
long larg;
/* Start off with a fudge factor of 128 to handle the % escapes that
* we aren't calculating here */
len = (int)strlen(fmt) + 128;
for (i = 0; i < strlen(fmt); ++i) {
if ('%' == fmt[i] && i + 1 < strlen(fmt) && '%' != fmt[i + 1]) {
++i;
switch (fmt[i]) {
case 'c':
(void)va_arg(ap, int);
len += 1; /* let's suppose it's a printable char */
break;
case 's':
sarg = va_arg(ap, char*);
/* If there's an arg, get the strlen, otherwise we'll
* use (null) */
if (NULL != sarg) {
len += (int)strlen(sarg);
} else {
len += 5;
}
break;
case 'd':
case 'i':
iarg = va_arg(ap, int);
/* Alloc for minus sign */
if (iarg < 0) ++len;
/* Now get the log10 */
do {
++len;
iarg /= 10;
} while (0 != iarg);
break;
case 'x':
case 'X':
iarg = va_arg(ap, int);
/* Now get the log16 */
do {
++len;
iarg /= 16;
} while (0 != iarg);
break;
case 'f':
farg = (float)va_arg(ap, int);
/* Alloc for minus sign */
if (farg < 0) {
++len;
farg = -farg;
}
/* Alloc for 3 decimal places + '.' */
len += 4;
/* Now get the log10 */
do {
++len;
farg /= 10.0;
} while (0 != farg);
break;
case 'g':
darg = va_arg(ap, int);
/* Alloc for minus sign */
if (darg < 0) {
++len;
darg = -darg;
}
/* Alloc for 3 decimal places + '.' */
len += 4;
/* Now get the log10 */
do {
++len;
darg /= 10.0;
} while (0 != darg);
break;
case 'l':
/* Get %ld %lx %lX %lf */
if (i + 1 < strlen(fmt)) {
++i;
switch (fmt[i]) {
case 'x':
case 'X':
larg = va_arg(ap, int);
/* Now get the log16 */
do {
++len;
larg /= 16;
} while (0 != larg);
break;
case 'f':
darg = va_arg(ap, int);
/* Alloc for minus sign */
if (darg < 0) {
++len;
darg = -darg;
}
/* Alloc for 3 decimal places + '.' */
len += 4;
/* Now get the log10 */
do {
++len;
darg /= 10.0;
} while (0 != darg);
break;
case 'd':
default:
larg = va_arg(ap, int);
/* Now get the log10 */
do {
++len;
larg /= 10;
} while (0 != larg);
break;
}
}
default:
break;
}
}
} }
#endif /* _WIN32 */ return len;
}
char* OTF_basename(char* path) { int OTF_asprintf(char** ptr, const char* fmt, ...) {
char *ret; int length;
#if defined(_WIN32) va_list ap;
const char* s = "\\";
va_start(ap, fmt);
length = OTF_vasprintf(ptr, fmt, ap);
va_end(ap);
return length;
}
int OTF_vasprintf(char** ptr, const char* fmt, va_list ap) {
int length;
va_list ap2;
/* va_list might have pointer to internal state and using
* it twice is a bad idea. So make a copy for the second
* use. Copy order taken from Autoconf docs. */
#if defined(HAVE_VA_COPY) && HAVE_VA_COPY
va_copy(ap2, ap);
#elif defined(HAVE_UNDERSCORE_VA_COPY) && HAVE_UNDERSCORE_VA_COPY
__va_copy(ap2, ap);
#else #else
const char* s = "/"; memcpy (&ap2, &ap, sizeof(va_list));
#endif #endif
if( path == NULL || strlen( path ) == 0 ) { /* guess the size */
ret = OTF_strdup( "." ); length = guess_strlen(fmt, ap);
} else if( path[strlen(path)-1] == *s ) {
ret = OTF_strdup( s ); /* allocate a buffer */
} else { *ptr = (char*) malloc((size_t) length + 1);
char* tmp; if (NULL == *ptr) {
if( ( tmp = strrchr( path, *s ) ) != NULL ) errno = ENOMEM;
ret = OTF_strdup( tmp+1 ); va_end(ap2);
else return -1;
ret = OTF_strdup( path );
} }
return ret; /* fill the buffer */
length = vsprintf(*ptr, fmt, ap2);
#if (defined(HAVE_VA_COPY) && HAVE_VA_COPY) || (defined(HAVE_UNDERSCORE_VA_COPY) && HAVE_UNDERSCORE_VA_COPY)
va_end(ap2);
#endif /* HAVE_VA_COPY || HAVE_UNDERSCORE_VA_COPY */
/* realloc */
*ptr = (char*)realloc(*ptr, (size_t)length + 1);
if (NULL == *ptr) {
errno = ENOMEM;
return -1;
}
return length;
}
int OTF_snprintf(char* str, size_t size, const char* fmt, ...) {
int length;
va_list ap;
va_start(ap, fmt);
length = OTF_vsnprintf(str, size, fmt, ap);
va_end(ap);
return length;
}
int OTF_vsnprintf(char* str, size_t size, const char* fmt, va_list ap) {
int length;
char* buf;
length = OTF_vasprintf(&buf, fmt, ap);
if (length < 0) {
return length;
}
/* return the length when given a null buffer (C99) */
if (str) {
if ((size_t) length < size) {
strcpy(str, buf);
} else {
memcpy(str, buf, size - 1);
str[size] = '\0';
}
}
return length;
} }
char* OTF_strdup(const char* s) { char* OTF_strdup(const char* s) {
char *c; char* c;
if( s == NULL || ( c = ( char* )malloc( strlen(s)+1 ) ) == NULL ) if (s == NULL || (c = (char*)malloc(strlen(s)+1)) == NULL) {
errno = ENOMEM;
return NULL; return NULL;
}
strcpy( c, s ); strcpy(c, s) ;
return c; return c;
} }
#endif /* windows/unix */

Просмотреть файл

@ -23,11 +23,7 @@
# include "OTF_Platform_win.h" # include "OTF_Platform_win.h"
#else /* unix */ #else /* unix */
# include "OTF_Platform_unix.h" # include "OTF_Platform_unix.h"
#endif #endif /* windows/unix */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* if you know (for sure) of more compilers supporting __FUNCTION__, /* if you know (for sure) of more compilers supporting __FUNCTION__,
then add them here */ then add them here */
@ -49,11 +45,4 @@ extern "C" {
# define __LINE__ 0 # define __LINE__ 0
#endif #endif
char *OTF_basename( char* path );
char *OTF_strdup( const char* s );
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* OTF_PLATFORM_H */ #endif /* OTF_PLATFORM_H */

Просмотреть файл

@ -20,18 +20,56 @@
#endif #endif
#if defined(HAVE_FSEEKO) && HAVE_FSEEKO #include <stdarg.h>
# define OTF_fseek fseeko #include <stdlib.h>
#else /* HAVE_FSEEKO */
# define OTF_fseek fseek #ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#if !(defined(HAVE_FSEEKO) && HAVE_FSEEKO)
# undef fseeko
# define fseeko fseek
#endif /* HAVE_FSEEKO */ #endif /* HAVE_FSEEKO */
#if defined(HAVE_FTELLO) && HAVE_FTELLO #if !(defined(HAVE_FTELLO) && HAVE_FTELLO)
# define OTF_ftell ftello # undef ftello
#else /* HAVE_FTELLO */ # define ftello ftell
# define OTF_ftell ftell
#endif /* HAVE_FTELLO */ #endif /* HAVE_FTELLO */
#define OTF_snprintf snprintf #if !(defined(HAVE_ASPRINTF) && HAVE_ASPRINTF)
# undef asprintf
# define asprintf OTF_asprintf
#endif /* HAVE_ASPRINTF */
#if !(defined(HAVE_SNPRINTF) && HAVE_SNPRINTF)
# undef snprintf
# define snprintf OTF_snprintf
#endif /* HAVE_SNPRINTF */
#if !(defined(HAVE_VASPRINTF) && HAVE_VASPRINTF)
# undef vasprintf
# define vasprintf OTF_vasprintf
#endif /* HAVE_VASPRINTF */
#if !(defined(HAVE_VSNPRINTF) && HAVE_VSNPRINTF)
# undef vsnprintf
# define vsnprintf OTF_vsnprintf
#endif /* HAVE_VSNPRINTF */
#if !(defined(HAVE_STRDUP) && HAVE_STRDUP)
# undef strdup
# define strdup OTF_strdup
#endif /* HAVE_STRDUP */
int OTF_asprintf( char** ptr, const char* fmt, ... );
int OTF_snprintf( char* str, size_t size, const char* fmt, ... );
int OTF_vasprintf( char** ptr, const char* fmt, va_list ap );
int OTF_vsnprintf( char* str, size_t size, const char* fmt, va_list ap );
char* OTF_strdup( const char* s );
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* OTF_PLATFORM_UNIX_H */ #endif /* OTF_PLATFORM_UNIX_H */

Просмотреть файл

@ -24,10 +24,13 @@ extern "C" {
# define HAVE_IO_H # define HAVE_IO_H
# define HAVE_ZLIB # define HAVE_ZLIB
# define OTF_ftell (uint64_t) _ftelli64 # undef ftello
# define OTF_fseek(f,off,orig) _fseeki64(f,(__int64)off,orig) # define ftello (uint64_t) _ftelli64
# undef fseeko
# define fseeko(f,off,orig) _fseeki64(f,(__int64)off,orig)
# define OTF_snprintf _snprintf # define snprintf
# define snprintf _snprintf
# pragma warning (disable : 4996) /* disable insecurity/deprication warnings */ # pragma warning (disable : 4996) /* disable insecurity/deprication warnings */

Просмотреть файл

@ -191,6 +191,7 @@ OTF_RBuffer* OTF_RBuffer_open( const char* filename, OTF_FileManager* manager )
return NULL; return NULL;
} }
OTF_RBuffer_init( ret ); OTF_RBuffer_init( ret );
if( NULL == manager ) { if( NULL == manager ) {
@ -207,7 +208,6 @@ OTF_RBuffer* OTF_RBuffer_open( const char* filename, OTF_FileManager* manager )
return NULL; return NULL;
} }
ret->file= OTF_File_open( filename, manager, OTF_FILEMODE_READ ); ret->file= OTF_File_open( filename, manager, OTF_FILEMODE_READ );
if ( NULL == ret->file ) { if ( NULL == ret->file ) {

Просмотреть файл

@ -142,7 +142,7 @@ OTF_RStream* OTF_RStream_open( const char* namestub, uint32_t id, OTF_FileManage
OTF_RStream_init( ret ); OTF_RStream_init( ret );
ret->namestub= OTF_strdup( namestub ); ret->namestub= strdup( namestub );
ret->id= id; ret->id= id;
if( NULL == manager ) { if( NULL == manager ) {

Просмотреть файл

@ -175,7 +175,7 @@ OTF_WStream* OTF_WStream_open( const char* namestub, uint32_t id,
OTF_WStream_init( ret ); OTF_WStream_init( ret );
ret->namestub= OTF_strdup( namestub ); ret->namestub= strdup( namestub );
ret->id= id; ret->id= id;
ret->manager= manager; ret->manager= manager;

Просмотреть файл

@ -8,6 +8,8 @@
#include <stdio.h> #include <stdio.h>
#include "OTF_Platform.h"
#include "vtf3.h" #include "vtf3.h"
#include "Treehash.h" #include "Treehash.h"
@ -105,7 +107,7 @@ int treehash_addnode( hashtabT *p_hashtab, uint32_t process, const char* name, u
p_newnode->process = process; p_newnode->process = process;
p_newnode->processi = 0; p_newnode->processi = 0;
if ( name ) if ( name )
p_newnode->name = OTF_strdup( name ); p_newnode->name = strdup( name );
else else
p_newnode->name = 0; p_newnode->name = 0;
p_newnode->childrensize = 0; p_newnode->childrensize = 0;

Просмотреть файл

@ -83,7 +83,7 @@ int main (int argc, char **argv) {
if( i+1 < argc ) { if( i+1 < argc ) {
inputFile= OTF_strdup( argv[i+1] ); inputFile= strdup( argv[i+1] );
++i; ++i;
} }
@ -124,7 +124,7 @@ int main (int argc, char **argv) {
if ( '-' != argv[i][0] ) { if ( '-' != argv[i][0] ) {
inputFile= OTF_strdup( argv[i] ); inputFile= strdup( argv[i] );
} else { } else {

Просмотреть файл

@ -126,7 +126,7 @@ int main ( int argc, const char** argv ) {
if ( ( 0 == strcmp( "-i", argv[i] ) ) && ( i+1 < argc ) ) { if ( ( 0 == strcmp( "-i", argv[i] ) ) && ( i+1 < argc ) ) {
filename= OTF_strdup( argv[i+1] ); filename= strdup( argv[i+1] );
++i; ++i;
} else if ( ( 0 == strcmp( "-b", argv[i] ) ) && ( i+1 < argc ) ) { } else if ( ( 0 == strcmp( "-b", argv[i] ) ) && ( i+1 < argc ) ) {
@ -241,7 +241,7 @@ int main ( int argc, const char** argv ) {
if ( '-' != argv[i][0] ) { if ( '-' != argv[i][0] ) {
filename= OTF_strdup( argv[i] ); filename= strdup( argv[i] );
} else { } else {

Просмотреть файл

@ -206,7 +206,7 @@ int main ( int argc, const char** argv ) {
strncpy( outfilename, infilename, len +1 ); strncpy( outfilename, infilename, len +1 );
/* find and remove ".z" at the end */ /* find and remove ".z" at the end */
if ( ( 2 < len ) && ( 0 != strcmp( ".z", outfilename +len -2 ) ) ) { if ( ( 2 >= len ) || ( 0 != strcmp( ".z", outfilename +len -2 ) ) ) {
fprintf( stderr, "ERROR: no trailing '.z' in filename '%s', rejecting\n", fprintf( stderr, "ERROR: no trailing '.z' in filename '%s', rejecting\n",
infilename ); infilename );

Просмотреть файл

@ -5,6 +5,11 @@ bin_PROGRAMS = \
otfconfig otfconfig
endif endif
otfconfig_LDADD = $(top_builddir)/otflib/libotf.la
if ! AMDEPZLIB
otfconfig_LDADD += $(ZLIB_LIB_LINE)
endif
otfconfig_SOURCES = \ otfconfig_SOURCES = \
otfconfig.c otfconfig.c

Просмотреть файл

@ -9,7 +9,7 @@
#include "OTF_inttypes.h" #include "OTF_inttypes.h"
#include "OTF_Platform.h"
#include "otf.h" #include "otf.h"
#define SHOW_HELPTEXT { \ #define SHOW_HELPTEXT { \

Просмотреть файл

@ -141,7 +141,7 @@ int handleDefFunction( void* fcbx, uint32_t streamid,
/* insert all data about the function */ /* insert all data about the function */
si->functions[si->nfunctions].deftoken = deftoken; si->functions[si->nfunctions].deftoken = deftoken;
si->functions[si->nfunctions].name = OTF_strdup( name ); si->functions[si->nfunctions].name = strdup( name );
si->functions[si->nfunctions].group = group; si->functions[si->nfunctions].group = group;
si->functions[si->nfunctions].scltoken = scltoken; si->functions[si->nfunctions].scltoken = scltoken;
@ -188,7 +188,7 @@ int handleDefFunctionGroup( void* fcbx, uint32_t streamid,
/* insert all data about the function */ /* insert all data about the function */
si->functiongroups[si->nfunctiongroups].deftoken = deftoken; si->functiongroups[si->nfunctiongroups].deftoken = deftoken;
si->functiongroups[si->nfunctiongroups].name = OTF_strdup( name ); si->functiongroups[si->nfunctiongroups].name = strdup( name );
++(si->nfunctiongroups); ++(si->nfunctiongroups);

Просмотреть файл

@ -258,7 +258,7 @@ int handleDefcommunicator( void *fcb, int communicator,
fha->processgroups[fha->processgroupcount].id= mcommunicator; fha->processgroups[fha->processgroupcount].id= mcommunicator;
fha->processgroups[fha->processgroupcount].size= communicatorsize; fha->processgroups[fha->processgroupcount].size= communicatorsize;
fha->processgroups[fha->processgroupcount].procs= procs; fha->processgroups[fha->processgroupcount].procs= procs;
fha->processgroups[fha->processgroupcount].name= OTF_strdup( tmp ); fha->processgroups[fha->processgroupcount].name= strdup( tmp );
fha->processgroupcount++; fha->processgroupcount++;
@ -340,7 +340,7 @@ int handleDefcpugrp( void *fcb, unsigned int cpugrpid,
fha->processgroups[fha->processgroupcount].id= mpg; fha->processgroups[fha->processgroupcount].id= mpg;
fha->processgroups[fha->processgroupcount].size= cpuorcpugrpidarraydim; fha->processgroups[fha->processgroupcount].size= cpuorcpugrpidarraydim;
fha->processgroups[fha->processgroupcount].procs= procs; fha->processgroups[fha->processgroupcount].procs= procs;
fha->processgroups[fha->processgroupcount].name= OTF_strdup( cpugrpname ); fha->processgroups[fha->processgroupcount].name= strdup( cpugrpname );
fha->processgroupcount++; fha->processgroupcount++;
@ -364,7 +364,7 @@ int handleDefcpuname( void *fcb, unsigned int cpuid,
return 0; return 0;
} }
((fcbT*)fcb)->processes[cpu][thread].name = OTF_strdup( cpuname ); ((fcbT*)fcb)->processes[cpu][thread].name = strdup( cpuname );
return 0; return 0;
} }

Просмотреть файл

@ -93,7 +93,7 @@ int main (int argc, char **argv) {
} else if ( ( 0 == strcmp( "-o", argv[i] ) ) && ( i+1 < argc ) ) { } else if ( ( 0 == strcmp( "-o", argv[i] ) ) && ( i+1 < argc ) ) {
fcb.outputFile= OTF_strdup( argv[i+1] ); fcb.outputFile= strdup( argv[i+1] );
++i; ++i;
@ -162,7 +162,7 @@ int main (int argc, char **argv) {
printf( " no output file specified\n" ); printf( " no output file specified\n" );
exit(1); exit(1);
*/ */
outputFile= OTF_strdup( "out.otf" ); outputFile= strdup( "out.otf" );
} }
if ( maxfilehandles < 1 ) { if ( maxfilehandles < 1 ) {

Просмотреть файл

@ -2,17 +2,8 @@ AUTOMAKE_OPTIONS = -Wno-gnu
if AMBUILDBINARIES if AMBUILDBINARIES
if AMHAVECC
WRAP_CC = vtcc WRAP_CC = vtcc
else
WRAP_CC =
endif
if AMHAVECXX
WRAP_CXX = vtcxx WRAP_CXX = vtcxx
else
WRAP_CXX =
endif
if AMHAVEF77 if AMHAVEF77
WRAP_F77 = vtf77 WRAP_F77 = vtf77
@ -40,6 +31,9 @@ bin_PROGRAMS = $(WRAP_CC) $(WRAP_CXX) $(WRAP_F77) $(WRAP_FC)
INCLUDES = -I$(top_srcdir)/vtlib/ INCLUDES = -I$(top_srcdir)/vtlib/
CC = $(CC_FOR_BUILD)
CFLAGS = $(CFLAGS_FOR_BUILD)
CPP = $(CPP_FOR_BUILD)
CXX = $(CXX_FOR_BUILD) CXX = $(CXX_FOR_BUILD)
CXXFLAGS = $(CXXFLAGS_FOR_BUILD) CXXFLAGS = $(CXXFLAGS_FOR_BUILD)
CXXCPP = $(CXXCPP_FOR_BUILD) CXXCPP = $(CXXCPP_FOR_BUILD)
@ -49,15 +43,18 @@ LIBS = $(LIBS_FOR_BUILD)
AM_CXXFLAGS = -DDATADIR=\"$(datadir)\" AM_CXXFLAGS = -DDATADIR=\"$(datadir)\"
vtcc_SOURCES = compwrap.cc compwrap.h vtcc_SOURCES = compwrap.cc compwrap.h $(top_srcdir)/util/util.c
vtcc_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_CC vtcc_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_CC
vtcxx_SOURCES = $(vtcc_SOURCES) vtcxx_SOURCES = compwrap.cc compwrap.h
vtcxx_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_CXX vtcxx_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_CXX
vtcxx_LDADD = util.$(OBJEXT)
vtf77_SOURCES = $(vtcc_SOURCES) vtf77_SOURCES = compwrap.cc compwrap.h
vtf77_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_F77 vtf77_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_F77
vtf77_LDADD = util.$(OBJEXT)
vtf90_SOURCES = $(vtcc_SOURCES) vtf90_SOURCES = compwrap.cc compwrap.h
vtf90_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_F90 vtf90_CXXFLAGS = $(AM_CXXFLAGS) -DWRAP_LANG_F90
vtf90_LDADD = util.$(OBJEXT)

Просмотреть файл

@ -23,6 +23,8 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
#include "util/util.h"
#include "compwrap.h" #include "compwrap.h"
static bool ReadDataFile(); static bool ReadDataFile();
@ -86,15 +88,15 @@ ReadDataFile()
{ {
bool error = false; bool error = false;
const unsigned int keys_num = 24; const unsigned int keys_num = 25;
const std::string keys[] = { const std::string keys[] = {
"version", "language", "compiler_env", "compiler_flags_env", "version", "language", "compiler_env", "compiler_flags_env",
"compiler", "compiler_flags", "linker_flags", "libs", "includedir", "compiler", "compiler_flags", "linker_flags", "libs", "includedir",
"libdir", "opari_bin", "opari_tab_compiler", "opari_tab_compiler_flags", "libdir", "opari_bin", "opari_tab_compiler", "opari_tab_compiler_flags",
"pmpilib", "fmpilib", "dynattlib", "compiler_iflags_gnu", "pmpilib", "fmpilib", "dynattlib", "compiler_iflags_gnu",
"compiler_iflags_intel", "compiler_iflags_pathscale", "compiler_iflags_pgi", "compiler_iflags_intel", "compiler_iflags_pathscale",
"compiler_iflags_sun", "compiler_iflags_xl", "compiler_iflags_ftrace", "compiler_iflags_pgi", "compiler_iflags_sun", "compiler_iflags_xl",
"inst_avail", "inst_default" "compiler_iflags_ftrace", "inst_avail", "inst_default"
}; };
std::string data_file = DATADIR"/" + ExeName + "-wrapper-data.txt"; std::string data_file = DATADIR"/" + ExeName + "-wrapper-data.txt";
@ -1118,7 +1120,8 @@ Wrapper::show()
{ {
if( usesMPI() ) if( usesMPI() )
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s %s "VTHYBLIB" %s %s", vt_snprintf( vtlib, sizeof(vtlib) - 1,
"%s %s %s %s "VTHYBLIB" %s %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1133,7 +1136,7 @@ Wrapper::show()
} }
else else
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTOMPLIB" %s", vt_snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTOMPLIB" %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1143,7 +1146,7 @@ Wrapper::show()
} }
else if( usesMPI() ) else if( usesMPI() )
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s %s "VTMPILIB" %s %s", vt_snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s %s "VTMPILIB" %s %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1158,7 +1161,7 @@ Wrapper::show()
} }
else else
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTSEQLIB" %s", vt_snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTSEQLIB" %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1265,7 +1268,8 @@ Wrapper::run()
{ {
if( usesMPI() ) if( usesMPI() )
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s %s "VTHYBLIB" %s %s", vt_snprintf( vtlib, sizeof(vtlib) - 1,
"%s %s %s %s "VTHYBLIB" %s %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1280,7 +1284,7 @@ Wrapper::run()
} }
else else
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTOMPLIB" %s", vt_snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTOMPLIB" %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1292,7 +1296,8 @@ Wrapper::run()
{ {
if( usesMPI() ) if( usesMPI() )
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s %s "VTMPILIB" %s %s", vt_snprintf( vtlib, sizeof(vtlib) - 1,
"%s %s %s %s "VTMPILIB" %s %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?
@ -1307,7 +1312,7 @@ Wrapper::run()
} }
else else
{ {
snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTSEQLIB" %s", vt_snprintf( vtlib, sizeof(vtlib) - 1, "%s %s %s "VTSEQLIB" %s",
Properties.comp_ldflags.c_str(), Properties.comp_ldflags.c_str(),
Properties.libdir.c_str(), Properties.libdir.c_str(),
getInstType() == INST_TYPE_DYNINST ? getInstType() == INST_TYPE_DYNINST ?

Просмотреть файл

@ -8,6 +8,9 @@ include_HEADERS = \
../lib/opari_omp.h \ ../lib/opari_omp.h \
../lib/pomp_lib.h ../lib/pomp_lib.h
CC = $(CC_FOR_BUILD)
CFLAGS = $(CFLAGS_FOR_BUILD)
CPP = $(CPP_FOR_BUILD)
CXX = $(CXX_FOR_BUILD) CXX = $(CXX_FOR_BUILD)
CXXFLAGS = $(CXXFLAGS_FOR_BUILD) CXXFLAGS = $(CXXFLAGS_FOR_BUILD)
CXXCPP = $(CXXCPP_FOR_BUILD) CXXCPP = $(CXXCPP_FOR_BUILD)
@ -28,7 +31,8 @@ opari_SOURCES = \
opari.cc \ opari.cc \
process_c.cc \ process_c.cc \
process_f.cc \ process_f.cc \
process_omp.cc process_omp.cc \
$(top_srcdir)/util/util.c
EXTRA_DIST = \ EXTRA_DIST = \
fixinc/cctype \ fixinc/cctype \

Просмотреть файл

@ -15,7 +15,6 @@
using std::cout; using std::cout;
using std::cerr; using std::cerr;
#include <cstdio> #include <cstdio>
using std::sprintf;
using std::remove; using std::remove;
#include <cstring> #include <cstring>
using std::strcmp; using std::strcmp;
@ -26,6 +25,8 @@
#include <cstdlib> #include <cstdlib>
using std::exit; using std::exit;
#include "util/util.h"
#include "opari.h" #include "opari.h"
#include "handler.h" #include "handler.h"
@ -163,7 +164,7 @@ int main (int argc, char *argv[]) {
out_filename = new char[strlen(infile)+5]; out_filename = new char[strlen(infile)+5];
char* dot = (char *) strrchr(infile, '.'); char* dot = (char *) strrchr(infile, '.');
if ( dot != 0 ) { if ( dot != 0 ) {
snprintf(out_filename, strlen(infile)+5, "%.*s.mod%s", vt_snprintf(out_filename, strlen(infile)+5, "%.*s.mod%s",
(int)(dot - infile), infile, dot); (int)(dot - infile), infile, dot);
if ( keepSrcInfo && (lang & L_FORTRAN) ) { if ( keepSrcInfo && (lang & L_FORTRAN) ) {
@ -223,16 +224,16 @@ int main (int argc, char *argv[]) {
if ( dirsep ) { if ( dirsep ) {
len = strlen(rcdir)+strlen(dirsep)+11+1; len = strlen(rcdir)+strlen(dirsep)+11+1;
incfile = new char[len]; incfile = new char[len];
snprintf(incfile, len - 1, "%s/%s.opari.inc", rcdir, dirsep+1); vt_snprintf(incfile, len - 1, "%s/%s.opari.inc", rcdir, dirsep+1);
} else { } else {
len = strlen(rcdir)+strlen(infile)+12+1; len = strlen(rcdir)+strlen(infile)+12+1;
incfile = new char[len]; incfile = new char[len];
snprintf(incfile, len - 1, "%s/%s.opari.inc", rcdir, infile); vt_snprintf(incfile, len - 1, "%s/%s.opari.inc", rcdir, infile);
} }
} else { } else {
len = strlen(infile)+10+1; len = strlen(infile)+10+1;
incfile = new char[len]; incfile = new char[len];
snprintf(incfile, len - 1, "%s.opari.inc", infile); vt_snprintf(incfile, len - 1, "%s.opari.inc", infile);
} }
// transform // transform

Просмотреть файл

@ -10,8 +10,6 @@
* See the file COPYRIGHT in the package base directory for details * See the file COPYRIGHT in the package base directory for details
**/ **/
#include "config.h"
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <string> #include <string>
@ -107,11 +105,7 @@ main( int argc, char ** argv )
{ {
// set/overwrite environment variable VT_UNIFY to zero, // set/overwrite environment variable VT_UNIFY to zero,
// so VampirTrace don't unify local traces (DYNINST Bug?) // so VampirTrace don't unify local traces (DYNINST Bug?)
#if HAVE_SETENV == 1
setenv( "VT_UNIFY", "no", 1 );
#else
putenv( "VT_UNIFY=no" ); putenv( "VT_UNIFY=no" );
#endif
} }
// create instance of mutator // create instance of mutator

Просмотреть файл

@ -29,5 +29,7 @@ vtfilter_SOURCES = \
vt_otfhandler.cc \ vt_otfhandler.cc \
vt_tracefilter.cc vt_tracefilter.cc
vtfilter_LDADD = $(OTFLIBRARY) vtfilter_LDADD = \
$(top_builddir)/util/util.$(OBJEXT) \
$(OTFLIBRARY)

Просмотреть файл

@ -40,8 +40,6 @@
#include "vt_otfhandler.h" #include "vt_otfhandler.h"
#include "vt_filthandler.h" #include "vt_filthandler.h"
#include "vt_fnmatch.h"
#include <fstream> #include <fstream>
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
@ -552,7 +550,7 @@ int main( int argc, char** argv ) {
for( its = exsym.begin(); its != exsym.end(); ++its ) { for( its = exsym.begin(); its != exsym.end(); ++its ) {
if( 0 == vt_fnmatch( its->c_str(), itf->name.c_str(), FNM_NOESCAPE ) ) { if( 0 == fnmatch( its->c_str(), itf->name.c_str(), FNM_NOESCAPE ) ) {
extok.insert( itf->id ); extok.insert( itf->id );
excluded = true; excluded = true;
break; break;
@ -564,7 +562,7 @@ int main( int argc, char** argv ) {
for( its = insym.begin(); its != insym.end(); ++its ) { for( its = insym.begin(); its != insym.end(); ++its ) {
if( 0 == vt_fnmatch( its->c_str(), itf->name.c_str(), FNM_NOESCAPE ) ) { if( 0 == fnmatch( its->c_str(), itf->name.c_str(), FNM_NOESCAPE ) ) {
intok.insert( itf->id ); intok.insert( itf->id );
break; break;
} }
@ -1186,7 +1184,7 @@ static map<uint32_t,uint64_t> readFilterFile( const string& filename, const map<
while( token ) { while( token ) {
map<string,uint32_t>::const_iterator it = nm2tok.begin(); map<string,uint32_t>::const_iterator it = nm2tok.begin();
for( it = nm2tok.begin(); it != nm2tok.end(); ++it ) { for( it = nm2tok.begin(); it != nm2tok.end(); ++it ) {
if( vt_fnmatch(token, it->first.c_str(), FNM_NOESCAPE) == 0 ) { if( fnmatch(token, it->first.c_str(), FNM_NOESCAPE) == 0 ) {
map<uint32_t,uint64_t>::const_iterator it2 = ret.find(it->second); map<uint32_t,uint64_t>::const_iterator it2 = ret.find(it->second);
if( it2 == ret.end() ) { if( it2 == ret.end() ) {
ret.insert(pair<uint32_t,uint64_t>(it->second,ulimit)); ret.insert(pair<uint32_t,uint64_t>(it->second,ulimit));

Просмотреть файл

@ -38,5 +38,7 @@ vtunify_SOURCES = \
vt_unify_stats_hdlr.cc \ vt_unify_stats_hdlr.cc \
vt_unify_tkfac.cc vt_unify_tkfac.cc
vtunify_LDADD = $(OTFLIBRARY) vtunify_LDADD = \
$(top_builddir)/util/util.$(OBJEXT) \
$(OTFLIBRARY)

7
ompi/contrib/vt/vt/util/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,7 @@
noinst_PROGRAMS = dummy
dummy_SOURCES = \
dummy.c \
util.h \
util.c

6
ompi/contrib/vt/vt/util/dummy.c Обычный файл
Просмотреть файл

@ -0,0 +1,6 @@
#include "util.h"
int main(void)
{
return 0;
}

258
ompi/contrib/vt/vt/util/util.c Обычный файл
Просмотреть файл

@ -0,0 +1,258 @@
#include "config.h"
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include "util.h"
static int guess_strlen(const char* fmt, va_list ap)
{
char* sarg;
double darg;
float farg;
size_t i;
int iarg;
int len;
long larg;
/* Start off with a fudge factor of 128 to handle the % escapes that
we aren't calculating here */
len = (int)strlen(fmt) + 128;
for (i = 0; i < strlen(fmt); ++i) {
if ('%' == fmt[i] && i + 1 < strlen(fmt) && '%' != fmt[i + 1]) {
++i;
switch (fmt[i]) {
case 'c':
(void)va_arg(ap, int);
len += 1; /* let's suppose it's a printable char */
break;
case 's':
sarg = va_arg(ap, char*);
/* If there's an arg, get the strlen, otherwise we'll
* use (null) */
if (NULL != sarg) {
len += (int)strlen(sarg);
} else {
len += 5;
}
break;
case 'd':
case 'i':
iarg = va_arg(ap, int);
/* Alloc for minus sign */
if (iarg < 0)
++len;
/* Now get the log10 */
do {
++len;
iarg /= 10;
} while (0 != iarg);
break;
case 'x':
case 'X':
iarg = va_arg(ap, int);
/* Now get the log16 */
do {
++len;
iarg /= 16;
} while (0 != iarg);
break;
case 'f':
farg = (float)va_arg(ap, int);
/* Alloc for minus sign */
if (farg < 0) {
++len;
farg = -farg;
}
/* Alloc for 3 decimal places + '.' */
len += 4;
/* Now get the log10 */
do {
++len;
farg /= 10.0;
} while (0 != farg);
break;
case 'g':
darg = va_arg(ap, int);
/* Alloc for minus sign */
if (darg < 0) {
++len;
darg = -darg;
}
/* Alloc for 3 decimal places + '.' */
len += 4;
/* Now get the log10 */
do {
++len;
darg /= 10.0;
} while (0 != darg);
break;
case 'l':
/* Get %ld %lx %lX %lf */
if (i + 1 < strlen(fmt)) {
++i;
switch (fmt[i]) {
case 'x':
case 'X':
larg = va_arg(ap, int);
/* Now get the log16 */
do {
++len;
larg /= 16;
} while (0 != larg);
break;
case 'f':
darg = va_arg(ap, int);
/* Alloc for minus sign */
if (darg < 0) {
++len;
darg = -darg;
}
/* Alloc for 3 decimal places + '.' */
len += 4;
/* Now get the log10 */
do {
++len;
darg /= 10.0;
} while (0 != darg);
break;
case 'd':
default:
larg = va_arg(ap, int);
/* Now get the log10 */
do {
++len;
larg /= 10;
} while (0 != larg);
break;
}
}
default:
break;
}
}
}
return len;
}
int vt_asprintf(char** ptr, const char* fmt, ...)
{
int length;
va_list ap;
va_start(ap, fmt);
length = vt_vasprintf(ptr, fmt, ap);
va_end(ap);
return length;
}
int vt_vasprintf(char** ptr, const char* fmt, va_list ap)
{
int length;
va_list ap2;
/* va_list might have pointer to internal state and using
it twice is a bad idea. So make a copy for the second
use. Copy order taken from Autoconf docs. */
#if defined(HAVE_VA_COPY) && HAVE_VA_COPY
va_copy(ap2, ap);
#elif defined(HAVE_UNDERSCORE_VA_COPY) && HAVE_UNDERSCORE_VA_COPY
__va_copy(ap2, ap);
#else
memcpy (&ap2, &ap, sizeof(va_list));
#endif
/* guess the size */
length = guess_strlen(fmt, ap);
/* allocate a buffer */
*ptr = (char*) malloc((size_t) length + 1);
if (NULL == *ptr) {
errno = ENOMEM;
va_end(ap2);
return -1;
}
/* fill the buffer */
length = vsprintf(*ptr, fmt, ap2);
#if (defined(HAVE_VA_COPY) && HAVE_VA_COPY) || (defined(HAVE_UNDERSCORE_VA_COPY) && HAVE_UNDERSCORE_VA_COPY)
va_end(ap2);
#endif /* HAVE_VA_COPY || HAVE_UNDERSCORE_VA_COPY */
/* realloc */
*ptr = (char*)realloc(*ptr, (size_t)length + 1);
if (NULL == *ptr) {
errno = ENOMEM;
return -1;
}
return length;
}
int vt_snprintf(char* str, size_t size, const char* fmt, ...)
{
int length;
va_list ap;
va_start(ap, fmt);
length = vt_vsnprintf(str, size, fmt, ap);
va_end(ap);
return length;
}
int vt_vsnprintf(char* str, size_t size, const char* fmt, va_list ap)
{
int length;
char* buf;
length = vt_vasprintf(&buf, fmt, ap);
if (length < 0) {
return length;
}
/* return the length when given a null buffer (C99) */
if (str) {
if ((size_t) length < size) {
strcpy(str, buf);
} else {
memcpy(str, buf, size - 1);
str[size] = '\0';
}
}
/* free allocated buffer */
free(buf);
return length;
}
char* vt_strdup(const char* s)
{
char* c;
if (s == NULL || (c = (char*)malloc(strlen(s)+1)) == NULL)
{
errno = ENOMEM;
return NULL;
}
strcpy(c, s) ;
return c;
}

19
ompi/contrib/vt/vt/util/util.h Обычный файл
Просмотреть файл

@ -0,0 +1,19 @@
#ifndef _UTIL_H
#define _UTIL_H
#ifdef __cplusplus
# define EXTERN extern "C"
#else
# define EXTERN extern
#endif
#include <stdarg.h>
#include <stdlib.h>
EXTERN int vt_asprintf(char** ptr, const char* fmt, ...);
EXTERN int vt_snprintf(char* str, size_t size, const char* fmt, ...);
EXTERN int vt_vasprintf(char** ptr, const char* fmt, va_list ap);
EXTERN int vt_vsnprintf(char* str, size_t size, const char* fmt, va_list ap);
EXTERN char* vt_strdup(const char* s);
#endif /* _UTIL_H */

Просмотреть файл

@ -149,7 +149,6 @@ VT_COMMON_SOURCES = \
vt_env.h \ vt_env.h \
vt_error.h \ vt_error.h \
vt_fbindings.h \ vt_fbindings.h \
vt_fnmatch.h \
vt_inttypes.h \ vt_inttypes.h \
vt_iowrap.h \ vt_iowrap.h \
vt_iowrap_helper.h \ vt_iowrap_helper.h \
@ -165,7 +164,6 @@ VT_COMMON_SOURCES = \
vt_otf_sum.h \ vt_otf_sum.h \
vt_pform.h \ vt_pform.h \
vt_pomp.h \ vt_pomp.h \
vt_strdup.h \
vt_sync.h \ vt_sync.h \
vt_thrd.h \ vt_thrd.h \
vt_trc.h \ vt_trc.h \
@ -183,7 +181,6 @@ VT_COMMON_SOURCES = \
vt_otf_trc.c \ vt_otf_trc.c \
vt_pform_@PLATFORM@.c \ vt_pform_@PLATFORM@.c \
vt_pomp_base.c \ vt_pomp_base.c \
vt_strdup.c \
vt_thrd.c \ vt_thrd.c \
vt_user_comment.c \ vt_user_comment.c \
vt_user_count.c \ vt_user_count.c \
@ -209,24 +206,25 @@ VT_HYB_SOURCES = \
CC = $(MPICC) CC = $(MPICC)
AM_CFLAGS = -DBINDIR=\"$(bindir)\" -DDATADIR=\"$(datadir)\" $(RFGCFLAGS) $(BFDCFLAGS) $(MEMHOOKCFLAGS) $(IOWRAPCFLAGS) $(METRCFLAGS) AM_CFLAGS = -DBINDIR=\"$(bindir)\" -DDATADIR=\"$(datadir)\" $(RFGCFLAGS) $(BFDCFLAGS) $(MEMHOOKCFLAGS) $(IOWRAPCFLAGS) $(METRCFLAGS)
libvt_a_LIBADD = $(top_builddir)/util/util.$(OBJEXT)
libvt_a_SOURCES = \ libvt_a_SOURCES = \
$(VT_COMMON_SOURCES) \ $(VT_COMMON_SOURCES) \
$(OPARILIBDIR)/pomp_fwrapper_base.c $(OPARILIBDIR)/pomp_fwrapper_base.c
libvt_mpi_a_CFLAGS = -DVT_MPI $(AM_CFLAGS) $(MPICFLAGS) $(MPIINCDIR) libvt_mpi_a_CFLAGS = -DVT_MPI $(AM_CFLAGS) $(MPICFLAGS) $(MPIINCDIR)
libvt_mpi_a_LIBADD = pomp_fwrapper_base.o libvt_mpi_a_LIBADD = pomp_fwrapper_base.$(OBJEXT) $(top_builddir)/util/util.$(OBJEXT)
libvt_mpi_a_SOURCES = \ libvt_mpi_a_SOURCES = \
$(VT_COMMON_SOURCES) \ $(VT_COMMON_SOURCES) \
$(VT_MPI_SOURCES) $(VT_MPI_SOURCES)
libvt_omp_a_CFLAGS = $(OMPFLAG) -DVT_OMP $(AM_CFLAGS) libvt_omp_a_CFLAGS = $(OMPFLAG) -DVT_OMP $(AM_CFLAGS)
libvt_omp_a_LIBADD = pomp_fwrapper_base.o libvt_omp_a_LIBADD = pomp_fwrapper_base.$(OBJEXT) $(top_builddir)/util/util.$(OBJEXT)
libvt_omp_a_SOURCES = \ libvt_omp_a_SOURCES = \
$(VT_COMMON_SOURCES) \ $(VT_COMMON_SOURCES) \
$(VT_OMP_SOURCES) $(VT_OMP_SOURCES)
libvt_ompi_a_CFLAGS = $(OMPFLAG) -DVT_OMPI $(AM_CFLAGS) $(MPICFLAGS) $(MPIINCDIR) libvt_ompi_a_CFLAGS = $(OMPFLAG) -DVT_OMPI $(AM_CFLAGS) $(MPICFLAGS) $(MPIINCDIR)
libvt_ompi_a_LIBADD = pomp_fwrapper_base.o libvt_ompi_a_LIBADD = pomp_fwrapper_base.$(OBJEXT) $(top_builddir)/util/util.$(OBJEXT)
libvt_ompi_a_SOURCES = \ libvt_ompi_a_SOURCES = \
$(VT_COMMON_SOURCES) \ $(VT_COMMON_SOURCES) \
$(VT_HYB_SOURCES) $(VT_HYB_SOURCES)

Просмотреть файл

@ -1,9 +1,9 @@
#include "config.h"
#include "rfg_filter.h" #include "rfg_filter.h"
#include "rfg_strmkrs.h" #include "rfg_strmkrs.h"
#include "vt_fnmatch.h"
#include "vt_inttypes.h" #include "vt_inttypes.h"
#include "vt_strdup.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -95,7 +95,7 @@ int RFG_Filter_setDefFile( RFG_Filter* filter, const char* deffile )
/* set new filter definition file */ /* set new filter definition file */
filter->deffile = vt_strdup( deffile ); filter->deffile = strdup( deffile );
return 1; return 1;
} }
@ -161,7 +161,7 @@ int RFG_Filter_readDefFile( RFG_Filter* filter )
/* copy line so that the original line keep alive */ /* copy line so that the original line keep alive */
line = vt_strdup( orgline ); line = strdup( orgline );
lineno++; lineno++;
@ -308,7 +308,7 @@ int RFG_Filter_addCLimit( RFG_Filter* filter, int32_t climit,
if( entry->pattern == NULL ) if( entry->pattern == NULL )
return 0; return 0;
entry->pattern[entry->npattern++] = vt_strdup( pattern ); entry->pattern[entry->npattern++] = strdup( pattern );
return 1; return 1;
} }
@ -327,7 +327,7 @@ int RFG_Filter_get( RFG_Filter* filter, const char* rname,
{ {
for( j = 0; j < filter->climits[i].npattern; j++ ) for( j = 0; j < filter->climits[i].npattern; j++ )
{ {
if( vt_fnmatch( filter->climits[i].pattern[j], rname, 0 ) == 0 ) if( fnmatch( filter->climits[i].pattern[j], rname, 0 ) == 0 )
{ {
*r_climit = filter->climits[i].climit; *r_climit = filter->climits[i].climit;
return 1; return 1;

Просмотреть файл

@ -1,9 +1,9 @@
#include "config.h"
#include "rfg_groups.h" #include "rfg_groups.h"
#include "rfg_strmkrs.h" #include "rfg_strmkrs.h"
#include "vt_fnmatch.h"
#include "vt_inttypes.h" #include "vt_inttypes.h"
#include "vt_strdup.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -46,7 +46,7 @@ RFG_Groups* RFG_Groups_init()
/* some initializes of data structure elements */ /* some initializes of data structure elements */
ret->deffile = NULL; ret->deffile = NULL;
ret->default_group = vt_strdup( "Application" ); ret->default_group = strdup( "Application" );
ret->nassigns = 0; ret->nassigns = 0;
ret->assigns = NULL; ret->assigns = NULL;
@ -102,7 +102,7 @@ int RFG_Groups_setDefFile( RFG_Groups* groups, const char* deffile )
/* set new group definition file */ /* set new group definition file */
groups->deffile = vt_strdup( deffile ); groups->deffile = strdup( deffile );
return 1; return 1;
} }
@ -118,7 +118,7 @@ int RFG_Groups_setDefaultGroup( RFG_Groups* groups, const char* name )
/* set new default group */ /* set new default group */
groups->default_group = vt_strdup( name ); groups->default_group = strdup( name );
return 1; return 1;
} }
@ -166,7 +166,7 @@ int RFG_Groups_readDefFile( RFG_Groups* groups )
/* copy line so that the original line keep alive */ /* copy line so that the original line keep alive */
line = vt_strdup( orgline ); line = strdup( orgline );
lineno++; lineno++;
@ -286,7 +286,7 @@ int RFG_Groups_addAssign( RFG_Groups* groups, const char* gname,
return 0; return 0;
entry = &(groups->assigns[groups->nassigns++]); entry = &(groups->assigns[groups->nassigns++]);
entry->group = vt_strdup( gname ); entry->group = strdup( gname );
entry->npattern = 0; entry->npattern = 0;
entry->pattern = NULL; entry->pattern = NULL;
} }
@ -306,7 +306,7 @@ int RFG_Groups_addAssign( RFG_Groups* groups, const char* gname,
if( entry->pattern == NULL ) if( entry->pattern == NULL )
return 0; return 0;
entry->pattern[entry->npattern++] = vt_strdup( pattern ); entry->pattern[entry->npattern++] = strdup( pattern );
return 1; return 1;
} }
@ -325,7 +325,7 @@ int RFG_Groups_get( RFG_Groups* groups, const char* rname,
{ {
for( j = 0; j < groups->assigns[i].npattern; j++ ) for( j = 0; j < groups->assigns[i].npattern; j++ )
{ {
if( vt_fnmatch( groups->assigns[i].pattern[j], rname, 0 ) == 0 ) if( fnmatch( groups->assigns[i].pattern[j], rname, 0 ) == 0 )
{ {
*r_gname = groups->assigns[i].group; *r_gname = groups->assigns[i].group;
return 1; return 1;

Просмотреть файл

@ -1,9 +1,10 @@
#include "config.h"
#include "rfg_regions.h" #include "rfg_regions.h"
#include "rfg_filter.h" #include "rfg_filter.h"
#include "rfg_groups.h" #include "rfg_groups.h"
#include "vt_inttypes.h" #include "vt_inttypes.h"
#include "vt_strdup.h"
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
@ -405,8 +406,8 @@ static void hash_put( RFG_RegionInfo** htab, uint32_t h,
uint32_t id = h % HASH_MAX; uint32_t id = h % HASH_MAX;
RFG_RegionInfo* add = ( RFG_RegionInfo* )malloc( sizeof( RFG_RegionInfo ) ); RFG_RegionInfo* add = ( RFG_RegionInfo* )malloc( sizeof( RFG_RegionInfo ) );
add->regionId = h; add->regionId = h;
add->groupName = vt_strdup( g ); add->groupName = strdup( g );
add->regionName = vt_strdup( r ); add->regionName = strdup( r );
add->callLimit = l; add->callLimit = l;
add->callLimitCD = l; add->callLimitCD = l;
add->next = htab[id]; add->next = htab[id];

Просмотреть файл

@ -24,7 +24,6 @@
#include "vt_inttypes.h" #include "vt_inttypes.h"
#include "vt_memhook.h" #include "vt_memhook.h"
#include "vt_pform.h" #include "vt_pform.h"
#include "vt_strdup.h"
#include "vt_trc.h" #include "vt_trc.h"
#if defined (VT_OMPI) || defined (VT_OMP) #if defined (VT_OMPI) || defined (VT_OMP)
# include <omp.h> # include <omp.h>
@ -95,8 +94,8 @@ static HashNode *register_region(long addr, char* func, char* file, int lno) {
fid = vt_def_file(file); fid = vt_def_file(file);
rid = vt_def_region(func, fid, lno, VT_NO_LNO, VT_DEF_GROUP, VT_FUNCTION); rid = vt_def_region(func, fid, lno, VT_NO_LNO, VT_DEF_GROUP, VT_FUNCTION);
nhn = hash_put(addr, rid); nhn = hash_put(addr, rid);
nhn->func = vt_strdup(func); nhn->func = strdup(func);
nhn->file = vt_strdup(file); nhn->file = strdup(file);
nhn->lno = lno; nhn->lno = lno;
return nhn; return nhn;
} }
@ -287,13 +286,8 @@ void VT_Dyn_attach()
} }
default: default:
{ {
/* set/overwrite environment variable VT_UNIFY to zero, /* disable unifying local traces */
so VampirTrace don't unify local traces (DYNINST Bug?) */
#if defined(HAVE_SETENV) && HAVE_SETENV
setenv("VT_UNIFY", "no", 1);
#else /* HAVE_SETENV */
putenv("VT_UNIFY=no"); putenv("VT_UNIFY=no");
#endif
/* Wait until mutator send signal to continue execution /* Wait until mutator send signal to continue execution
*/ */

Просмотреть файл

@ -28,7 +28,6 @@
#include "vt_error.h" #include "vt_error.h"
#include "vt_memhook.h" #include "vt_memhook.h"
#include "vt_pform.h" #include "vt_pform.h"
#include "vt_strdup.h"
#include "vt_trc.h" #include "vt_trc.h"
#if (defined (VT_OMPI) || defined (VT_OMP)) #if (defined (VT_OMPI) || defined (VT_OMP))
# include <omp.h> # include <omp.h>
@ -64,7 +63,7 @@ static void hash_put(long h, const char* n, const char* fn, int lno) {
HashNode *add = (HashNode*)malloc(sizeof(HashNode)); HashNode *add = (HashNode*)malloc(sizeof(HashNode));
add->id = h; add->id = h;
add->name = n; add->name = n;
add->fname = fn ? (const char*)vt_strdup(fn) : fn; add->fname = fn ? (const char*)strdup(fn) : fn;
add->lno = lno; add->lno = lno;
add->vtid = VT_NO_ID; add->vtid = VT_NO_ID;
add->next = htab[id]; add->next = htab[id];
@ -198,7 +197,7 @@ static void get_symtab_bfd(void) {
if( dem_name ) { if( dem_name ) {
hash_put(addr, dem_name, filename, lno); hash_put(addr, dem_name, filename, lno);
} else { } else {
char *n = vt_strdup(syms[i]->name); char *n = strdup(syms[i]->name);
hash_put(addr, n, filename, lno); hash_put(addr, n, filename, lno);
} }
} }
@ -276,7 +275,7 @@ static void get_symtab_nm(const char* nmfilename)
/* add symbol to hash table */ /* add symbol to hash table */
if( nc >= 3 ) if( nc >= 3 )
{ {
char* n = vt_strdup(funcname); char* n = strdup(funcname);
hash_put(addr, n, filename, lno); hash_put(addr, n, filename, lno);
} }
} }

Просмотреть файл

@ -10,10 +10,7 @@
* See the file COPYRIGHT in the package base directory for details * See the file COPYRIGHT in the package base directory for details
**/ **/
#include "vt_env.h" #include "config.h"
#include "vt_error.h"
#include "vt_defs.h"
#include "vt_pform.h"
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@ -21,6 +18,11 @@
#include <limits.h> #include <limits.h>
#include <ctype.h> #include <ctype.h>
#include "vt_env.h"
#include "vt_error.h"
#include "vt_defs.h"
#include "vt_pform.h"
#define VT_MAX_THREADS 65536 #define VT_MAX_THREADS 65536
static char* replace_vars(char *v) { static char* replace_vars(char *v) {
@ -357,6 +359,27 @@ int vt_env_is_verbose()
return verbose; return verbose;
} }
int vt_env_debug()
{
static int debug = -1;
char* tmp;
if (debug == -1)
{
tmp = getenv("VT_DEBUG");
if (tmp != NULL && strlen(tmp) > 0)
{
debug = atoi(tmp);
if (debug < 0) debug = 0;
}
else
{
debug = 0;
}
}
return debug;
}
int vt_env_do_demangle() int vt_env_do_demangle()
{ {
static int do_demangle = -1; static int do_demangle = -1;

Просмотреть файл

@ -32,6 +32,7 @@ EXTERN int vt_env_mode(void);
EXTERN int vt_env_stat_intv(void); EXTERN int vt_env_stat_intv(void);
EXTERN int vt_env_stat_show(void); EXTERN int vt_env_stat_show(void);
EXTERN int vt_env_is_verbose(void); EXTERN int vt_env_is_verbose(void);
EXTERN int vt_env_debug(void);
EXTERN int vt_env_do_demangle(void); EXTERN int vt_env_do_demangle(void);
EXTERN int vt_env_do_unify(void); EXTERN int vt_env_do_unify(void);
EXTERN int vt_env_do_clean(void); EXTERN int vt_env_do_clean(void);

Просмотреть файл

@ -10,9 +10,7 @@
* See the file COPYRIGHT in the package base directory for details * See the file COPYRIGHT in the package base directory for details
**/ **/
#include "vt_error.h" #include "config.h"
#include "vt_env.h"
#include "vt_iowrap.h"
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
@ -20,6 +18,10 @@
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
#include "vt_error.h"
#include "vt_env.h"
#include "vt_iowrap.h"
#define VT_MSG_PFIX "VampirTrace" #define VT_MSG_PFIX "VampirTrace"
#define VT_MSG_SIZE 1024 #define VT_MSG_SIZE 1024
@ -90,19 +92,15 @@ void vt_cntl_msg(const char* fmt, ...)
} }
} }
inline void vt_debug_msg(int level, const char* fmt, ...) void vt_debug_msg(int level, const char* fmt, ...)
{ {
va_list ap; va_list ap;
#if defined(VT_DEBUG) && (VT_DEBUG > 0)
if( level <= VT_DEBUG ) { if( vt_env_debug() >= level ) {
va_start(ap, fmt); va_start(ap, fmt);
vt_print_msg(fmt, ap); vt_print_msg(fmt, ap);
va_end(ap); va_end(ap);
} }
#else
va_start(ap, fmt); /* only for avoiding a compiler warning */
va_end(ap);
#endif
} }

Просмотреть файл

@ -1,28 +0,0 @@
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2008, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich GmbH, Federal
* Republic of Germany
*
* See the file COPYRIGHT in the package base directory for details
**/
#ifndef _VT_FNMATCH_H
#define _VT_FNMATCH_H
#include "config.h"
#if defined(HAVE_FNMATCH_H) && HAVE_FNMATCH_H
# include <fnmatch.h>
# define vt_fnmatch fnmatch
#else /* HAVE_FNMATCH_H */
# include <string.h>
# define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
# define vt_fnmatch(_pattern, _string, __flags) \
strcmp(_string, _pattern)
#endif /* HAVE_FNMATCH_H */
#endif /* _VT_FNMATCH_H */

Просмотреть файл

@ -10,10 +10,14 @@
* See the file COPYRIGHT in the package base directory for details * See the file COPYRIGHT in the package base directory for details
**/ **/
#include "config.h" #ifndef _GNU_SOURCE
#define _GNU_SOURCE #define _GNU_SOURCE
#endif
#ifndef _LARGEFILE64_SOURCE
#define _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE
#endif
#include "config.h"
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>

Просмотреть файл

@ -10,6 +10,8 @@
* See the file COPYRIGHT in the package base directory for details * See the file COPYRIGHT in the package base directory for details
**/ **/
#include "config.h"
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
@ -20,7 +22,6 @@
#include "vt_env.h" #include "vt_env.h"
#include "vt_error.h" #include "vt_error.h"
#include "vt_metric.h" #include "vt_metric.h"
#include "vt_strdup.h"
/* metricmap operations */ /* metricmap operations */
@ -49,8 +50,8 @@ static vt_metricmap_t* vt_metricmap_append(vt_metricmap_t* map,
} }
map->type = type; map->type = type;
map->event_name = vt_strdup(event); map->event_name = strdup(event);
map->alias_name = vt_strdup(alias); map->alias_name = strdup(alias);
map->next = NULL; map->next = NULL;
return map; return map;

Просмотреть файл

@ -23,7 +23,6 @@
#include "vt_error.h" #include "vt_error.h"
#include "vt_inttypes.h" #include "vt_inttypes.h"
#include "vt_metric.h" #include "vt_metric.h"
#include "vt_strdup.h"
#include <papi.h> #include <papi.h>
@ -57,7 +56,7 @@ static void metricv_add(char* name, int code)
VT_METRIC_MAXNUM); VT_METRIC_MAXNUM);
else { else {
metricv[nmetrics] = (struct metric*)malloc(sizeof(struct metric)); metricv[nmetrics] = (struct metric*)malloc(sizeof(struct metric));
metricv[nmetrics]->name = vt_strdup(name); metricv[nmetrics]->name = strdup(name);
metricv[nmetrics]->descr[0] = '\0'; metricv[nmetrics]->descr[0] = '\0';
metricv[nmetrics]->papi_code = code; metricv[nmetrics]->papi_code = code;
nmetrics++; nmetrics++;

Просмотреть файл

@ -21,7 +21,6 @@
#include "vt_inttypes.h" #include "vt_inttypes.h"
#include "vt_metric.h" #include "vt_metric.h"
#include "vt_pform.h" #include "vt_pform.h"
#include "vt_strdup.h"
#include "vt_trc.h" #include "vt_trc.h"
#include <unistd.h> #include <unistd.h>
@ -1055,7 +1054,7 @@ void VTGen_write_DEFINITION_COMMENT(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefinitionComment; new_entry->type = BUF_ENTRY_TYPE__DefinitionComment;
new_entry->length = length; new_entry->length = length;
new_entry->comment = vt_strdup(comment); new_entry->comment = strdup(comment);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);
@ -1079,7 +1078,7 @@ void VTGen_write_DEF_SCL_FILE(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefSclFile; new_entry->type = BUF_ENTRY_TYPE__DefSclFile;
new_entry->length = length; new_entry->length = length;
new_entry->fid = fid; new_entry->fid = fid;
new_entry->fname = vt_strdup(fname); new_entry->fname = strdup(fname);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);
@ -1128,7 +1127,7 @@ void VTGen_write_DEF_FILE_GROUP(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefFileGroup; new_entry->type = BUF_ENTRY_TYPE__DefFileGroup;
new_entry->length = length; new_entry->length = length;
new_entry->gid = gid; new_entry->gid = gid;
new_entry->gname = vt_strdup(gname); new_entry->gname = strdup(gname);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);
@ -1153,7 +1152,7 @@ void VTGen_write_DEF_FILE(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefFile; new_entry->type = BUF_ENTRY_TYPE__DefFile;
new_entry->length = length; new_entry->length = length;
new_entry->fid = fid; new_entry->fid = fid;
new_entry->fname = vt_strdup(fname); new_entry->fname = strdup(fname);
new_entry->gid = gid; new_entry->gid = gid;
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
@ -1178,7 +1177,7 @@ void VTGen_write_DEF_FUNCTION_GROUP(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefFunctionGroup; new_entry->type = BUF_ENTRY_TYPE__DefFunctionGroup;
new_entry->length = length; new_entry->length = length;
new_entry->rdid = rdid; new_entry->rdid = rdid;
new_entry->rdesc = vt_strdup(rdesc); new_entry->rdesc = strdup(rdesc);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);
@ -1204,7 +1203,7 @@ void VTGen_write_DEF_FUNCTION(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefFunction; new_entry->type = BUF_ENTRY_TYPE__DefFunction;
new_entry->length = length; new_entry->length = length;
new_entry->rid = rid; new_entry->rid = rid;
new_entry->rname = vt_strdup(rname); new_entry->rname = strdup(rname);
new_entry->rdid = rdid; new_entry->rdid = rdid;
new_entry->sid = sid; new_entry->sid = sid;
@ -1231,7 +1230,7 @@ void VTGen_write_DEF_COLLECTIVE_OPERATION(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefCollectiveOperation; new_entry->type = BUF_ENTRY_TYPE__DefCollectiveOperation;
new_entry->length = length; new_entry->length = length;
new_entry->cid = cid; new_entry->cid = cid;
new_entry->cname = vt_strdup(cname); new_entry->cname = strdup(cname);
new_entry->ctype = ctype; new_entry->ctype = ctype;
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
@ -1256,7 +1255,7 @@ void VTGen_write_DEF_COUNTER_GROUP(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefCounterGroup; new_entry->type = BUF_ENTRY_TYPE__DefCounterGroup;
new_entry->length = length; new_entry->length = length;
new_entry->gid = gid; new_entry->gid = gid;
new_entry->gname = vt_strdup(gname); new_entry->gname = strdup(gname);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);
@ -1283,10 +1282,10 @@ void VTGen_write_DEF_COUNTER(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefCounter; new_entry->type = BUF_ENTRY_TYPE__DefCounter;
new_entry->length = length; new_entry->length = length;
new_entry->cid = cid; new_entry->cid = cid;
new_entry->cname = vt_strdup(cname); new_entry->cname = strdup(cname);
new_entry->cprop = cprop; new_entry->cprop = cprop;
new_entry->gid = gid; new_entry->gid = gid;
new_entry->cunit = vt_strdup(cunit); new_entry->cunit = strdup(cunit);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);
@ -1312,7 +1311,7 @@ void VTGen_write_DEF_PROCESS_GROUP(VTGen* gen,
new_entry->type = BUF_ENTRY_TYPE__DefProcessGroup; new_entry->type = BUF_ENTRY_TYPE__DefProcessGroup;
new_entry->length = length; new_entry->length = length;
new_entry->cid = cid; new_entry->cid = cid;
new_entry->grpn = vt_strdup(grpn); new_entry->grpn = strdup(grpn);
new_entry->grpc = grpc; new_entry->grpc = grpc;
new_entry->grpv = (uint32_t*)calloc(grpc, sizeof(uint32_t)); new_entry->grpv = (uint32_t*)calloc(grpc, sizeof(uint32_t));
if(new_entry->grpv == NULL) if(new_entry->grpv == NULL)
@ -1525,7 +1524,7 @@ void VTGen_write_COMMENT(VTGen* gen, uint64_t* time,
new_entry->type = BUF_ENTRY_TYPE__Comment; new_entry->type = BUF_ENTRY_TYPE__Comment;
new_entry->length = length; new_entry->length = length;
new_entry->time = *time; new_entry->time = *time;
new_entry->comment = vt_strdup(comment); new_entry->comment = strdup(comment);
VTGEN_JUMP(gen, length); VTGEN_JUMP(gen, length);
VTGEN_CHECK_FLUSHCNTR(gen); VTGEN_CHECK_FLUSHCNTR(gen);

Просмотреть файл

@ -23,7 +23,6 @@
#include "vt_memreg.h" #include "vt_memreg.h"
#include "vt_metric.h" #include "vt_metric.h"
#include "vt_pform.h" #include "vt_pform.h"
#include "vt_strdup.h"
#include "vt_error.h" #include "vt_error.h"
#include <limits.h> #include <limits.h>
@ -92,7 +91,7 @@ static void hash_put(int t, const char* n, int i) {
if(t==HASH_TAB__RDESC) if(t==HASH_TAB__RDESC)
{ {
HashNode_rdesc *add = (HashNode_rdesc*)malloc(sizeof(HashNode_rdesc)); HashNode_rdesc *add = (HashNode_rdesc*)malloc(sizeof(HashNode_rdesc));
add->rdesc = vt_strdup(n); add->rdesc = strdup(n);
add->rdid = i; add->rdid = i;
add->next = htab_rdesc[id]; add->next = htab_rdesc[id];
htab_rdesc[id] = add; htab_rdesc[id] = add;
@ -100,7 +99,7 @@ static void hash_put(int t, const char* n, int i) {
else if(t==HASH_TAB__FILE) else if(t==HASH_TAB__FILE)
{ {
HashNode_file *add = (HashNode_file*)malloc(sizeof(HashNode_file)); HashNode_file *add = (HashNode_file*)malloc(sizeof(HashNode_file));
add->fname = vt_strdup(n); add->fname = strdup(n);
add->fid = i; add->fid = i;
add->next = htab_file[id]; add->next = htab_file[id];
htab_file[id] = add; htab_file[id] = add;

Просмотреть файл

@ -14,7 +14,6 @@
#include "vt_pform.h" #include "vt_pform.h"
#include "vt_error.h" #include "vt_error.h"
#include "vt_strdup.h"
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
@ -134,7 +133,7 @@ void vt_pform_init() {
if(exec_len != -1) if(exec_len != -1)
{ {
exec[exec_len] = '\0'; exec[exec_len] = '\0';
vt_exec = vt_strdup(exec); vt_exec = strdup(exec);
} }
} }

Просмотреть файл

@ -1,28 +0,0 @@
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2008, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich GmbH, Federal
* Republic of Germany
*
* See the file COPYRIGHT in the package base directory for details
**/
#include "vt_strdup.h"
#include <stdlib.h>
#include <string.h>
char *vt_strdup(const char *s)
{
char *c;
if( s == NULL || ( c = (char*)malloc( strlen(s)+1 ) ) == NULL )
return NULL;
strcpy( c, s );
return c;
}

Просмотреть файл

@ -1,24 +0,0 @@
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2008, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich GmbH, Federal
* Republic of Germany
*
* See the file COPYRIGHT in the package base directory for details
**/
#ifndef _VT_STRDUP_H
#define _VT_STRDUP_H
#ifdef __cplusplus
# define EXTERN extern "C"
#else
# define EXTERN extern
#endif
EXTERN char *vt_strdup(const char *s);
#endif /* _VT_STRDUP_H */

Просмотреть файл

@ -10,6 +10,8 @@
* See the file COPYRIGHT in the package base directory for details * See the file COPYRIGHT in the package base directory for details
**/ **/
#include "config.h"
#include "vt_thrd.h" #include "vt_thrd.h"
#include "vt_metric.h" #include "vt_metric.h"
#include "vt_pform.h" #include "vt_pform.h"