diff --git a/.gitignore b/.gitignore index d45f1f0..9dcbb12 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ dwarves-1.8.tar.bz2 /dwarves-1.10.tar.bz2 /dwarves-1.12.tar.bz2 /dwarves-1.13.tar.xz +/dwarves-1.15.tar.xz diff --git a/dwarves-1.13-spec-fixes.patch b/dwarves-1.13-spec-fixes.patch deleted file mode 100644 index 9434c0e..0000000 --- a/dwarves-1.13-spec-fixes.patch +++ /dev/null @@ -1,212 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e2c0ee107940..88a364febaf2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -143,6 +143,8 @@ install(TARGETS dwarves LIBRARY DESTINATION ${LIB_INSTALL_DIR}) - install(TARGETS dwarves dwarves_emit dwarves_reorganize LIBRARY DESTINATION ${LIB_INSTALL_DIR}) - install(FILES dwarves.h dwarves_emit.h dwarves_reorganize.h - dutil.h gobuffer.h list.h rbtree.h strings.h -+ btf_encoder.h config.h ctf_encoder.h ctf.h -+ elfcreator.h elf_symtab.h hash.h libbtf.h libctf.h - DESTINATION ${CMAKE_INSTALL_PREFIX}/include/dwarves/) - install(FILES man-pages/pahole.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1/) - install(PROGRAMS ostra/ostra-cg DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) -diff --git a/ostra/ostra-cg b/ostra/ostra-cg -index 0f4009a24558..52c902e24869 100755 ---- a/ostra/ostra-cg -+++ b/ostra/ostra-cg -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # ostra-cg - generate callgraphs from encoded trace - # - # Arnaldo Carvalho de Melo -@@ -386,7 +386,7 @@ def method_stats(class_def, callgraph): - - if __name__ == '__main__': - if len(sys.argv) not in [ 3, 4 ]: -- print "usage: ostra-cg [object]" -+ print("usage: ostra-cg [object]") - sys.exit(1) - - gen_html = True -@@ -402,9 +402,9 @@ if __name__ == '__main__': - class_def = ostra.class_definition(class_def_file = "%s.fields" % traced_class, - class_methods_file = "%s.functions" % traced_class) - new_callgraph_file(traced_class) -- class_def.parse_file(encoded_trace, verbose = verbose, -- process_record = process_record, -- my_object = my_object) -+ class_def.parse_file(encoded_trace, verbose = verbose, -+ process_record = process_record, -+ my_object = my_object) - if gen_html: - print_where_fields_changed() - close_callgraph_file() -diff --git a/ostra/python/ostra.py b/ostra/python/ostra.py -index dd240ae1a180..86fe07947a5d 100755 ---- a/ostra/python/ostra.py -+++ b/ostra/python/ostra.py -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python3 - # - # Copyright (C) 2005, 2006, 2007 Arnaldo Carvalho de Melo - # -@@ -206,7 +206,7 @@ class class_definition: - break - if verbose: - nr_lines += 1 -- print "\r%d" % nr_lines, -+ print("\r%d" % nr_lines,) - - self.parse_record(line) - -@@ -245,8 +245,8 @@ class class_definition: - continue - - if verbose: -- print "plot_methods: plotting %s method (%d samples)" % \ -- (current_method.name, nr_samples) -+ print("plot_methods: plotting %s method (%d samples)" % \ -+ (current_method.name, nr_samples)) - - entries = [float("%d.0" % entry) for entry in range(nr_samples)] - samples = current_method.times -@@ -323,11 +323,11 @@ def plot_field(name, directory, tstamps, samples, nr_samples, plot_fmt = None, - if current_plot_fmt == "filter_dev": - std = std_deviation(samples) * 2 - if verbose: -- print "filter_dev(%s) std=%d" % (name, std) -+ print("filter_dev(%s) std=%d" % (name, std)) - for i in range(nr_samples): - if samples[i] > std: - if verbose: -- print "%s: filtering out %d" % (name, samples[i]) -+ print("%s: filtering out %d" % (name, samples[i])) - samples[i] = 0 - field_mean = mean(samples) - yaxis_plot_fmt = FuncFormatter(pylab_formatter) -@@ -376,7 +376,7 @@ def plot(class_def, callgraph, verbose = False): - continue - - if verbose: -- print "ostra-plot: plotting %s field (%d samples)" % (current_field.name, nr_samples) -+ print("ostra-plot: plotting %s field (%d samples)" % (current_field.name, nr_samples)) - - tstamps = [float("%d.%06d" % (entry.tstamp.seconds, entry.tstamp.microseconds)) \ - for entry in current_field.changes] -@@ -392,6 +392,6 @@ if __name__ == '__main__': - import sys - c = class_definition(sys.argv[1], sys.argv[2]) - for field in c.fields.values(): -- print "%s: %s" % (field, field.table) -+ print("%s: %s" % (field, field.table)) - for method in c.methods.values(): -- print "%d: %s" % (method.function_id, method.name) -+ print("%d: %s" % (method.function_id, method.name)) -diff --git a/rpm/SPECS/dwarves.spec b/rpm/SPECS/dwarves.spec -index 5d8f60879afa..be2c29f3792c 100644 ---- a/rpm/SPECS/dwarves.spec -+++ b/rpm/SPECS/dwarves.spec -@@ -5,14 +5,13 @@ Name: dwarves - Version: 1.13 - Release: 1%{?dist} - License: GPLv2 --Summary: Debugging Information Manipulation Tools --Group: Development/Tools -+Summary: Debugging Information Manipulation Tools (pahole & friends) - URL: http://acmel.wordpress.com --Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.bz2 -+Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz -+BuildRequires: gcc - BuildRequires: cmake - BuildRequires: zlib-devel - BuildRequires: elfutils-devel >= 0.130 --BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) - - %description - dwarves is a set of tools that use the debugging information inserted in -@@ -37,14 +36,12 @@ functions, inlines, decisions made by the compiler about inlining, etc. - - %package -n %{libname}%{libver} - Summary: Debugging information processing library --Group: Development/Libraries - - %description -n %{libname}%{libver} - Debugging information processing library. - - %package -n %{libname}%{libver}-devel - Summary: Debugging information library development files --Group: Development/Libraries - Requires: %{libname}%{libver} = %{version}-%{release} - - %description -n %{libname}%{libver}-devel -@@ -61,19 +58,12 @@ make VERBOSE=1 %{?_smp_mflags} - rm -Rf %{buildroot} - make install DESTDIR=%{buildroot} - --%post -n %{libname}%{libver} -p /sbin/ldconfig -- --%postun -n %{libname}%{libver} -p /sbin/ldconfig -- --%clean --rm -rf %{buildroot} -+%ldconfig_scriptlets -n %{libname}%{libver} - - %files --%defattr(0644,root,root,0755) - %doc README.ctracer - %doc README.btf - %doc NEWS --%defattr(0755,root,root,0755) - %{_bindir}/btfdiff - %{_bindir}/codiff - %{_bindir}/ctracer -@@ -99,19 +89,26 @@ rm -rf %{buildroot} - %attr(0755,root,root) %{_datadir}/dwarves/runtime/python/ostra.py* - - %files -n %{libname}%{libver} --%defattr(0644,root,root,0755) - %{_libdir}/%{libname}.so.* - %{_libdir}/%{libname}_emit.so.* - %{_libdir}/%{libname}_reorganize.so.* - - %files -n %{libname}%{libver}-devel --%defattr(0644,root,root,0755) - %doc MANIFEST README -+%{_includedir}/dwarves/btf_encoder.h -+%{_includedir}/dwarves/config.h -+%{_includedir}/dwarves/ctf_encoder.h -+%{_includedir}/dwarves/ctf.h -+%{_includedir}/dwarves/dutil.h - %{_includedir}/dwarves/dwarves.h - %{_includedir}/dwarves/dwarves_emit.h - %{_includedir}/dwarves/dwarves_reorganize.h --%{_includedir}/dwarves/dutil.h -+%{_includedir}/dwarves/elfcreator.h -+%{_includedir}/dwarves/elf_symtab.h - %{_includedir}/dwarves/gobuffer.h -+%{_includedir}/dwarves/hash.h -+%{_includedir}/dwarves/libbtf.h -+%{_includedir}/dwarves/libctf.h - %{_includedir}/dwarves/list.h - %{_includedir}/dwarves/rbtree.h - %{_includedir}/dwarves/strings.h -@@ -120,6 +117,16 @@ rm -rf %{buildroot} - %{_libdir}/%{libname}_reorganize.so - - %changelog -+* Tue Apr 23 2019 Arnaldo Carvalho de Melo - 1.13-1 -+- New release: 1.13 -+- Infer __packed__ attributes, i.e. __attribute__((__packed__)) -+- Support DW_AT_alignment, i.e. __attribute__((__aligned__(N))) -+- Decode BTF type format and pretty print it -+- BTF encoding fixes -+- Use libbpf's BTF deduplication -+- Support unions as arguments to -C/--class -+- New 'pfunct --compile' generates compilable output with type definitions -+ - * Thu Aug 16 2018 Arnaldo Carvalho de Melo - 1.12-1 - - New release: - - union member cacheline boundaries for all inner structs diff --git a/dwarves.spec b/dwarves.spec index b0feebe..9a3f403 100644 --- a/dwarves.spec +++ b/dwarves.spec @@ -2,13 +2,12 @@ %define libver 1 Name: dwarves -Version: 1.13 +Version: 1.15 Release: 1%{?dist} License: GPLv2 Summary: Debugging Information Manipulation Tools (pahole & friends) URL: http://acmel.wordpress.com Source: http://fedorapeople.org/~acme/dwarves/%{name}-%{version}.tar.xz -Patch: dwarves-1.13-spec-fixes.patch BuildRequires: gcc BuildRequires: cmake BuildRequires: zlib-devel @@ -50,7 +49,6 @@ Debugging information processing library development files. %prep %setup -q -c -n %{name}-%{version} -%patch -p1 %build %cmake . @@ -119,6 +117,12 @@ make install DESTDIR=%{buildroot} %{_libdir}/%{libname}_reorganize.so %changelog +* Fri May 27 2019 Arnaldo Carvalho de Melo - 1.15-1 +- New release: 1.15 +- Fix --expand_types/-E segfault +- Fixup endless printing named structs inside structs in --expand_types +- Avoid NULL deref with num config in __class__fprintf() + * Tue Apr 23 2019 Arnaldo Carvalho de Melo - 1.13-1 - New release: 1.13 - Infer __packed__ attributes, i.e. __attribute__((__packed__)) diff --git a/sources b/sources index c837aa7..7ceefca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (dwarves-1.13.tar.xz) = 26485b183b4c7b608dd0392f9155dd570a14c86fdeafee232e44ad30f14a1357b408b61b0e8a31ea4bf976ed7fc44e7d5a4a3ccede9713c47265ad52c13dadf0 +SHA512 (dwarves-1.15.tar.xz) = 29a8a15b7190480e79c2f423c7104d0fd275cd4c3df17518a1dd3c63cce1c528fad4b6f580baa397d9aa9323703009009e2d529939b12dd1af2c65cf7120b237