# # spec file for package elfutils # # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: elfutils Version: 0.168 Release: 0 Summary: Higher-level library to access ELF files License: SUSE-GPL-2.0-with-OSI-exception Group: Development/Tools/Building Url: http://fedorahosted.org/elfutils/ #Git-Clone: git://sourceware.org/git/elfutils Source: https://fedorahosted.org/releases/e/l/%{name}/%{version}/%{name}-%{version}.tar.bz2 Source4: https://fedorahosted.org/releases/e/l/%{name}/%{version}/%{name}-%{version}.tar.bz2.sig Source1: README-BEFORE-ADDING-PATCHES Source2: baselibs.conf Source3: %{name}.changes Patch1: disable-tests-with-ptrace.patch Patch2: 0001-backends-Add-support-for-EM_PPC64-GNU_ATTRIBUTES.patch Patch3: ppc-machine-flags.patch Patch4: elflint-sanity-check-the-number-of-phdrs-and-shdrs.patch Patch5: elfutils-dont-trust-sh_entsize.patch Patch6: libelf-error-if-elf_compress_gnu-is-used-on-SHF_COMPRESSED.patch Patch7: readelf-fix-off-by-one-sanity-check.patch Patch8: use-the-empty-string-for-note-names-with-zero-size.patch Patch9: elflint-dont-check-section-group-without-flags-word.patch Patch10: elflint-check-symbol-table-data-is-big-enough-before-check.patch Patch11: libelf-check-compression-before-allocate-output-buffer.patch Patch12: libdw-readelf-make-sure-there-is-enough-data-to-read.patch Patch13: libdw-check-end-of-attributes-list-consistently.patch Patch14: libdwfl-sanity-check-partial-core-file-data-reads.patch Patch15: arlib-check-that-sh_entsize-isnt-zero.patch Patch16: size-handle-recursive-elf-ar-files.patch Patch17: libdwfl-sanity-check-partial-core-file-dyn-data-read.patch Patch18: libebl-check-NT_PLATFORM-core-notes.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf BuildRequires: automake BuildRequires: bison BuildRequires: flex BuildRequires: libbz2-devel BuildRequires: xz-devel BuildRequires: zlib-devel Recommends: %{name}.lang %description elfutils is a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files. %package -n libasm1 Summary: A collection of utilities and DSOs to handle compiled objects Group: System/Libraries %description -n libasm1 libasm contains the "asm" and "disasm" functions to assemble and disassamble instructions. (There is only partial support for i686 and BPF instructions.) This is part of the elfutils package. %package -n libasm-devel Summary: A collection of utilities and DSOs to handle compiled objects Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libasm1 = %{version} %description -n libasm-devel This package contains the headers and libraries needed to build applications that require libasm. %package -n libebl-plugins Summary: Architecture backends for libebl Group: System/Libraries Provides: libebl = %{version}-%{release} Obsoletes: libebl < %{version}-%{release} Provides: libebl1 = %{version}-%{release} Obsoletes: libebl1 < %{version}-%{release} %description -n libebl-plugins This subpackage contains the plugins to read architecture-specific debug info. This is part of the elfutils package. %package -n libebl-devel Summary: Development files for libebl and for EBL plugins Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libdw-devel = %{version} %description -n libebl-devel This package contains the headers and libraries needed to build applications that require libebl, or to build additional EBL architecutre backend plugins. %package -n libelf1 Summary: Library to read and write ELF files Group: System/Libraries Requires: libebl-plugins = %{version} %description -n libelf1 This package provides a high-level library to read and write ELF files. This is part of the elfutils package. %package -n libelf-devel Summary: Development files for libelf Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libelf1 = %{version} Conflicts: libelf0-devel %description -n libelf-devel This package contains the headers and libraries needed to build applications that require libelf. %package -n libdw1 Summary: Library to access DWARF debugging information Group: System/Libraries %description -n libdw1 This package provides a high-level library to access the DWARF debugging information. This is part of the elfutils package. %package -n libdw-devel Summary: Development files for libdw Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libdw1 = %{version} Requires: libelf-devel = %{version} %description -n libdw-devel This package contains the headers and libraries needed to build applications that require libdw. %lang_package %prep %setup -q %if 0%{?qemu_user_space_build} # qemu does not support ptrace %patch1 -p1 %endif %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 %patch18 -p1 %build # Change DATE/TIME macros to use last change time of elfutils.changes # See http://lists.opensuse.org/opensuse-factory/2011-05/msg00304.html modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")" DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\"" TIME="\"$(date -d "${modified}" "+%%R")\"" find . -type f -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} + # Set modversion used to verify dynamically loaded ebl backend matches to # similarly predictable value [upstream default is hostname + date] MODVERSION="suse-build `eval echo ${DATE} ${TIME}`" sed --in-place "s/^MODVERSION=.*\$/MODVERSION=\"${MODVERSION}\"/" configure.ac export CFLAGS="%optflags" CFLAGS+=" -g" # make tests pass when user does not want debuginfo (boo#1031556) %ifarch %sparc # Small PIC model not sufficient CFLAGS+=" -fPIC" %endif autoreconf -fi %configure --program-prefix=eu- make %{?_smp_mflags} %install make DESTDIR=$RPM_BUILD_ROOT install # remove unneeded files rm -f $RPM_BUILD_ROOT%{_libdir}/*.la ls -lR $RPM_BUILD_ROOT%{_libdir}/libelf* %find_lang %{name} %post -n libasm1 -p /sbin/ldconfig %post -n libelf1 -p /sbin/ldconfig %post -n libdw1 -p /sbin/ldconfig %postun -n libasm1 -p /sbin/ldconfig %postun -n libelf1 -p /sbin/ldconfig %postun -n libdw1 -p /sbin/ldconfig %check make check %files %defattr(-,root,root) %doc AUTHORS ChangeLog COPYING NEWS NOTES README THANKS TODO %{_bindir}/* %files -n libasm1 %defattr(-,root,root) %{_libdir}/libasm.so.* %{_libdir}/libasm-%{version}.so %files -n libasm-devel %defattr(-,root,root) %{_libdir}/libasm.so %{_libdir}/libasm.a %dir %{_includedir}/elfutils %{_includedir}/elfutils/libasm.h %files -n libebl-plugins %defattr(-,root,root) %{_libdir}/elfutils %files -n libebl-devel %defattr(-,root,root) %{_libdir}/libebl.a %dir %{_includedir}/elfutils %{_includedir}/elfutils/libebl.h %files -n libelf1 %defattr(-,root,root) %{_libdir}/libelf.so.* %{_libdir}/libelf-%{version}.so %files -n libelf-devel %defattr(-,root,root) %{_libdir}/libelf.so %{_libdir}/libelf.a %{_includedir}/libelf.h %{_includedir}/gelf.h %{_includedir}/nlist.h %dir %{_includedir}/elfutils %{_includedir}/elfutils/elf-knowledge.h %{_includedir}/elfutils/version.h %{_libdir}/pkgconfig/libelf.pc %files -n libdw1 %defattr(-,root,root) %{_libdir}/libdw.so.* %{_libdir}/libdw-%{version}.so %files -n libdw-devel %defattr(-,root,root) %{_libdir}/libdw.a %{_libdir}/libdw.so %{_includedir}/dwarf.h %dir %{_includedir}/elfutils %{_includedir}/elfutils/libdw.h %{_includedir}/elfutils/libdwelf.h %{_includedir}/elfutils/libdwfl.h %{_includedir}/elfutils/known-dwarf.h %{_libdir}/pkgconfig/libdw.pc %files lang -f %{name}.lang %changelog