aboutsummaryrefslogtreecommitdiff
path: root/Documentation/libtraceevent-func_find.txt
blob: 26fac681fe8e67f290c8b7b9025bff213af05f7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
libtraceevent(3)
================

NAME
----
tep_find_function,tep_find_function_address,tep_find_function_info - Find function name / start address.

SYNOPSIS
--------
[verse]
--
*#include <event-parse.h>*

const char pass:[*]*tep_find_function*(struct tep_handle pass:[*]_tep_, unsigned long long _addr_);
unsigned long long *tep_find_function_address*(struct tep_handle pass:[*]_tep_, unsigned long long _addr_);
int *tep_find_function_info*(struct tep_handle pass:[*]_tep_, unsigned long long _addr_, const char pass:[**]_name_,
			   unsigned long long pass:[*]_start_, unsigned long pass:[*]_size_);
--

DESCRIPTION
-----------
These functions can be used to find function name and start address, by given
address. The given address does not have to be exact, it will select the function
that would contain it.

The *tep_find_function()* function returns the function name, which contains the
given address _addr_. The _tep_ argument is the trace event parser context.

The *tep_find_function_address()* function returns the function start address,
by given address _addr_. The _addr_ does not have to be exact, it will select the
function that would contain it. The _tep_ argument is the trace event parser context.

The *tep_find_function_info()* function retrieves the _name_, starting address (_start_),
and the function text _size_ of the function at _address_, if it is found. Note,
if the _tep_ handle has a function resolver (used by perf), then _size_ is set to
zero.

RETURN VALUE
------------
The *tep_find_function()* function returns the function name, or NULL in case
it cannot be found.

The *tep_find_function_address()* function returns the function start address,
or 0 in case it cannot be found.

The *tep_find_function_info()* function returns 1 if a function is found for the
given address, or 0 if it is not.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
void show_function_name(unsigned long long addr)
{
	const char *fname = tep_find_function(tep, addr);

	if (fname)
		printf("Found function %s at 0x%0llx\n", fname, addr);
	else
		printf("No function found at 0x%0llx\n", addr);
}

void show_function_start_addr(unsigned long long addr)
{
	const char *fname = tep_find_function(tep, addr);
	unsigned long long fstart;

	if (!fname) {
		printf("No function found at 0x%0llx\n", addr);
		return;
	}

	fstart = tep_find_function_address(tep, addr);
	printf("Function %s at 0x%llx starts at 0x%0llx\n",
	       fname, addr, fstart);
}

void show_function_info(unsigned long long addr)
{
	const char *fname;
	unsigned long long fstart;
	unsigned long size;

	ret = tep_find_function_info(tep, addr, &fname, &fstart, &size);
	if (!ret) {
		printf("No function found at 0x%0lx\n", addr);
		return;
	}

	printf("Function %s at 0x%lx starts at 0x%0lx and is %ld in size\n",
	       fname, addr, fstart, size);
}
...
--

FILES
-----
[verse]
--
*event-parse.h*
	Header file to include in order to have access to the library APIs.
*-ltraceevent*
	Linker switch to add when building a program that uses the library.
--

SEE ALSO
--------
*libtraceevent*(3), *trace-cmd*(1)

AUTHOR
------
[verse]
--
*Steven Rostedt* <rostedt@goodmis.org>, author of *libtraceevent*.
*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>, author of this man page.
--
REPORTING BUGS
--------------
Report bugs to  <linux-trace-devel@vger.kernel.org>

LICENSE
-------
libtraceevent is Free Software licensed under the GNU LGPL 2.1

RESOURCES
---------
https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/