Summary: Binary utilities Name: binutils Version: 2.34 Release: 3 License: GPLv3+ URL: https://sourceware.org/binutils Source: https://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.xz Patch0: binutils-2.20.51.0.2-libtool-lib64.patch Patch1: export-demangle.h-in-devel-package.patch #BUZ:845084 Patch2: binutils-2.22.52.0.4-no-config-h-check.patch #BUG:1452111 Patch3: binutils-2.29-revert-PLT-elision.patch Patch4: binutils-2.27-aarch64-ifunc.patch #Stop gold from complaining about relocs Patch5: binutils-gold-ignore-discarded-note-relocs.patch #PATCH-CVE-UPSTREAM Patch6: CVE-2019-1010204.patch Patch7: Import-a-fix-from-the-mainline-sources-that-prevents.patch Patch8: PR25585-PHDR-segment-not-covered-by-LOAD-segment.patch Patch9: Re-PR24511-nm-should-not-mark-symbols-in-.init_array.patch Patch10: powerpc64-ld-infinite-loop.patch Patch11: PR25745-powerpc64-ld-overflows-string-buffer-in-stat.patch Patch12: BFD-Exclude-sections-with-no-content-from-compress-c.patch Patch13: gas-PR-25863-Fix-scalar-vmul-inside-it-block-when-as.patch Patch14: NDS32-disassembly-of-odd-sized-sections.patch Patch15: asan-readelf-leaks.patch Patch16: asan-more-readelf-leaks.patch Patch17: Re-asan-more-readelf-leaks.patch Patch18: readelf-leak-in-process_archive.patch Patch19: metag-uninitialized-memory-read.patch Provides: bundled(libiberty) Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: gcc, perl, sed, coreutils, dejagnu, zlib-devel, glibc-static, sharutils, bc, libstdc++-static BuildRequires: bison, m4, gcc-c++, gettext, flex, zlib-devel, texinfo >= 4.0, perl-podlators Requires(post): info coreutils chkconfig Requires(preun):info chkconfig %define _gnu %{nil} # The higher of these two numbers determines the default ld. %{!?ld_bfd_priority: %global ld_bfd_priority 50} %{!?ld_gold_priority:%global ld_gold_priority 30} %description The GNU Binutils are a collection of binary tools. The main ones are: ld - the GNU linker. as - the GNU assembler. addr2line - Converts addresses into filenames and line numbers. ar - A utility for creating, modifying and extracting from archives. c++filt - Filter to demangle encoded C++ symbols. dlltool - Creates files for building and using DLLs. gold - A new, faster, ELF only linker, still in beta test. gprof - Displays profiling information. nlmconv - Converts object code into an NLM. nm - Lists symbols from object files. objcopy - Copies and translates object files. objdump - Displays information from object files. ranlib - Generates an index to the contents of an archive. readelf - Displays information from any ELF format object file. size - Lists the section sizes of an object or archive file. strings - Lists printable strings from files. trip - Discards symbols. windmc - A Windows compatible message compiler. windres - A compiler for Windows resource files. %package devel Summary: devel package including header files and libraries. Provides: binutils-static = %{version}-%{release} Requires: zlib-devel, binutils = %{version}-%{release}, coreutils Requires(post): info Requires(preun):info %description devel The devel package contains BFD and opcodes static and dynamic libraries. The static libraries are used by the dynamic libraries which are linkier scripts imported from glibc/Makerules. %package help Summary: binutils help %description help The help package contains man files. %prep %autosetup -n %{name}-%{version} -p1 sed -i -e 's/%''{release}/%{release}/g' bfd/Makefile{.am,.in} sed -i -e '/^libopcodes_la_\(DEPENDENCIES\|LIBADD\)/s,$, ../bfd/libbfd.la,' opcodes/Makefile.{am,in} perl -pi -e 's/i\[3-7\]86/i[34567]86/g' */conf* sed -i -e '/pagesize/s/0x1000,/0x10000,/' gold/aarch64.cc sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*aarch64.c sed -i -e 's/^ PACKAGE=/ PACKAGE=/' */configure # revert name change when testing. sed -i -e "2aDEJATOOL = binutils" binutils/Makefile.am sed -i -e "2aDEJATOOL = gas" gas/Makefile.am sed -i -e "2aDEJATOOL = ld" ld/Makefile.am sed -i -e "s/^DEJATOOL = .*/DEJATOOL = binutils/" binutils/Makefile.in sed -i -e "s/^DEJATOOL = .*/DEJATOOL = gas/" gas/Makefile.in sed -i -e "s/^DEJATOOL = .*/DEJATOOL = ld/" ld/Makefile.in touch */configure %build CARGS= case %{_target_platform} in i?86*|arm*|aarch64*) CARGS="$CARGS --enable-64-bit-bfd" ;; esac case %{_target_platform} in x86_64*|i?86*|aarch64*) CARGS="$CARGS --enable-targets=x86_64-pep --enable-relro=yes" ;; esac export CFLAGS="$RPM_OPT_FLAGS" export LDFLAGS=$RPM_LD_FLAGS %configure \ --quiet \ --build=%{_target_platform} --host=%{_target_platform} \ --target=%{_target_platform} \ --enable-gold=default --enable-ld \ --with-sysroot=/ \ --enable-deterministic-archives=no \ --enable-lto \ --enable-compressed-debug-sections=none \ --enable-generate-build-notes=no \ $CARGS \ --enable-plugins \ --enable-shared %make_build %{_smp_mflags} tooldir=%{_prefix} all %make_build %{_smp_mflags} tooldir=%{_prefix} info make -k check < /dev/null || : cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log} do ln $file binutils-%{_target_platform}-$(basename $file) || : done tar cjf binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log} uuencode binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}.tar.bz2 rm -f binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log} %install %make_install DESTDIR=%{buildroot} make prefix=%{buildroot}%{_prefix} infodir=%{buildroot}%{_infodir} install-info # Rebuild static libraries with -g -fPIC. for library in libiberty opcodes do %make_build -C $library clean %make_build CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C $library done %make_build -C bfd clean %make_build CFLAGS="-g -fPIC $RPM_OPT_FLAGS -fvisibility=hidden" -C bfd for library in bfd/libbfd.a libiberty/libiberty.a opcodes/libopcodes.a do install -m 644 $library %{buildroot}%{_libdir} done install -m 644 include/libiberty.h %{buildroot}%{_prefix}/include chmod +x %{buildroot}%{_libdir}/lib*.so* rm -f %{buildroot}%{_libdir}/lib{bfd,opcodes}.{so,la} %ifarch %{ix86} x86_64 arm sed -i -e '/^#include "ansidecl.h"/{p;s~^.*$~#include ~;}' \ -e 's/^#define BFD_DEFAULT_TARGET_SIZE \(32\|64\) *$/#define BFD_DEFAULT_TARGET_SIZE __WORDSIZE/' \ -e 's/^#define BFD_HOST_64BIT_LONG [01] *$/#define BFD_HOST_64BIT_LONG (__WORDSIZE == 64)/' \ -e 's/^#define BFD_HOST_64_BIT \(long \)\?long *$/#if __WORDSIZE == 32\ #define BFD_HOST_64_BIT long long\ #else\ #define BFD_HOST_64_BIT long\ #endif/' \ -e 's/^#define BFD_HOST_U_64_BIT unsigned \(long \)\?long *$/#define BFD_HOST_U_64_BIT unsigned BFD_HOST_64_BIT/' \ %{buildroot}%{_prefix}/include/bfd.h %endif touch -r bfd/bfd-in2.h %{buildroot}%{_prefix}/include/bfd.h # Generate libbfd.so and libbfd.so %ifarch x86_64 tee %{buildroot}%{_libdir}/libbfd.so <> binutils.lang done %post %__rm -f %{_bindir}/ld %{_sbindir}/alternatives --install %{_bindir}/ld ld \ %{_bindir}/ld.bfd %{ld_bfd_priority} %{_sbindir}/alternatives --install %{_bindir}/ld ld \ %{_bindir}/ld.gold %{ld_gold_priority} if [ $1 = 0 ]; then %{_sbindir}/alternatives --auto ld fi /sbin/ldconfig %post help for info in as.info.gz binutils.info.gz gprof.info.gz ld.info.gz do /sbin/install-info --info-dir=%{_infodir} %{_infodir}/$info done %preun if [ $1 = 0 ]; then %{_sbindir}/alternatives --remove ld %{_bindir}/ld.bfd %{_sbindir}/alternatives --remove ld %{_bindir}/ld.gold fi %preun help if [ $1 = 0 ]; then if [ -e %{_infodir}/binutils.info.gz ] then for info in as.info.gz binutils.info.gz gprof.info.gz ld.info.gz do /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/$info done fi fi %postun /sbin/ldconfig %postun help if [ -e %{_infodir}/binutils.info.gz ] then for info in as.info.gz binutils.info.gz gprof.info.gz ld.info.gz do /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/$info done fi %files -f binutils.lang %doc README %license COPYING3 COPYING COPYING3.LIB COPYING.LIB %{_bindir}/[!l]* %{_bindir}/ld.* %ghost %{_bindir}/ld %{_libdir}/lib*.so %{_libdir}/libctf* %exclude %{_libdir}/libctf.a %exclude %{_libdir}/libctf-nobfd.a %exclude %{_libdir}/libbfd.so %exclude %{_libdir}/libopcodes.so %files devel %{_prefix}/include/* %{_libdir}/lib*.a %{_libdir}/libbfd.so %{_libdir}/libopcodes.so %files help %{_mandir}/man1/* %{_infodir}/as.info.gz %{_infodir}/binutils.info.gz %{_infodir}/gprof.info.gz %{_infodir}/ld.info.gz %{_infodir}/[^b]*info* %{_infodir}/binutils*info* %{_infodir}/bfd*info* %changelog * Fri Sep 11 2020 zoulin - 2.34-3 - Type:bugfix - ID:NA - SUG:Fix a memory leak in the testcase fuzz_readelf Fix use-of-uninitialized-value in print_insn_mwtag Fix use-of-ninitialized-value in _bfd_xcoff_slurp_armap * Wed Aug 5 2020 zhangxingliang - 2.34-2 - Type:bugfix - ID:NA - SUG:NA - DESC:Fix static library file conflicts when install both binutils and binutils-devel * Fri Jul 24 2020 zhangxingliang - 2.34-1 - Type:update - ID:NA - SUG:NA - DESC:update to 2.34 * Tue Jul 14 2020 linwei - 2.33.1-8 - Type:bugfix - ID:NA - SUG:NA - DESC:fix use-of-uninitialized-value in print_insn_nds32 * Fri May 15 2020 wangchen - 2.33.1-7 - Type:bugfix - ID:NA - SUG:NA - DESC:fix memory leak in bfd_check_format * Thu Apr 02 2020 openEuler Buildteam - 2.33.1-6 - Type:bugfix - ID:NA - SUG:NA - DESC:Use disassemble_info.private_date in place of insn_sets * Wed Jan 22 2020 openEuler Buildteam - 2.33.1-5 - Type:bugfix - ID:CVE - SUG:NA - DESC: fix permission * Mon Jan 20 2020 openEuler Buildteam - 2.33.1-4 - Type:bugfix - ID:CVE - SUG:NA - DESC:fix the issue that the permission changes due to the upgrade and backport patch to fix memory leak and overflow * Wed Jan 15 2020 openEuler Buildteam - 2.33.1-3 - Type:bugfix - ID:CVE - SUG:NA - DESC:add patch to solve complaining about relocs in the .gnu.build.attribute * Tue Jan 14 2020 openEuler Buildteam - 2.33.1-2 - Type:bugfix - ID:CVE - SUG:NA - DESC:add libbfd.so and libopcodes.so for kernel building * Sat Jan 11 2020 openEuler Buildteam - 2.33.1-1 - Type:enhancement - ID:CVE - SUG:NA - DESC:update version to 2.33.1 * Mon Dec 20 2019 openEuler Buildteam - 2.31.1-16 - Type:cves - ID:CVE - SUG:NA - DESC:fix CVE-2018-20671 CVE-2019-12972 CVE-2019-17450 CVE-2019-17451 CVE-2018-18309 CVE-2018-18309 CVE-2018-18605 CVE-2018-18607 CVE-2018-18606 CVE-2018-1000876 CVE-2018-20002 CVE-2018-20002 CVE-2019-1010180 fix failure in the libiberty testsuite fix stack-buffer-overflow, and use-of-uninitialized-value and shift exponent -1 is negative * Mon Sep 23 2019 luhuaxin - 2.31.1-15 - Patch synchronization and update dependency name - Type:cves - ID:CVE-2019-1010204 - SUG:NA - DESC:fix CVE-2019-1010204 * Wed Sep 04 2019 openEuler Buildteam - 2.31.1-14 - Package init