477 lines
13 KiB
RPMSpec
477 lines
13 KiB
RPMSpec
Summary: Binary utilities
|
|
Name: binutils
|
|
Version: 2.34
|
|
Release: 9
|
|
License: GPLv3+
|
|
URL: https://sourceware.org/binutils
|
|
|
|
Source: https://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.xz
|
|
|
|
# risc-v do not support gold linker.
|
|
%ifnarch riscv64
|
|
%bcond_without gold
|
|
%else
|
|
%bcond_with gold
|
|
%endif
|
|
|
|
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
|
|
|
|
Patch20: Fix-a-potential-use-of-an-uninitialised-value-in-the.patch
|
|
Patch21: backport-CVE-2020-16592-PR25823-Use-after-free-in-bfd_hash_lookup.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}
|
|
|
|
%if %{with gold}
|
|
%{!?ld_gold_priority:%global ld_gold_priority 30}
|
|
%endif
|
|
|
|
%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*|riscv64*)
|
|
CARGS="$CARGS --enable-64-bit-bfd"
|
|
;;
|
|
esac
|
|
|
|
case %{_target_platform} in x86_64*|i?86*|aarch64*|riscv64*)
|
|
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-ld \
|
|
%if %{with gold}
|
|
--enable-gold=default \
|
|
%endif
|
|
--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
|
|
|
|
%check
|
|
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
|
|
|
|
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 <bits/wordsize.h>~;}' \
|
|
-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 libopcodes.so
|
|
|
|
%ifarch x86_64
|
|
tee %{buildroot}%{_libdir}/libbfd.so <<EOF
|
|
/* GNU ld script */
|
|
|
|
OUTPUT_FORMAT(elf64-x86-64)
|
|
|
|
INPUT ( %{_libdir}/libbfd.a -liberty -lz -ldl )
|
|
EOF
|
|
|
|
tee %{buildroot}%{_libdir}/libopcodes.so <<EOF
|
|
/* GNU ld script */
|
|
|
|
OUTPUT_FORMAT(elf64-x86-64)
|
|
|
|
INPUT ( %{_libdir}/libopcodes.a -lbfd )
|
|
EOF
|
|
%endif
|
|
|
|
%ifarch aarch64
|
|
tee %{buildroot}%{_libdir}/libbfd.so <<EOF
|
|
/* GNU ld script */
|
|
|
|
OUTPUT_FORMAT(elf64-littleaarch64)
|
|
|
|
INPUT ( %{_libdir}/libbfd.a -liberty -lz -ldl )
|
|
EOF
|
|
|
|
tee %{buildroot}%{_libdir}/libopcodes.so <<EOF
|
|
/* GNU ld script */
|
|
|
|
OUTPUT_FORMAT(elf64-littleaarch64)
|
|
|
|
INPUT ( %{_libdir}/libopcodes.a -lbfd )
|
|
EOF
|
|
%endif
|
|
|
|
%ifarch riscv64
|
|
tee %{buildroot}%{_libdir}/libbfd.so <<EOF
|
|
/* GNU ld script */
|
|
|
|
OUTPUT_FORMAT(elf64-littleriscv)
|
|
|
|
INPUT ( %{_libdir}/libbfd.a -liberty -lz -ldl )
|
|
EOF
|
|
|
|
tee %{buildroot}%{_libdir}/libopcodes.so <<EOF
|
|
/* GNU ld script */
|
|
|
|
OUTPUT_FORMAT(elf64-littleriscv)
|
|
|
|
INPUT ( %{_libdir}/libopcodes.a -lbfd )
|
|
EOF
|
|
%endif
|
|
|
|
rm -f %{buildroot}%{_infodir}/dir
|
|
rm -rf %{buildroot}%{_prefix}/%{_target_platform}
|
|
|
|
%find_lang binutils
|
|
%if %{with gold}
|
|
for library in opcodes bfd gas gprof ld gold
|
|
%else
|
|
for library in opcodes bfd gas gprof ld
|
|
%endif
|
|
do
|
|
%find_lang $library
|
|
cat $library.lang >> binutils.lang
|
|
done
|
|
|
|
%post
|
|
%__rm -f %{_bindir}/ld
|
|
%{_sbindir}/alternatives --install %{_bindir}/ld ld \
|
|
%{_bindir}/ld.bfd %{ld_bfd_priority}
|
|
|
|
%if %{with gold}
|
|
%{_sbindir}/alternatives --install %{_bindir}/ld ld \
|
|
%{_bindir}/ld.gold %{ld_gold_priority}
|
|
%endif
|
|
|
|
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
|
|
|
|
%if %{with gold}
|
|
%{_sbindir}/alternatives --remove ld %{_bindir}/ld.gold
|
|
%endif
|
|
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
|
|
* Mon Mar 22 2021 lirui <lirui130@huawei.com> - 2.34-9
|
|
- Type:bugfix
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC:move the test to %check phase
|
|
|
|
* Sat Jan 9 2021 zoulin <zoulin13@huawei.com> - 2.34-8
|
|
- Type:CVE
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC:fix CVE-2020-16592
|
|
|
|
* Wed Nov 4 2020 Qingqing Li <liqingqing3@huawei.com> - 2.34-7
|
|
- Type:bugfix
|
|
- ID:NA
|
|
- SUG:fully support for riscv64.
|
|
|
|
* Tue Nov 3 2020 Qingqing Li <liqingqing3@huawei.com> - 2.34-6
|
|
- Type:bugfix
|
|
- ID:NA
|
|
- SUG:riscv64 do not support gold linker, add a condition to distinguish it.
|
|
|
|
* Sat Oct 31 2020 Qingqing Li <liqingqing3@huawei.com> - 2.34-5
|
|
- Type:bugfix
|
|
- ID:NA
|
|
- SUG:fix changelog date.
|
|
|
|
* Fri Sep 18 2020 zoulin <zoulin13@huawei.com> - 2.34-4
|
|
- Type:bugfix
|
|
- ID:NA
|
|
- SUG:Fix a potential use-of-an-uninitialised-value in the print_insn_ns32k of fuzz_disassemble
|
|
|
|
* Fri Sep 11 2020 zoulin <zoulin13@huawei.com> - 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 <zhangxingliang3@huawei.com> - 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 <zhangxingliang3@huawei.com> - 2.34-1
|
|
- Type:update
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC:update to 2.34
|
|
|
|
* Tue Jul 14 2020 linwei <linwei54@huawei.com> - 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 <wangchen137@huawei.com> - 2.33.1-7
|
|
- Type:bugfix
|
|
- ID:NA
|
|
- SUG:NA
|
|
- DESC:fix memory leak in bfd_check_format
|
|
|
|
* Thu Apr 02 2020 openEuler Buildteam <buildteam@openeuler.org> - 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 <buildteam@openeuler.org> - 2.33.1-5
|
|
- Type:bugfix
|
|
- ID:CVE
|
|
- SUG:NA
|
|
- DESC: fix permission
|
|
|
|
* Mon Jan 20 2020 openEuler Buildteam <buildteam@openeuler.org> - 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 <buildteam@openeuler.org> - 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 <buildteam@openeuler.org> - 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 <buildteam@openeuler.org> - 2.33.1-1
|
|
- Type:enhancement
|
|
- ID:CVE
|
|
- SUG:NA
|
|
- DESC:update version to 2.33.1
|
|
|
|
* Fri Dec 20 2019 openEuler Buildteam <buildteam@openeuler.org> - 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 <luhuaxin@huawei.com> - 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 <buildteam@openeuler.org> - 2.31.1-14
|
|
- Package init
|