igprof: new package (#22666)

This commit is contained in:
iarspider 2021-04-02 15:41:58 +02:00 committed by GitHub
parent d528ff6e5a
commit 9f90659aa7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 165 additions and 0 deletions

View file

@ -0,0 +1,131 @@
--- src/analyse.cc.orig 2016-07-11 14:17:56.000000001 +0200
+++ src/analyse.cc 2016-07-11 14:20:55.000000001 +0200
@@ -4374,8 +4374,8 @@
else
puts(",");
- printf("[%d, %d, %d, %"PRId64", %"PRId64", %"PRId64", %"PRId64", "
- "%"PRId64", %"PRId64", %"PRId64", ",
+ printf("[%d, %d, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", "
+ "%" PRId64 ", %" PRId64 ", %" PRId64 ", ",
mainRow.rank(), symbolIndex, fileIndex,
mainRow.SELF, mainRow.CUM, mainRow.KIDS,
mainRow.SELF_ALL[1], mainRow.CUM_ALL[1],
@@ -4445,7 +4445,7 @@
first = false;
else
puts(",");
- printf("[%d, %d, %"PRId64", %"PRId64", %"PRId64", ",
+ printf("[%d, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", ",
mainRow.rank(), row.rank(),
row.SELF_COUNTS, row.SELF_CALLS, row.SELF_PATHS);
@@ -4472,7 +4472,7 @@
first = false;
else
puts(",");
- printf("[%d, %d, %"PRId64", %"PRId64", %"PRId64", ",
+ printf("[%d, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", ",
mainRow.rank(), row.rank(),
row.SELF_COUNTS, row.SELF_CALLS, row.SELF_PATHS);
--- src/buffer.cc.orig 2017-05-31 11:53:55.891358442 +0200
+++ src/buffer.cc 2017-05-31 11:55:03.519291624 +0200
@@ -62,12 +62,11 @@
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (data != MAP_FAILED)
return data;
- else
- {
- igprof_debug("failed to allocate memory for profile buffer: %s (%d)\n",
- strerror(errno), errno);
- igprof_abort();
- }
+
+ igprof_debug("failed to allocate memory for profile buffer: %s (%d)\n",
+ strerror(errno), errno);
+ igprof_abort();
+ __builtin_unreachable();
}
void
--- src/profile-perf.cc.orig 2018-07-11 15:11:31.000000001 +0200
+++ src/profile-perf.cc 2018-07-11 15:13:07.000000001 +0200
@@ -98,7 +98,7 @@
struct sigaction sa;
sigemptyset(&sa.sa_mask);
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
+ sa.sa_sigaction = &profileSignalHandler;
sa.sa_flags = SA_RESTART | SA_SIGINFO;
sigaction(s_signal, &sa, 0);
}
@@ -252,13 +252,13 @@
struct sigaction sa;
if (signum == s_signal
&& act
- && act->sa_handler != (sighandler_t) &profileSignalHandler)
+ && act->sa_sigaction != &profileSignalHandler)
{
igprof_debug("sigaction(): prevented profiling signal"
" %d from being overridden in thread 0x%lx\n",
s_signal, (unsigned long) pthread_self());
sigemptyset(&sa.sa_mask);
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
+ sa.sa_sigaction = &profileSignalHandler;
sa.sa_flags = SA_RESTART | SA_SIGINFO;
act = &sa;
}
--- src/profile-energy.cc.orig 2018-07-11 15:14:32.000000001 +0200
+++ src/profile-energy.cc 2018-07-11 15:16:56.000000001 +0200
@@ -268,7 +268,7 @@
struct sigaction sa;
sigemptyset(&sa.sa_mask);
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
+ sa.sa_sigaction = &profileSignalHandler;
sa.sa_flags = SA_RESTART | SA_SIGINFO;
sigaction(s_signal, &sa, 0);
}
@@ -415,13 +415,13 @@
struct sigaction sa;
if (signum == s_signal
&& act
- && act->sa_handler != (sighandler_t) &profileSignalHandler)
+ && act->sa_sigaction != &profileSignalHandler)
{
igprof_debug("sigaction(): prevented profiling signal"
" %d from being overridden in thread 0x%lx\n",
s_signal, (unsigned long) pthread_self());
sigemptyset(&sa.sa_mask);
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
+ sa.sa_sigaction = &profileSignalHandler;
sa.sa_flags = SA_RESTART | SA_SIGINFO;
act = &sa;
}
--- src/profile.cc.orig 2018-07-13 12:03:48.000000001 +0200
+++ src/profile.cc 2018-07-11 15:08:49.000000001 +0200
@@ -577,7 +577,7 @@
igprof_debug("profiler options: %s\n", options);
// Report override function use.
- if (igprof_abort != &abort)
+ if ((void (*)())igprof_abort != (void (*)()) &abort)
igprof_debug("abort() from system %p, app had %p\n",
__extension__ (void *) igprof_abort,
__extension__ (void *) &abort);
--- CMakeLists.txt.orig 2015-10-12 18:36:10.000000000 +0200
+++ CMakeLists.txt 2021-03-31 10:06:59.776974100 +0200
@@ -80,7 +80,7 @@
SET(CMAKE_C_FLAGS "${CMAKE_ANSI_FLAGS} ${CMAKE_C_FLAGS}")
SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_FLAGS})
IF(CMAKE_COMPILER_IS_GNUCC)
- ADD_DEFINITIONS(-ansi -pedantic -W -Wall -Wno-long-long -Werror)
+ ADD_DEFINITIONS(-ansi -pedantic -W -Wall -Wno-long-long)
ENDIF()
IF(UNIX)

View file

@ -0,0 +1,34 @@
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Igprof(CMakePackage):
"""IgProf (the Ignominous Profiler) is a simple nice tool for measuring and
analysing application memory and performance characteristics.
IgProf requires no changes to the application or the build process. It
currently works on Linux (ia32, x86_64)."""
homepage = "https://igprof.org/"
url = "https://github.com/igprof/igprof/archive/v5.9.16.tar.gz"
version('5.9.16', sha256='cc977466b310f47bbc2967a0bb6ecd49d7437089598346e3f1d8aaf9a7555d96')
depends_on('libunwind')
# Three patches in one: C++11 compatibility (src/analyse.cc),
# libunwind "compatibility" (remove -Werror in CMakeLists.txt) -
# see also https://github.com/spack/spack/pull/21537,
# and gcc 8.x compatibility (the rest of the changes).
# Adopted from LCGCMake https://gitlab.cern.ch/sft/lcgcmake
patch('igprof-5.9.16.patch', when='@5.9.16', level=0)
def build_system_flags(pkg, name, flags):
if name == 'cxxflags':
flags.extend(('-Wno-unused-variable', '-Wno-error=unused-result'))
return (None, None, flags)