mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
perf/urgent fixes:
- Fix the build on Clear Linux, coping with redundant declarations of function prototypes in python3 header files by adding -Wno-redundant-decls to build with PYTHON=python3 (Arnaldo Carvalho de Melo) - Fixes for processing inline frames in backtraces using DWARF based unwinding (Milian Wolff) - Cope with bad DWARF info for function names for inline frames,not trying to demangle this symbol. Problem reported with rust but reproduced as well with C++. Problem reported to the libbpf maintainers (Milian Wolff) - Fix python export to postgresql and sqlite code (Adrian Hunter) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCW7eGGwAKCRCyPKLppCJ+ JzAWAP4rGO2bZmvRFBmg9go5xeYZmOOy8pk9zHslslrNlSSyrwEAvyI1Fk/YYR4I 9UDE+/F9pey7BVuY5V8pFplEEcFF8gY= =K7kp -----END PGP SIGNATURE----- Merge tag 'perf-urgent-for-mingo-4.19-20181005' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent Pull perf/urgent fixes from Arnaldo Carvalho de Melo: - Fix the build on Clear Linux, coping with redundant declarations of function prototypes in python3 header files by adding -Wno-redundant-decls to build with PYTHON=python3 (Arnaldo Carvalho de Melo) - Fixes for processing inline frames in backtraces using DWARF based unwinding (Milian Wolff) - Cope with bad DWARF info for function names for inline frames,not trying to demangle this symbol. Problem reported with rust but reproduced as well with C++. Problem reported to the libbpf maintainers (Milian Wolff) - Fix python export to postgresql and sqlite code (Adrian Hunter) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
c1883f10cf
4 changed files with 20 additions and 5 deletions
|
@ -204,14 +204,23 @@ from ctypes import *
|
||||||
libpq = CDLL("libpq.so.5")
|
libpq = CDLL("libpq.so.5")
|
||||||
PQconnectdb = libpq.PQconnectdb
|
PQconnectdb = libpq.PQconnectdb
|
||||||
PQconnectdb.restype = c_void_p
|
PQconnectdb.restype = c_void_p
|
||||||
|
PQconnectdb.argtypes = [ c_char_p ]
|
||||||
PQfinish = libpq.PQfinish
|
PQfinish = libpq.PQfinish
|
||||||
|
PQfinish.argtypes = [ c_void_p ]
|
||||||
PQstatus = libpq.PQstatus
|
PQstatus = libpq.PQstatus
|
||||||
|
PQstatus.restype = c_int
|
||||||
|
PQstatus.argtypes = [ c_void_p ]
|
||||||
PQexec = libpq.PQexec
|
PQexec = libpq.PQexec
|
||||||
PQexec.restype = c_void_p
|
PQexec.restype = c_void_p
|
||||||
|
PQexec.argtypes = [ c_void_p, c_char_p ]
|
||||||
PQresultStatus = libpq.PQresultStatus
|
PQresultStatus = libpq.PQresultStatus
|
||||||
|
PQresultStatus.restype = c_int
|
||||||
|
PQresultStatus.argtypes = [ c_void_p ]
|
||||||
PQputCopyData = libpq.PQputCopyData
|
PQputCopyData = libpq.PQputCopyData
|
||||||
|
PQputCopyData.restype = c_int
|
||||||
PQputCopyData.argtypes = [ c_void_p, c_void_p, c_int ]
|
PQputCopyData.argtypes = [ c_void_p, c_void_p, c_int ]
|
||||||
PQputCopyEnd = libpq.PQputCopyEnd
|
PQputCopyEnd = libpq.PQputCopyEnd
|
||||||
|
PQputCopyEnd.restype = c_int
|
||||||
PQputCopyEnd.argtypes = [ c_void_p, c_void_p ]
|
PQputCopyEnd.argtypes = [ c_void_p, c_void_p ]
|
||||||
|
|
||||||
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
|
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
|
||||||
|
|
|
@ -440,7 +440,11 @@ def branch_type_table(*x):
|
||||||
|
|
||||||
def sample_table(*x):
|
def sample_table(*x):
|
||||||
if branches:
|
if branches:
|
||||||
bind_exec(sample_query, 18, x)
|
for xx in x[0:15]:
|
||||||
|
sample_query.addBindValue(str(xx))
|
||||||
|
for xx in x[19:22]:
|
||||||
|
sample_query.addBindValue(str(xx))
|
||||||
|
do_query_(sample_query)
|
||||||
else:
|
else:
|
||||||
bind_exec(sample_query, 22, x)
|
bind_exec(sample_query, 22, x)
|
||||||
|
|
||||||
|
|
|
@ -2286,7 +2286,8 @@ static int append_inlines(struct callchain_cursor *cursor,
|
||||||
if (!symbol_conf.inline_name || !map || !sym)
|
if (!symbol_conf.inline_name || !map || !sym)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
addr = map__rip_2objdump(map, ip);
|
addr = map__map_ip(map, ip);
|
||||||
|
addr = map__rip_2objdump(map, addr);
|
||||||
|
|
||||||
inline_node = inlines__tree_find(&map->dso->inlined_nodes, addr);
|
inline_node = inlines__tree_find(&map->dso->inlined_nodes, addr);
|
||||||
if (!inline_node) {
|
if (!inline_node) {
|
||||||
|
@ -2312,7 +2313,7 @@ static int unwind_entry(struct unwind_entry *entry, void *arg)
|
||||||
{
|
{
|
||||||
struct callchain_cursor *cursor = arg;
|
struct callchain_cursor *cursor = arg;
|
||||||
const char *srcline = NULL;
|
const char *srcline = NULL;
|
||||||
u64 addr;
|
u64 addr = entry->ip;
|
||||||
|
|
||||||
if (symbol_conf.hide_unresolved && entry->sym == NULL)
|
if (symbol_conf.hide_unresolved && entry->sym == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2324,7 +2325,8 @@ static int unwind_entry(struct unwind_entry *entry, void *arg)
|
||||||
* Convert entry->ip from a virtual address to an offset in
|
* Convert entry->ip from a virtual address to an offset in
|
||||||
* its corresponding binary.
|
* its corresponding binary.
|
||||||
*/
|
*/
|
||||||
addr = map__map_ip(entry->map, entry->ip);
|
if (entry->map)
|
||||||
|
addr = map__map_ip(entry->map, entry->ip);
|
||||||
|
|
||||||
srcline = callchain_srcline(entry->map, entry->sym, addr);
|
srcline = callchain_srcline(entry->map, entry->sym, addr);
|
||||||
return callchain_cursor_append(cursor, entry->ip,
|
return callchain_cursor_append(cursor, entry->ip,
|
||||||
|
|
|
@ -35,7 +35,7 @@ class install_lib(_install_lib):
|
||||||
|
|
||||||
cflags = getenv('CFLAGS', '').split()
|
cflags = getenv('CFLAGS', '').split()
|
||||||
# switch off several checks (need to be at the end of cflags list)
|
# switch off several checks (need to be at the end of cflags list)
|
||||||
cflags += ['-fno-strict-aliasing', '-Wno-write-strings', '-Wno-unused-parameter' ]
|
cflags += ['-fno-strict-aliasing', '-Wno-write-strings', '-Wno-unused-parameter', '-Wno-redundant-decls' ]
|
||||||
if cc != "clang":
|
if cc != "clang":
|
||||||
cflags += ['-Wno-cast-function-type' ]
|
cflags += ['-Wno-cast-function-type' ]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue