Devel::NYTProf is a powerful feature-rich source code profiler for Perl. (Mostly in maintenance mode, so PRs are much more likely to be acted upon than Issues.)
When building Devel-NYTProf on quadmath builds on Linux, build-time warnings are generated. Excerpt:
# config_args: -Dusethreads -Dusequadmath
$ quadperl Makefile.PL
Looking for header files and functions...
Found clock_gettime in time.h
Found deflateInit2 in zlib.h
Assertion testing enabled
Your perl was compiled with gcc (version 9.3.0), okay.
Generating a Unix-style Makefile
Writing Makefile for Devel::NYTProf
Writing MYMETA.yml and MYMETA.json
[devel-nytprof] 592 $ make
Skip blib/lib/Devel/NYTProf/Data.pm (unchanged)
[snip]
Skip blib/lib/Devel/NYTProf/js/asc.png (unchanged)
Running Mkbootstrap for NYTProf ()
chmod 644 "NYTProf.bs"
"/home/jkeenan/testing/v5.34.0-RC1/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- NYTProf.bs blib/arch/auto/Devel/NYTProf/NYTProf.bs 644
"/home/jkeenan/testing/v5.34.0-RC1/bin/perl" "/home/jkeenan/testing/v5.34.0-RC1/lib/perl5/5.34.0/ExtUtils/xsubpp" -typemap '/home/jkeenan/testing/v5.34.0-RC1/lib/perl5/5.34.0/ExtUtils/typemap' -typemap '/home/jkeenan/gitwork/zzzothers/devel-nytprof/typemap' FileHandle.xs > FileHandle.xsc
mv FileHandle.xsc FileHandle.c
cc -c -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"6.09\" -DXS_VERSION=\"6.09\" -fPIC "-I/home/jkeenan/testing/v5.34.0-RC1/lib/perl5/5.34.0/x86_64-linux-thread-multi-quadmath/CORE" -DHAS_CLOCK_GETTIME -DHAS_ZLIB -DUSE_HARD_ASSERT -W -Wall -Wpointer-arith -Wbad-function-cast -Wno-comment -Wno-sign-compare -Wno-cast-qual -Wmissing-noreturn -Wno-unused-parameter FileHandle.c
FileHandle.xs: In function ‘NYTP_write_attribute_nv’:
FileHandle.xs:972:60: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
972 | const size_t len = my_snprintf(buffer, sizeof(buffer), "%"NVgf, value);
| ^~~
FileHandle.xs:972:60: warning: too many arguments for format [-Wformat-extra-args]
"/home/jkeenan/testing/v5.34.0-RC1/bin/perl" "/home/jkeenan/testing/v5.34.0-RC1/lib/perl5/5.34.0/ExtUtils/xsubpp" -typemap '/home/jkeenan/testing/v5.34.0-RC1/lib/perl5/5.34.0/ExtUtils/typemap' -typemap '/home/jkeenan/gitwork/zzzothers/devel-nytprof/typemap' NYTProf.xs > NYTProf.xsc
mv NYTProf.xsc NYTProf.c
cc -c -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"6.09\" -DXS_VERSION=\"6.09\" -fPIC "-I/home/jkeenan/testing/v5.34.0-RC1/lib/perl5/5.34.0/x86_64-linux-thread-multi-quadmath/CORE" -DHAS_CLOCK_GETTIME -DHAS_ZLIB -DUSE_HARD_ASSERT -W -Wall -Wpointer-arith -Wbad-function-cast -Wno-comment -Wno-sign-compare -Wno-cast-qual -Wmissing-noreturn -Wno-unused-parameter NYTProf.c
NYTProf.xs: In function ‘open_output_file’:
NYTProf.xs:1841:58: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
1841 | sprintf(&filename_buf[strlen(filename_buf)], ".%.0"NVff"", gettimeofday_nv());
| ^~~~~~
NYTProf.xs:1841:58: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs:1860:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
1860 | logwarn("~ opened %s at %.6"NVff"\n", filename, gettimeofday_nv());
| ^~~~~~~~~~~~~~~~~~~~
NYTProf.xs:1860:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘close_output_file’:
NYTProf.xs:1890:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
1890 | logwarn("~ closed file at %.6"NVff"\n", timeofday);
| ^~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:1890:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘incr_sub_inclusive_time’:
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
2229 | logwarn("%2u <- %s %"NVgf" excl = %"NVgf"t incl - %"NVgf"t (%"NVgf"-%"NVgf"), oh %"NVff"-%"NVff"=%"NVff"t, d%d @%d:%d #%lu %p\n",
| ^~~~~~~~~~~~~~~~~
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2229:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:2229:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:2229:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 6 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:2229:17: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 7 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:2229:17: warning: format ‘%p’ expects argument of type ‘void *’, but argument 8 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:2229:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘pp_subcall_profiler’:
NYTProf.xs:2895:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
2895 | logwarn("%2u ->%4s %s::%s from %s::%s @%u:%u (d%d, oh %"NVff"t, sub %"NVff"s) #%lu\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:2895:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:2895:17: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 11 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:2895:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘finish_profile’:
NYTProf.xs:3051:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
3051 | logwarn("~ finish_profile (overhead %"NVgf"t, is_profiling %d)\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:3051:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:3051:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘write_sub_callers’:
NYTProf.xs:3679:29: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
3679 | logwarn("%s call has negative time: incl %"NVff"s, excl %"NVff"s:\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:3679:29: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:3679:29: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs:3690:29: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
3690 | logwarn("%s called by %.*s at %u:%u: count %ld (i%"NVff"s e%"NVff"s, d%d ri%"NVff"s)\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:3690:29: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:3690:29: warning: format ‘%d’ expects argument of type ‘int’, but argument 8 has type ‘NV’ {aka ‘_Float128’} [-Wformat=]
NYTProf.xs:3690:29: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:3690:29: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘load_sub_callers_callback’:
NYTProf.xs:4279:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
4279 | logwarn("Sub %s called by %s %u:%u: count %d, incl %"NVff", excl %"NVff"\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:4279:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:4279:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘load_pid_start_callback’:
NYTProf.xs:4401:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
4401 | logwarn("Start of profile data for pid %s (ppid %d, %"IVdf" pids live) at %"NVff"\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:4401:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘load_pid_end_callback’:
NYTProf.xs:4433:17: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
4433 | logwarn("End of profile data for pid %s (%"IVdf" remaining) at %"NVff"\n", text,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:4433:17: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs: In function ‘load_profile_to_hv’:
NYTProf.xs:5046:21: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
5046 | logwarn("The sum of the statement timings is %.1"NVff"%% of the total time profiling."
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:5046:21: warning: too many arguments for format [-Wformat-extra-args]
NYTProf.xs:5054:21: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
5054 | logwarn("Summary: statements profiled %lu (=%lu-%lu), sum of time %"NVff"s, profile spanned %"NVff"s\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NYTProf.xs:5054:21: warning: unknown conversion type character ‘Q’ in format [-Wformat=]
NYTProf.xs:5054:21: warning: too many arguments for format [-Wformat-extra-args]
rm -f blib/arch/auto/Devel/NYTProf/NYTProf.so
[snip]
When building Devel-NYTProf on quadmath builds on Linux, build-time warnings are generated. Excerpt: