diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b59f9cb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/dwz-0.12.tar.bz2 diff --git a/EMPTY b/EMPTY deleted file mode 100644 index 0519ecb..0000000 --- a/EMPTY +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dwz-rh1949185.patch b/dwz-rh1949185.patch new file mode 100644 index 0000000..4af623a --- /dev/null +++ b/dwz-rh1949185.patch @@ -0,0 +1,44 @@ +X-Git-Url: https://sourceware.org/git/?p=dwz.git;a=blobdiff_plain;f=dwz.c;h=9e39824d0f1fec950c811357c62e6a0caa1880d7;hp=6f34a0c7f84d00aa74750ea7d60c882967d252c0;hb=4a89e2c78e57b1b05ff71a8e32b2219e02d30425;hpb=815ac613209fa8cbcdda57302a0a1ab0366923ad + +diff --git a/dwz.c b/dwz.c +index 6f34a0c..9e39824 100644 +--- a/dwz.c ++++ b/dwz.c +@@ -2357,10 +2357,33 @@ checksum_die (DSO *dso, dw_cu_ref cu, dw_die_ref top_die, dw_die_ref die) + } + if (unlikely (op_multifile) && ref->die_collapsed_child) + ref = ref->die_parent; +- assert (((!op_multifile && !rd_multifile && !fi_multifile) +- || cu != die_cu (ref)) +- && (!op_multifile +- || cu->cu_chunk == die_cu (ref)->cu_chunk)); ++ if (cu == die_cu (ref)) ++ { ++ /* The reference was encoded using a section-relative ++ encoding, while if it could have been encoded using ++ CU-relative encoding. Typically, the latter is used, ++ because: ++ - it's potentially smaller, and ++ - it doesn't require a link-time relocation. */ ++ ++ /* Assert that the multifile only contains section-relative ++ encoding when necessary. */ ++ assert (!op_multifile && !rd_multifile); ++ ++ if (fi_multifile) ++ { ++ /* It's possible that the input DWARF contains this ++ sub-optimal reference. We currently don't optimize ++ this during single-file optimization, so it will still ++ be there during finalize_multifile. Bail out to handle ++ this conservatively. */ ++ die->die_ck_state = CK_BAD; ++ return 0; ++ } ++ } ++ /* Assert that during op_multifile, die belongs to the same object ++ as ref. */ ++ assert (!op_multifile || cu->cu_chunk == die_cu (ref)->cu_chunk); + handled = true; + break; + } diff --git a/dwz.spec b/dwz.spec new file mode 100644 index 0000000..ceade37 --- /dev/null +++ b/dwz.spec @@ -0,0 +1,123 @@ +Summary: DWARF optimization and duplicate removal tool +Name: dwz +Version: 0.12 +Release: 10%{?dist} +License: GPLv2+ and GPLv3+ +Group: Development/Tools +# git archive --format=tar --remote=git://sourceware.org/git/dwz.git \ +# --prefix=%%{name}-%%{version}/ %%{name}-%%{version} \ +# | bzip2 -9 > %%{name}-%%{version}.tar.bz2 +Source: %{name}-%{version}.tar.bz2 +BuildRequires: gcc, elfutils-libelf-devel + +Patch1: dwz-rh1949185.patch + +%description +The dwz package contains a program that attempts to optimize DWARF +debugging information contained in ELF shared libraries and ELF executables +for size, by replacing DWARF information representation with equivalent +smaller representation where possible and by reducing the amount of +duplication using techniques from DWARF standard appendix E - creating +DW_TAG_partial_unit compilation units (CUs) for duplicated information +and using DW_TAG_imported_unit to import it into each CU that needs it. + +%prep +%setup -q +%patch1 -p1 -b .rh1949185~ + +%build +make %{?_smp_mflags} CFLAGS='%{optflags}' LDFLAGS='%{build_ldflags}' \ + prefix=%{_prefix} mandir=%{_mandir} bindir=%{_bindir} + +%install +rm -rf %{buildroot} +make DESTDIR=%{buildroot} prefix=%{_prefix} mandir=%{_mandir} bindir=%{_bindir} \ + install + +%files +%license COPYING COPYING3 COPYING.RUNTIME +%{_bindir}/dwz +%{_mandir}/man1/dwz.1* + +%changelog +* Wed May 5 2021 Marek Polacek 0.12-10 +- handle intra-CU DW_FORM_ref_addr reference (#1949185) + +* Tue Aug 7 2018 Marek Polacek 0.12-9 +- don't use arched BuildRequires (#1545773) +- remove %defattr + +* Fri Feb 23 2018 Florian Weimer - 0.12-7 +- Use LDFLAGS from redhat-rpm-config + +* Wed Feb 07 2018 Fedora Release Engineering - 0.12-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 0.12-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.12-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Feb 01 2017 Stephen Gallagher - 0.12-3 +- Add missing %%license macro + +* Wed Feb 03 2016 Fedora Release Engineering - 0.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jul 13 2015 Jakub Jelinek 0.12-1 +- fix up alignment of moved non-allocated sections and section header table + +* Wed Jun 17 2015 Fedora Release Engineering - 0.11-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Feb 21 2015 Till Maas - 0.11-5 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Sat Aug 16 2014 Fedora Release Engineering - 0.11-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 0.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 0.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jul 2 2013 Jakub Jelinek 0.11-1 +- handle .gdb_index version 8 (#969454) + +* Mon Mar 11 2013 Jakub Jelinek 0.10-1 +- when creating DW_AT_stmt_list, use DW_FORM_sec_offset for dwarf4 + and DW_FORM_data4 for dwarf[23] rather than vice versa (#919755) + +* Mon Feb 4 2013 Jakub Jelinek 0.9-1 +- fix up handling of DIE equality if more than one DIE in the same + CU compare equal (#889283) +- check DW_FORM_ref_addr properly during fi_multifile phase + +* Thu Nov 29 2012 Jakub Jelinek 0.8-1 +- fix recompute_abbrevs (#880634) +- optimize DW_FORM_data[48] DW_AT_high_pc that GCC 4.8 produces + +* Fri Aug 10 2012 Jakub Jelinek 0.7-1 +- fix iterative hasing on big-endian targets (#846685) + +* Wed Jul 18 2012 Fedora Release Engineering - 0.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jul 17 2012 Jakub Jelinek 0.6-1 +- add --version/-v option support (Matt Newsome) +- fix building on RHEL 5 + +* Wed Jul 4 2012 Jakub Jelinek 0.5-1 +- handle .gdb_index version 7 + +* Fri Jun 22 2012 Jakub Jelinek 0.4-1 +- fix up DIE counting in low-mem mode for testing the -L limit + +* Fri Jun 15 2012 Jakub Jelinek 0.3-1 +- update to dwz-0.3 (#830863) + +* Mon Jun 11 2012 Jakub Jelinek 0.2-1 +- new package diff --git a/sources b/sources new file mode 100644 index 0000000..1f84b9a --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (dwz-0.12.tar.bz2) = 3b6e7270cde09dd3cfb39e4400e9012e781fb92f9ad91e2f930ec0c5ed1df2331a2dbd03ad520132460670b242c9a5585a2183df8dfda8a0188ebcfa51f8996e