public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [gprofng] Parsing of function definitions fails
@ 2022-03-21 16:17 Thomas Gruber
  2022-03-21 17:51 ` Vladimir Mezentsev
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Gruber @ 2022-03-21 16:17 UTC (permalink / raw)
  To: binutils

Hi,

A colleague of mine reported problems when specifying C++ functions in 
gp-display-text:

# the function 'csr_spmv_kernel<double, int>' exists

(gp-display-text) fsingle csr_spmv_kernel<double, int>
Error: Invalid number entered: int>
Error: Invalid number entered: int>
Error: No function with given name `csr_spmv_kernel<double,' found.
(gp-display-text) fsingle csr_spmv_kernel<double,int>
Error: No function with given name `csr_spmv_kernel<double,int>' found.

So, spaces in the template parameter list seem to be bad. Moreover, '*' 
in the function parameter list seem to be not parsed properly:

(gp-display-text) source csr_spmv_kernel<double,int>(long,long,int 
const*,int const*,double const*,double const*,double*)
Warning: extra arguments to source command, line 2
Error: Invalid number entered: const*,int
Error: Invalid number entered: const*,int
Error: No function or file with given name 
`csr_spmv_kernel<double,int>(long,long,int' found.


Best,
Thomas


-- 
Thomas Gruber
Software & Tools
Erlangen National High Performance Computing Center (NHR@FAU)
Friedrich-Alexander University Erlangen-Nürnberg
Martensstraße 1, 91058 Erlangen, Germany
mailto:Thomas.Gruber@fau.de
https://hpc.fau.de/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [gprofng] Parsing of function definitions fails
  2022-03-21 16:17 [gprofng] Parsing of function definitions fails Thomas Gruber
@ 2022-03-21 17:51 ` Vladimir Mezentsev
  2022-03-22 16:51   ` Thomas Gruber
  0 siblings, 1 reply; 4+ messages in thread
From: Vladimir Mezentsev @ 2022-03-21 17:51 UTC (permalink / raw)
  To: Thomas Gruber, binutils



On 3/21/22 09:17, Thomas Gruber wrote:
> Hi,
>
> A colleague of mine reported problems when specifying C++ functions in 
> gp-display-text:
>
> # the function 'csr_spmv_kernel<double, int>' exists
>
> (gp-display-text) fsingle csr_spmv_kernel<double, int>

  Hi Thomas,

This demangled name should t be surrounded by double quotes:
     fsingle "csr_spmv_kernel<double,int>(long,long,int const*,int 
const*,double const*,double const*,double*) "


Or you can use this form:
    fsingle csr_spmv_kernel [N]

If N is absent, gp-display-text asks which function you want to see.

Thank you,
-Vladimir






> Error: Invalid number entered: int>
> Error: Invalid number entered: int>
> Error: No function with given name `csr_spmv_kernel<double,' found.
> (gp-display-text) fsingle csr_spmv_kernel<double,int>
> Error: No function with given name `csr_spmv_kernel<double,int>' found.
>
> So, spaces in the template parameter list seem to be bad. Moreover, 
> '*' in the function parameter list seem to be not parsed properly:
>
> (gp-display-text) source csr_spmv_kernel<double,int>(long,long,int 
> const*,int const*,double const*,double const*,double*)
> Warning: extra arguments to source command, line 2
> Error: Invalid number entered: const*,int
> Error: Invalid number entered: const*,int
> Error: No function or file with given name 
> `csr_spmv_kernel<double,int>(long,long,int' found.
>
>
> Best,
> Thomas
>
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [gprofng] Parsing of function definitions fails
  2022-03-21 17:51 ` Vladimir Mezentsev
@ 2022-03-22 16:51   ` Thomas Gruber
  2022-03-22 18:46     ` Vladimir Mezentsev
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Gruber @ 2022-03-22 16:51 UTC (permalink / raw)
  To: binutils

Hi,

Thanks for the hint. But the double-quotes do not really help.

Function without any template parameter work:

(gp-display-text) fsingle _IO_vfscanf
_IO_vfscanf
         Exclusive Total CPU Time: 13.199 ( 14.3%)
         Inclusive Total CPU Time: 20.424 ( 22.1%)
                             Size:  33367
                       PC Address: 6:0x0006b1f0
                      Source File: (unknown)
                      Object File: (unknown)
                      Load Object: /lib/x86_64-linux-gnu/libc-2.27.so
                     Mangled Name:
                          Aliases:

Functions with one template parameter work:

(gp-display-text) fsingle rho_calc<double>
void rho_calc<double>(long, double const*, double*) [clone ._omp_fn.8]
         Exclusive Total CPU Time:  1.001 (  1.1%)
         Inclusive Total CPU Time:  1.001 (  1.1%)
                             Size:    828
                       PC Address: 12:0x000064f0
                      Source File: cg-omp.cpp
                      Object File: test.6.er/archives/cg-omp_1X48lPAm9a2
                      Load Object: 
/home/hpc/unrz/unrz55/projects/PELS-Tutorial/CG/code/cg-omp
                     Mangled Name: _Z8rho_calcIdEvlPKT_PS0_._omp_fn.8
                          Aliases:

But function with multiple template parameters cause problems:

(gp-display-text) fsingle csr_spmv_kernel
Error: No function with given name `csr_spmv_kernel' found.
(gp-display-text) fsingle "csr_spmv_kernel<double, int>(long, long, int 
const*, int const*, double const*, double const*, double*)"
Error: No function with given name `csr_spmv_kernel<double, int>(long, 
long, int const*, int const*, double const*, double const*, double*)' found.
(gp-display-text) fsingle "csr_spmv_kernel<double,int>(long, long, int 
const*, int const*, double const*, double const*, double*)"
Error: No function with given name `csr_spmv_kernel<double,int>(long, 
long, int const*, int const*, double const*, double const*, double*)' found.
(gp-display-text) fsingle "csr_spmv_kernel<double,int>"
Error: No function with given name `csr_spmv_kernel<double,int>' found.

(gp-display-text) fsingle csr_spmv_kernel [N]
Error: Invalid number entered: [N]
Error: Invalid number entered: [N]
Error: No function with given name `csr_spmv_kernel' found.


I checked the documentation (gprofng/doc) and there the double-quotes 
are not mentioned.

Best,
Thomas


Full list of functions for reference:

(gp-display-text) functions
Functions sorted by metric: Exclusive Total CPU Time

Excl.     Incl.      Name
Total     Total
CPU sec.  CPU sec.
92.455    92.455     <Total>
63.304    63.304     void csr_spmv_kernel<double, int>(long, long, int 
const*, int const*, double const*, double const*, double*) [clone 
._omp_fn.11]
13.199    20.424     _IO_vfscanf
  3.362     3.362     void x_r_update<double>(long, double const*, 
double const*, double*, double*, double const*) [clone ._omp_fn.13]
  2.632     2.632     <static>@0x45142 (<libc-2.27.so>)
  2.101     2.782     <static>@0x4917a (<libc-2.27.so>)
  1.801     1.801     void p_update<double>(long, double*, double*, 
double const*, double const*) [clone ._omp_fn.10]
  1.591     1.591     void x_r_update<double>(long, double const*, 
double const*, double*, double*, double const*) [clone ._omp_fn.12]
  1.021     1.021     _IO_sputbackc
  1.001     1.001     void rho_calc<double>(long, double const*, 
double*) [clone ._omp_fn.8]
  0.630     0.630     read
  0.480     0.480     <static>@0x169c14 (<libc-2.27.so>)
  0.380     0.380     <static>@0x52411 (<libc-2.27.so>)
  0.350    21.135     void allocate_and_initialize<double, 
int>(_IO_FILE*, int**, int**, double**, double**, double**, long, long, 
long, long, char (&) [4])
  0.200    20.624     fscanf
  0.090    92.455     BenchmarkResult bench_cg<double, int>(_IO_FILE*, 
long, long, long, long, stop_criterion&, char (&) [4])
  0.080     0.080     void setup<double>(long, double const*, double*, 
double*, double*) [clone ._omp_fn.7]
  0.070     0.070     _pthread_cleanup_pop_restore
  0.050     0.050     __strtol_internal
  0.030     0.030     __strtod_internal
  0.030     0.030     _pthread_cleanup_push_defer
  0.030     0.030     vfscanf
  0.010    71.150     GOMP_parallel
  0.010     0.640     _IO_file_underflow
  0.       71.170     BenchmarkResult cg<double, int>(stop_criterion&, 
long, long, long, int const*, int const*, double const*, double const*, 
double*, bool)
  0.        0.640     _IO_default_uflow
  0.       92.455     __libc_start_main
  0.       71.150     double cg_solve_kernel<double, 
int>(stop_criterion&, long, long, int const*, int const*, double const*, 
double const*, double*)
  0.       92.455     main


Am 21.03.22 um 18:51 schrieb Vladimir Mezentsev:
> 
> 
> On 3/21/22 09:17, Thomas Gruber wrote:
>> Hi,
>>
>> A colleague of mine reported problems when specifying C++ functions in 
>> gp-display-text:
>>
>> # the function 'csr_spmv_kernel<double, int>' exists
>>
>> (gp-display-text) fsingle csr_spmv_kernel<double, int>
> 
>   Hi Thomas,
> 
> This demangled name should t be surrounded by double quotes:
>      fsingle "csr_spmv_kernel<double,int>(long,long,int const*,int 
> const*,double const*,double const*,double*) "
> 
> 
> Or you can use this form:
>     fsingle csr_spmv_kernel [N]
> 
> If N is absent, gp-display-text asks which function you want to see.
> 
> Thank you,
> -Vladimir
> 
> 
> 
> 
> 
> 
>> Error: Invalid number entered: int>
>> Error: Invalid number entered: int>
>> Error: No function with given name `csr_spmv_kernel<double,' found.
>> (gp-display-text) fsingle csr_spmv_kernel<double,int>
>> Error: No function with given name `csr_spmv_kernel<double,int>' found.
>>
>> So, spaces in the template parameter list seem to be bad. Moreover, 
>> '*' in the function parameter list seem to be not parsed properly:
>>
>> (gp-display-text) source csr_spmv_kernel<double,int>(long,long,int 
>> const*,int const*,double const*,double const*,double*)
>> Warning: extra arguments to source command, line 2
>> Error: Invalid number entered: const*,int
>> Error: Invalid number entered: const*,int
>> Error: No function or file with given name 
>> `csr_spmv_kernel<double,int>(long,long,int' found.
>>
>>
>> Best,
>> Thomas
>>
>>
> 

-- 
Thomas Gruber
Software & Tools
Erlangen National High Performance Computing Center (NHR@FAU)
Friedrich-Alexander University Erlangen-Nürnberg
Martensstraße 1, 91058 Erlangen, Germany
mailto:Thomas.Gruber@fau.de
https://hpc.fau.de/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [gprofng] Parsing of function definitions fails
  2022-03-22 16:51   ` Thomas Gruber
@ 2022-03-22 18:46     ` Vladimir Mezentsev
  0 siblings, 0 replies; 4+ messages in thread
From: Vladimir Mezentsev @ 2022-03-22 18:46 UTC (permalink / raw)
  To: Thomas Gruber, binutils



On 3/22/22 09:51, Thomas Gruber wrote:
> Hi,
>
> Thanks for the hint. But the double-quotes do not really help.
>
> Function without any template parameter work:
>
> (gp-display-text) fsingle _IO_vfscanf
> _IO_vfscanf
>         Exclusive Total CPU Time: 13.199 ( 14.3%)
>         Inclusive Total CPU Time: 20.424 ( 22.1%)
>                             Size:  33367
>                       PC Address: 6:0x0006b1f0
>                      Source File: (unknown)
>                      Object File: (unknown)
>                      Load Object: /lib/x86_64-linux-gnu/libc-2.27.so
>                     Mangled Name:
>                          Aliases:
>
> Functions with one template parameter work:
>
> (gp-display-text) fsingle rho_calc<double>
> void rho_calc<double>(long, double const*, double*) [clone ._omp_fn.8]
>         Exclusive Total CPU Time:  1.001 (  1.1%)
>         Inclusive Total CPU Time:  1.001 (  1.1%)
>                             Size:    828
>                       PC Address: 12:0x000064f0
>                      Source File: cg-omp.cpp
>                      Object File: test.6.er/archives/cg-omp_1X48lPAm9a2
>                      Load Object: 
> /home/hpc/unrz/unrz55/projects/PELS-Tutorial/CG/code/cg-omp
>                     Mangled Name: _Z8rho_calcIdEvlPKT_PS0_._omp_fn.8
>                          Aliases:
>
> But function with multiple template parameters cause problems:
>
> (gp-display-text) fsingle csr_spmv_kernel
> Error: No function with given name `csr_spmv_kernel' found.
> (gp-display-text) fsingle "csr_spmv_kernel<double, int>(long, long, 
> int const*, int const*, double const*, double const*, double*)"
> Error: No function with given name `csr_spmv_kernel<double, int>(long, 
> long, int const*, int const*, double const*, double const*, double*)' 
> found.
> (gp-display-text) fsingle "csr_spmv_kernel<double,int>(long, long, int 
> const*, int const*, double const*, double const*, double*)"
> Error: No function with given name `csr_spmv_kernel<double,int>(long, 
> long, int const*, int const*, double const*, double const*, double*)' 
> found.
> (gp-display-text) fsingle "csr_spmv_kernel<double,int>"
> Error: No function with given name `csr_spmv_kernel<double,int>' found.
>

Try:
   fsingle "void csr_spmv_kernel<double, int>(long, long, int const*, 
int const*, double const*, double const*, double*)"

or maybe

   fsingle "void csr_spmv_kernel<double, int>(long, long, int const*, 
int const*, double const*, double const*, double*) [clone ._omp_fn.11] "


You can find a mangled function name and use this name in fsingle.
To find a mangled function name:
   name mangled
   func


> (gp-display-text) fsingle csr_spmv_kernel [N]
N must be a number.
But the problem is gp-display-text doesn't know csr_spmv_kernel

> Error: Invalid number entered: [N]
> Error: Invalid number entered: [N]
> Error: No function with given name `csr_spmv_kernel' found.
>
>
> I checked the documentation (gprofng/doc) and there the double-quotes 
> are not mentioned.

  We are preparing the gprofng documentation.
Temporarily, you can find the description of the commands in our old 
product:
https://docs.oracle.com/cd/E19205-01/820-4180/man1/er_print.1.html


      fsingle function_name [N | ADDR]
           Write the summary panel for the  named  function.   The
           optional  parameter is needed for those cases where the
           function name is ambiguous; see under the "source" com-
           mand for more information.

      source { filename | function_name } [N | ADDR]                     ||
           Write  annotated source of the given object file, or of  |
           the object file containing the given function.  If  the  |
           name  of  the function is a that of a C++ function or a  |
           Java method, the demangled name,  in  either  short  or  |
           long  form,  or  the  mangled name may be used.  If the  |
           demangled name contains spaces, it must  be  surrounded  |
           by  double  quotes.  The optional parameter, N or ADDR,  |
           is needed for those cases where the filename  or  func-  |
           tion  name  is  ambiguous.  If the N form is used, pick  |
           the Nth possible choice (with  the  numbering  starting  |
           from  1).   If  there is more than one possibility, and  |
           the N supplied is not within the possible range, report  |
           an  error; if there is only one possibility, ignore any  |
           such error.                                              |

      If the ADDR  form  is  used,  it  is  written  as  @segment-  |
      number:address.  The segment-number:address values should be  |
      specified exactly as they appear as the address  metric  for  |
      the function.

      If an ambiguous name is given without the specifier, print a
      list  of  choices instead of the annotated source. Each list
      item will contain the number that can be  used  for  N,  the
      name  of  the  object module that references the function or
      file and, in the case of an ambiguous function, the function
      name.


-Vladimir

>
> Best,
> Thomas
>
>
> Full list of functions for reference:
>
> (gp-display-text) functions
> Functions sorted by metric: Exclusive Total CPU Time
>
> Excl.     Incl.      Name
> Total     Total
> CPU sec.  CPU sec.
> 92.455    92.455     <Total>
> 63.304    63.304     void csr_spmv_kernel<double, int>(long, long, int 
> const*, int const*, double const*, double const*, double*) [clone 
> ._omp_fn.11]
> 13.199    20.424     _IO_vfscanf
>  3.362     3.362     void x_r_update<double>(long, double const*, 
> double const*, double*, double*, double const*) [clone ._omp_fn.13]
>  2.632     2.632     <static>@0x45142 (<libc-2.27.so>)
>  2.101     2.782     <static>@0x4917a (<libc-2.27.so>)
>  1.801     1.801     void p_update<double>(long, double*, double*, 
> double const*, double const*) [clone ._omp_fn.10]
>  1.591     1.591     void x_r_update<double>(long, double const*, 
> double const*, double*, double*, double const*) [clone ._omp_fn.12]
>  1.021     1.021     _IO_sputbackc
>  1.001     1.001     void rho_calc<double>(long, double const*, 
> double*) [clone ._omp_fn.8]
>  0.630     0.630     read
>  0.480     0.480     <static>@0x169c14 (<libc-2.27.so>)
>  0.380     0.380     <static>@0x52411 (<libc-2.27.so>)
>  0.350    21.135     void allocate_and_initialize<double, 
> int>(_IO_FILE*, int**, int**, double**, double**, double**, long, 
> long, long, long, char (&) [4])
>  0.200    20.624     fscanf
>  0.090    92.455     BenchmarkResult bench_cg<double, int>(_IO_FILE*, 
> long, long, long, long, stop_criterion&, char (&) [4])
>  0.080     0.080     void setup<double>(long, double const*, double*, 
> double*, double*) [clone ._omp_fn.7]
>  0.070     0.070     _pthread_cleanup_pop_restore
>  0.050     0.050     __strtol_internal
>  0.030     0.030     __strtod_internal
>  0.030     0.030     _pthread_cleanup_push_defer
>  0.030     0.030     vfscanf
>  0.010    71.150     GOMP_parallel
>  0.010     0.640     _IO_file_underflow
>  0.       71.170     BenchmarkResult cg<double, int>(stop_criterion&, 
> long, long, long, int const*, int const*, double const*, double 
> const*, double*, bool)
>  0.        0.640     _IO_default_uflow
>  0.       92.455     __libc_start_main
>  0.       71.150     double cg_solve_kernel<double, 
> int>(stop_criterion&, long, long, int const*, int const*, double 
> const*, double const*, double*)
>  0.       92.455     main
>
>
> Am 21.03.22 um 18:51 schrieb Vladimir Mezentsev:
>>
>>
>> On 3/21/22 09:17, Thomas Gruber wrote:
>>> Hi,
>>>
>>> A colleague of mine reported problems when specifying C++ functions 
>>> in gp-display-text:
>>>
>>> # the function 'csr_spmv_kernel<double, int>' exists
>>>
>>> (gp-display-text) fsingle csr_spmv_kernel<double, int>
>>
>>   Hi Thomas,
>>
>> This demangled name should t be surrounded by double quotes:
>>      fsingle "csr_spmv_kernel<double,int>(long,long,int const*,int 
>> const*,double const*,double const*,double*) "
>>
>>
>> Or you can use this form:
>>     fsingle csr_spmv_kernel [N]
>>
>> If N is absent, gp-display-text asks which function you want to see.
>>
>> Thank you,
>> -Vladimir
>>
>>
>>
>>
>>
>>
>>> Error: Invalid number entered: int>
>>> Error: Invalid number entered: int>
>>> Error: No function with given name `csr_spmv_kernel<double,' found.
>>> (gp-display-text) fsingle csr_spmv_kernel<double,int>
>>> Error: No function with given name `csr_spmv_kernel<double,int>' found.
>>>
>>> So, spaces in the template parameter list seem to be bad. Moreover, 
>>> '*' in the function parameter list seem to be not parsed properly:
>>>
>>> (gp-display-text) source csr_spmv_kernel<double,int>(long,long,int 
>>> const*,int const*,double const*,double const*,double*)
>>> Warning: extra arguments to source command, line 2
>>> Error: Invalid number entered: const*,int
>>> Error: Invalid number entered: const*,int
>>> Error: No function or file with given name 
>>> `csr_spmv_kernel<double,int>(long,long,int' found.
>>>
>>>
>>> Best,
>>> Thomas
>>>
>>>
>>
>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-03-22 18:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-21 16:17 [gprofng] Parsing of function definitions fails Thomas Gruber
2022-03-21 17:51 ` Vladimir Mezentsev
2022-03-22 16:51   ` Thomas Gruber
2022-03-22 18:46     ` Vladimir Mezentsev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).