commit binutils.14782 for openSUSE:Leap:15.2:Update
Hello community, here is the log from the commit of package binutils.14782 for openSUSE:Leap:15.2:Update checked in at 2020-11-01 10:22:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2:Update/binutils.14782 (Old) and /work/SRC/openSUSE:Leap:15.2:Update/.binutils.14782.new.3463 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "binutils.14782" Sun Nov 1 10:22:09 2020 rev:1 rq:844708 version:2.35 Changes: -------- New Changes file: --- /dev/null 2020-10-22 01:51:33.322291705 +0200 +++ /work/SRC/openSUSE:Leap:15.2:Update/.binutils.14782.new.3463/binutils.changes 2020-11-01 10:22:11.448090981 +0100 @@ -0,0 +1,3691 @@ +------------------------------------------------------------------- +Tue Sep 15 12:14:55 UTC 2020 - matz@suse.com + +- Update binutils-2.35-branch.diff.gz to commit 23f268a0: + * Add xBPF target + * Fix various problems with DWARF 5 support in gas +- Toolchain module update for SLE15 [jsc#ECO-2373] +- Includes changes that were SLE-only in binutils-add-z15-name.diff + for [bsc#1160590, jsc#SLE-7903 aka jsc#SLE-7464] + +------------------------------------------------------------------- +Sat Aug 15 08:42:59 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Add binutils-2.35-branch.diff.gz: it includes fix for + nm -B for objects compiled with -flto and -fcommon. + +------------------------------------------------------------------- +Fri Aug 7 14:46:35 UTC 2020 - matz@suse.com + +- Add binutils-revert-nm-symversion.diff to be compatible with old + output of nm relied on in scripts. +- Add binutils-fix-abierrormsg.diff to work around an eager (new) + error message occuring without inputs and as-needed (affects + nvme-cli build). + +------------------------------------------------------------------- +Fri Jul 24 14:25:31 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Update to binutils 2.35: + * The asseembler can now produce DWARF-5 format line number tables. + * Readelf now has a "lint" mode to enable extra checks of the files it is processing. + * Readelf will now display "[...]" when it has to truncate a symbol name. + The old behaviour - of displaying as many characters as possible, up to + the 80 column limit - can be restored by the use of the --silent-truncation + option. + * The linker can now produce a dependency file listing the inputs that it + has processed, much like the -M -MP option supported by the compiler. + +- Regenerate add-ulp-section.diff with -p1 due to a fuzzing issue. +- Remove binutils-2.34-branch.diff.gz. +- Regenerate binutils-build-as-needed.diff due to a fuzzing issue. +- Regenerate binutils-fix-invalid-op-errata.diff as one hunk was upstreamed. +- Remove upstreamed patch binutils-pr25593.diff. +- Regenerate unit-at-a-time.patch due to a fuzzing issue. +- Regenerate binutils-revert-plt32-in-branches.diff. + +------------------------------------------------------------------- +Wed Mar 25 14:12:50 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Update binutils-2.34-branch.diff.gz. + +------------------------------------------------------------------- +Fri Feb 28 16:20:14 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Remove fix-try_load_plugin.patch as it is part + of the updated binutils-2.34-branch.diff.gz patch. + +------------------------------------------------------------------- +Wed Feb 26 08:13:33 UTC 2020 - Richard Biener <rguenther@suse.com> + +- Add binutils-pr25593.diff to fix DT_NEEDED order with -flto + [bsc#1163744] + +------------------------------------------------------------------- +Tue Feb 18 16:12:52 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Update fix-try_load_plugin.patch to latest version. + +------------------------------------------------------------------- +Tue Feb 18 12:48:26 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Add fix-try_load_plugin.patch in order to fix fallback caused + by backport for PR25355. + +------------------------------------------------------------------- +Sat Feb 1 17:46:57 UTC 2020 - Martin Liška <mliska@suse.cz> + +- Update to binutils 2.34: + * The disassembler (objdump --disassemble) now has an option to + generate ascii art thats show the arcs between that start and end + points of control flow instructions. + + * The binutils tools now have support for debuginfod. Debuginfod is a + HTTP service for distributing ELF/DWARF debugging information as + well as source code. The tools can now connect to debuginfod + servers in order to download debug information about the files that + they are processing. + + * The assembler and linker now support the generation of ELF format + files for the Z80 architecture. +- Rename and get binutils-2.34-branch.diff.gz (boo#1160254). +- Rebase add-ulp-section.diff, binutils-revert-plt32-in-branches.diff, + cross-avr-size.patch and binutils-skip-rpaths.patch. +- Add new subpackages for libctf and libctf-nobfd. +- Disable LTO due to boo#1163333. +- Includes fixes for these CVEs: + bnc#1153768 aka CVE-2019-17451 aka PR25070 + bnc#1153770 aka CVE-2019-17450 aka PR25078 + +------------------------------------------------------------------- +Tue Jan 7 12:42:34 UTC 2020 - Andreas Schwab <schwab@suse.de> + +- Disable LTO during testsuite run + +------------------------------------------------------------------- +Wed Nov 20 16:22:51 UTC 2019 - matz@suse.com + +- Add binutils-fix-invalid-op-errata.diff to fix various + build fails on aarch64 (PR25210, bsc#1157755). + +------------------------------------------------------------------- +Mon Nov 18 17:06:15 UTC 2019 - matz@suse.com + +- Add add-ulp-section.diff for user space live patching. + +------------------------------------------------------------------- +Tue Oct 22 13:45:51 UTC 2019 - Martin Liška <mliska@suse.cz> + +- Update to binutils 2.33.1: + * Adds support for the Arm Scalable Vector Extension version 2 + (SVE2) instructions, the Arm Transactional Memory Extension (TME) + instructions and the Armv8.1-M Mainline and M-profile Vector + Extension (MVE) instructions. + * Adds support for the Arm Cortex-A76AE, Cortex-A77 and Cortex-M35P + processors and the AArch64 Cortex-A34, Cortex-A65, Cortex-A65AE, + Cortex-A76AE, and Cortex-A77 processors. + * Adds a .float16 directive for both Arm and AArch64 to allow + encoding of 16-bit floating point literals. + * For MIPS, Add -m[no-]fix-loongson3-llsc option to fix (or not) + Loongson3 LLSC Errata. Add a --enable-mips-fix-loongson3-llsc=[yes|no] + configure time option to set the default behavior. Set the default + if the configure option is not used to "no". + * The Cortex-A53 Erratum 843419 workaround now supports a choice of + which workaround to use. The option --fix-cortex-a53-843419 now + takes an optional argument --fix-cortex-a53-843419[=full|adr|adrp] + which can be used to force a particular workaround to be used. + See --help for AArch64 for more details. + * Add support for GNU_PROPERTY_AARCH64_FEATURE_1_BTI and + GNU_PROPERTY_AARCH64_FEATURE_1_PAC in ELF GNU program properties + in the AArch64 ELF linker. + * Add -z force-bti for AArch64 to enable GNU_PROPERTY_AARCH64_FEATURE_1_BTI + on output while warning about missing GNU_PROPERTY_AARCH64_FEATURE_1_BTI + on inputs and use PLTs protected with BTI. + * Add -z pac-plt for AArch64 to pick PAC enabled PLTs. + * Add --source-comment[=<txt>] option to objdump which if present, + provides a prefix to source code lines displayed in a disassembly. + * Add --set-section-alignment <section-name>=<power-of-2-align> + option to objcopy to allow the changing of section alignments. + * Add --verilog-data-width option to objcopy for verilog targets to + control width of data elements in verilog hex format. + * The separate debug info file options of readelf (--debug-dump=links + and --debug-dump=follow) and objdump (--dwarf=links and + --dwarf=follow-links) will now display and/or follow multiple + links if more than one are present in a file. (This usually + happens when gcc's -gsplit-dwarf option is used). + In addition objdump's --dwarf=follow-links now also affects its + other display options, so that for example, when combined with + --syms it will cause the symbol tables in any linked debug info + files to also be displayed. In addition when combined with + --disassemble the --dwarf= follow-links option will ensure that + any symbol tables in the linked files are read and used when + disassembling code in the main file. + * Add support for dumping types encoded in the Compact Type Format + to objdump and readelf. +- Includes fixes for these CVEs: + bnc#1126826 aka CVE-2019-9077 aka PR1126826 + bnc#1126829 aka CVE-2019-9075 aka PR1126829 + bnc#1126831 aka CVE-2019-9074 aka PR24235 + bnc#1140126 aka CVE-2019-12972 aka PR23405 + bnc#1143609 aka CVE-2019-14444 aka PR24829 + bnc#1142649 aka CVE-2019-14250 aka PR90924 +- Remove patches that are now included in the release: + binutils-2.32-branch.diff.gz, binutils-fix-ld-segv.diff, + binutils-pr24486.patch, riscv-abi-check.patch, + rx-gas-padding-pr24464.patch. +- Add binutils-2.33-branch.diff.gz patch. +- Rebase binutils-revert-plt32-in-branches.diff and + cross-avr-size.patch patch. + +------------------------------------------------------------------- +Tue Oct 15 14:05:57 UTC 2019 - matz@suse.com + +- Add binutils-fix-ld-segv.diff to fix a segfault in ld + when building some versions of pacemaker. [bsc#1154025, + bsc#1154016] + +------------------------------------------------------------------- +Wed Oct 2 12:20:41 UTC 2019 - matz@suse.com + +- Add avr, epiphany and rx to target_list so that the common + binutils can handle all objects we can create with crosses. + [bsc#1152590] + +------------------------------------------------------------------- +Mon Sep 9 17:19:56 UTC 2019 - matz@suse.com + +- Update to current 2.32 branch @7b468db3 adding ++++ 3494 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:Leap:15.2:Update/.binutils.14782.new.3463/binutils.changes New Changes file: cross-aarch64-binutils.changes: same change New Changes file: cross-arm-binutils.changes: same change New Changes file: cross-avr-binutils.changes: same change New Changes file: cross-epiphany-binutils.changes: same change New Changes file: cross-hppa-binutils.changes: same change New Changes file: cross-hppa64-binutils.changes: same change New Changes file: cross-i386-binutils.changes: same change New Changes file: cross-ia64-binutils.changes: same change New Changes file: cross-m68k-binutils.changes: same change New Changes file: cross-mips-binutils.changes: same change New Changes file: cross-ppc-binutils.changes: same change New Changes file: cross-ppc64-binutils.changes: same change New Changes file: cross-ppc64le-binutils.changes: same change New Changes file: cross-riscv64-binutils.changes: same change New Changes file: cross-rx-binutils.changes: same change New Changes file: cross-s390-binutils.changes: same change New Changes file: cross-s390x-binutils.changes: same change New Changes file: cross-sparc-binutils.changes: same change New Changes file: cross-sparc64-binutils.changes: same change New Changes file: cross-spu-binutils.changes: same change New Changes file: cross-x86_64-binutils.changes: same change New Changes file: cross-xtensa-binutils.changes: same change New: ---- README.First-for.SUSE.packagers _constraints aarch64-common-pagesize.patch add-ulp-section.diff baselibs.conf binutils-2.35-branch.diff.gz binutils-2.35.tar.bz2 binutils-2.35.tar.bz2.sig binutils-bfd_h.patch binutils-build-as-needed.diff binutils-fix-abierrormsg.diff binutils-fix-invalid-op-errata.diff binutils-pr22868.diff binutils-revert-nm-symversion.diff binutils-revert-plt32-in-branches.diff binutils-skip-rpaths.patch binutils.changes binutils.keyring binutils.spec cross-aarch64-binutils.changes cross-aarch64-binutils.spec cross-arm-binutils.changes cross-arm-binutils.spec cross-avr-binutils.changes cross-avr-binutils.spec cross-avr-nesc-as.patch cross-avr-omit_section_dynsym.patch cross-avr-size.patch cross-epiphany-binutils.changes cross-epiphany-binutils.spec cross-hppa-binutils.changes cross-hppa-binutils.spec cross-hppa64-binutils.changes cross-hppa64-binutils.spec cross-i386-binutils.changes cross-i386-binutils.spec cross-ia64-binutils.changes cross-ia64-binutils.spec cross-m68k-binutils.changes cross-m68k-binutils.spec cross-mips-binutils.changes cross-mips-binutils.spec cross-ppc-binutils.changes cross-ppc-binutils.spec cross-ppc64-binutils.changes cross-ppc64-binutils.spec cross-ppc64le-binutils.changes cross-ppc64le-binutils.spec cross-riscv64-binutils.changes cross-riscv64-binutils.spec cross-rx-binutils.changes cross-rx-binutils.spec cross-s390-binutils.changes cross-s390-binutils.spec cross-s390x-binutils.changes cross-s390x-binutils.spec cross-sparc-binutils.changes cross-sparc-binutils.spec cross-sparc64-binutils.changes cross-sparc64-binutils.spec cross-spu-binutils.changes cross-spu-binutils.spec cross-x86_64-binutils.changes cross-x86_64-binutils.spec cross-xtensa-binutils.changes cross-xtensa-binutils.spec enable-targets-gold.diff ld-relro.diff pre_checkin.sh s390-biarch.diff s390-pic-dso.diff testsuite.diff unit-at-a-time.patch x86-64-biarch.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ binutils.spec ++++++ # # spec file for package binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: binutils BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-aarch64-binutils.spec ++++++ # # spec file for package cross-aarch64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-aarch64-binutils ExcludeArch: aarch64 %define cross 1 %define TARGET aarch64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-arm-binutils.spec ++++++ # # spec file for package cross-arm-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-arm-binutils ExcludeArch: %arm %define cross 1 %define TARGET arm BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-avr-binutils.spec ++++++ # # spec file for package cross-avr-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-avr-binutils ExcludeArch: avr %define cross 1 %define TARGET avr BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-epiphany-binutils.spec ++++++ # # spec file for package cross-epiphany-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-epiphany-binutils ExcludeArch: epiphany %define cross 1 %define TARGET epiphany BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-hppa-binutils.spec ++++++ # # spec file for package cross-hppa-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-hppa-binutils ExcludeArch: hppa %define cross 1 %define TARGET hppa BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-hppa64-binutils.spec ++++++ # # spec file for package cross-hppa64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-hppa64-binutils ExcludeArch: hppa64 %define cross 1 %define TARGET hppa64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-i386-binutils.spec ++++++ # # spec file for package cross-i386-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-i386-binutils ExcludeArch: %ix86 %define cross 1 %define TARGET i586 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-ia64-binutils.spec ++++++ # # spec file for package cross-ia64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-ia64-binutils ExcludeArch: ia64 %define cross 1 %define TARGET ia64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-m68k-binutils.spec ++++++ # # spec file for package cross-m68k-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-m68k-binutils ExcludeArch: m68k %define cross 1 %define TARGET m68k BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-mips-binutils.spec ++++++ # # spec file for package cross-mips-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-mips-binutils ExcludeArch: mips %define cross 1 %define TARGET mips BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-ppc-binutils.spec ++++++ # # spec file for package cross-ppc-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-ppc-binutils ExcludeArch: ppc %define cross 1 %define TARGET powerpc BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-ppc64-binutils.spec ++++++ # # spec file for package cross-ppc64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-ppc64-binutils ExcludeArch: ppc64 %define cross 1 %define TARGET powerpc64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-ppc64le-binutils.spec ++++++ # # spec file for package cross-ppc64le-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-ppc64le-binutils ExcludeArch: ppc64le %define cross 1 %define TARGET powerpc64le BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-riscv64-binutils.spec ++++++ # # spec file for package cross-riscv64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-riscv64-binutils ExcludeArch: riscv64 %define cross 1 %define TARGET riscv64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-rx-binutils.spec ++++++ # # spec file for package cross-rx-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-rx-binutils ExcludeArch: rx %define cross 1 %define TARGET rx BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-s390-binutils.spec ++++++ # # spec file for package cross-s390-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-s390-binutils ExcludeArch: s390 %define cross 1 %define TARGET s390 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-s390x-binutils.spec ++++++ # # spec file for package cross-s390x-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-s390x-binutils ExcludeArch: s390x %define cross 1 %define TARGET s390x BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-sparc-binutils.spec ++++++ # # spec file for package cross-sparc-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-sparc-binutils ExcludeArch: sparc %define cross 1 %define TARGET sparc BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-sparc64-binutils.spec ++++++ # # spec file for package cross-sparc64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-sparc64-binutils ExcludeArch: sparc64 %define cross 1 %define TARGET sparc64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-spu-binutils.spec ++++++ # # spec file for package cross-spu-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-spu-binutils ExcludeArch: spu %define cross 1 %define TARGET spu BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-x86_64-binutils.spec ++++++ # # spec file for package cross-x86_64-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-x86_64-binutils ExcludeArch: x86_64 %define cross 1 %define TARGET x86_64 BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ cross-xtensa-binutils.spec ++++++ # # spec file for package cross-xtensa-binutils # # Copyright (c) 2020 SUSE LLC # # 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 https://bugs.opensuse.org/ # Name: cross-xtensa-binutils ExcludeArch: xtensa %define cross 1 %define TARGET xtensa BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ # for the testsuite %if 0%{suse_version} >= 1210 BuildRequires: glibc-devel-static %endif %if 0%{suse_version} > 1220 BuildRequires: makeinfo %endif %if 0%{suse_version} > 1110 BuildRequires: zlib-devel-static %else BuildRequires: zlib-devel %endif Version: 2.35 Release: 0 # # RUN_TESTS %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?) # check the vanilla binutils, with no patches applied # TEST_VANILLA %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?) # # handle test suite failures # %ifarch alpha %arm aarch64 hppa mips sh4 %sparc %define make_check_handling true %else # XXX check again # XXX disabled because gold is seriously broken for now %define make_check_handling true %endif # let make check fail anyway if RUN_TESTS was requested %if %{run_tests} %define make_check_handling false %endif # handle all binary object formats supported by SUSE (and a few more) %ifarch %ix86 %arm aarch64 ia64 ppc ppc64 ppc64le s390 s390x x86_64 %define build_multitarget 1 %else %define build_multitarget 0 %endif %define target_list aarch64 alpha armv5l armv6l armv7l armv8l avr epiphany hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 powerpc64le riscv64 rx s390 s390x sh4 sparc sparc64 x86_64 xtensa # # # URL: http://www.gnu.org/software/binutils/ PreReq: %{install_info_prereq} # bug437293 %ifarch ppc64 Obsoletes: binutils-64bit %endif # Summary: GNU Binutils License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building Source: binutils-%{version}.tar.bz2 Source4: binutils-%{version}.tar.bz2.sig Source5: binutils.keyring Source1: pre_checkin.sh Source2: README.First-for.SUSE.packagers Source3: baselibs.conf Patch1: binutils-2.35-branch.diff.gz Patch3: binutils-skip-rpaths.patch Patch4: s390-biarch.diff Patch5: x86-64-biarch.patch Patch6: unit-at-a-time.patch Patch8: ld-relro.diff Patch9: testsuite.diff Patch10: enable-targets-gold.diff Patch12: s390-pic-dso.diff Patch14: binutils-build-as-needed.diff Patch22: binutils-bfd_h.patch Patch34: aarch64-common-pagesize.patch Patch36: binutils-pr22868.diff Patch37: binutils-revert-plt32-in-branches.diff Patch38: binutils-fix-invalid-op-errata.diff Patch39: binutils-revert-nm-symversion.diff Patch40: binutils-fix-abierrormsg.diff Patch100: add-ulp-section.diff Patch90: cross-avr-nesc-as.patch Patch92: cross-avr-omit_section_dynsym.patch Patch93: cross-avr-size.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: update-alternatives %description C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. %package gold Summary: The gold linker License: GPL-3.0-or-later Group: Development/Tools/Building Requires: binutils = %{version}-%{release} PreReq: update-alternatives %if 0%{suse_version} > 1100 %if 0%{!?cross:1} %define gold_archs %ix86 aarch64 %arm x86_64 ppc ppc64 ppc64le s390x %sparc %endif %endif %description gold gold is an ELF linker. It is intended to have complete support for ELF and to run as fast as possible on modern systems. For normal use it is a drop-in replacement for the older GNU linker. %package devel Summary: GNU binutils (BFD development files) License: GPL-3.0-or-later Group: Development/Libraries/C and C++ Requires: binutils = %{version}-%{release} Requires: zlib-devel Provides: binutils:/usr/include/bfd.h %description devel This package includes header files and static libraries necessary to build programs which use the GNU BFD library, which is part of binutils. %package -n libctf0 Summary: Compact C Type Format library (runtime, BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf0 This package includes the libctf shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %package -n libctf-nobfd0 Summary: Compact C Type Format library (runtime, no BFD dependency) License: GFDL-1.3-only AND GPL-3.0-or-later Group: Development/Tools/Building %description -n libctf-nobfd0 This package includes the libctf-nobfd shared library. The Compact C Type Format (CTF) is a way of representing information about a binary program %ifarch %arm %define HOST %{_target_cpu}-suse-linux-gnueabi %else %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-suse-linux %endif %define DIST %(echo '%distribution' | sed 's/ (.*)//') %prep echo "make check will return with %{make_check_handling} in case of testsuite failures." %setup -q -n binutils-%{version} # Patch is outside test_vanilla because it's supposed to be the # patch bringing the tarball to the newest upstream version %patch1 -p1 %if !%{test_vanilla} %patch3 -p1 %patch4 %patch5 %patch6 %patch8 %patch9 %patch10 %patch12 %patch14 %patch22 %patch34 -p1 %patch36 -p1 %if %{suse_version} < 1550 %patch37 -p1 %endif %patch38 %patch39 -p1 %patch40 -p1 %patch100 -p1 %if "%{TARGET}" == "avr" cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h %patch90 %patch92 %patch93 -p1 %endif # # test_vanilla %endif %build %define _lto_cflags %{nil} sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error" %if 0%{!?cross:1} # Building native binutils echo "Building native binutils." %if %build_multitarget EXTRA_TARGETS="%(printf ,%%s-suse-linux %target_list)" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep" %else EXTRA_TARGETS= %ifarch sparc EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %ifarch ppc EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %ifarch s390 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %ifarch s390x EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %ifarch %ix86 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %ifarch ppc ppc64 ppc64le EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf" %endif %ifarch %arm EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %ifarch aarch64 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %endif # Normally we'd like to add --enable-deterministic-archives # here (which by default makes uid/mtime be zero for archive # members), to increase chances of getting a reproducable build # But this breaks Makefile rules when directly accessing archives: # rebuilding the same archive from unchanged .o files recreates # it, because timestamps in the .a are 0, unequal to the actual timestamp # of the .o files :-/ %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\ --prefix=%{_prefix} --libdir=%{_libdir} \\\ --infodir=%{_infodir} --mandir=%{_mandir} \\\ --with-bugurl=http://bugs.opensuse.org/ \\\ --with-pkgversion="GNU Binutils; %{DIST}" \\\ --with-separate-debug-dir=%{_prefix}/lib/debug \\\ --with-pic --with-system-zlib --build=%{HOST} mkdir build-dir cd build-dir ../configure %common_flags \ ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \ --enable-plugins \ %ifarch %gold_archs --enable-gold \ --enable-threads \ %endif %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ --disable-compressed-debug-sections \ %endif %if %{suse_version} > 1320 --enable-compressed-debug-sections=gas \ %endif %if %{suse_version} < 1550 --disable-separate-code \ %endif --enable-new-dtags \ %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif --enable-shared make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring (???) rm bfd/Makefile make %{?_smp_mflags} %else # building cross-TARGET-binutils echo "Building cross binutils." mkdir build-dir cd build-dir EXTRA_TARGETS= %if "%{TARGET}" == "sparc" EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-suse-linux" %endif %if "%{TARGET}" == "powerpc" EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-suse-linux" %endif %if "%{TARGET}" == "s390" EXTRA_TARGETS="$EXTRA_TARGETS,s390x-suse-linux" %endif %if "%{TARGET}" == "s390x" EXTRA_TARGETS="$EXTRA_TARGETS,s390-suse-linux" %endif %if "%{TARGET}" == "i586" EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-suse-linux" %endif %if "%{TARGET}" == "hppa" EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-suse-linux" %endif %if "%{TARGET}" == "arm" EXTRA_TARGETS="$EXTRA_TARGETS,arm-suse-linux-gnueabi" %endif %if "%{TARGET}" == "aarch64" EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-suse-linux" %endif %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu" %define TARGET_OS %{TARGET} %else %if "%{TARGET}" == "epiphany" || "%{TARGET}" == "riscv32" || "%{TARGET}" == "rx" %define TARGET_OS %{TARGET}-elf %else %if "%{TARGET}" == "arm" %define TARGET_OS %{TARGET}-suse-linux-gnueabi %else %define TARGET_OS %{TARGET}-suse-linux %endif %endif %endif ../configure CFLAGS="${RPM_OPT_FLAGS}" \ --prefix=%{_prefix} \ --with-bugurl=http://bugs.opensuse.org/ \ --with-pkgversion="GNU Binutils; %{DIST}" \ --with-system-zlib \ --disable-nls \ --enable-new-dtags \ %if %{suse_version} <= 1320 --disable-x86-relax-relocations \ %endif --build=%{HOST} --target=%{TARGET_OS} \ %if "%{TARGET}" == "spu" --with-sysroot=/usr/spu \ %else --with-sysroot=%{_prefix}/%{TARGET_OS}/sys-root \ %endif %if "%{TARGET}" != "mips" --enable-default-hash-style=both \ %endif ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} make %{?_smp_mflags} all-bfd TARGET-bfd=headers # force reconfiguring rm bfd/Makefile make %{?_smp_mflags} %if "%{TARGET}" == "avr" # build an extra nesC version because nesC requires $'s in identifiers cp -a gas gas-nesc echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h make -C gas-nesc clean make -C gas-nesc %{?_smp_mflags} %endif %endif %check unset SUSE_ASNEEDED cd build-dir %if 0%{?cross:1} make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" CFLAGS_FOR_TARGET="-O2 -g" CXXFLAGS_FOR_TARGET="-O2 -g" || %{make_check_handling} %else make -k check CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" CXXFLAGS_FOR_TARGET="$RPM_OPT_FLAGS" || %{make_check_handling} %endif %install cd build-dir %if 0%{!?cross:1} # installing native binutils %ifarch %gold_archs make DESTDIR=$RPM_BUILD_ROOT install-gold ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold %endif make DESTDIR=$RPM_BUILD_ROOT install-info install make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then mv "%buildroot/%_bindir"/{ld,ld.bfd}; else rm -f "%buildroot/%_bindir/ld"; fi mkdir -p "%buildroot/%_sysconfdir/alternatives"; # Keep older versions of brp-symlink happy %if %{suse_version} < 1310 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld" %endif ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld"; rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir} ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts # Install header files make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT # We want the PIC libiberty.a install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir} # chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-* chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-* # No shared linking outside binutils rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la # Remove unwanted files to shut up rpm rm -f $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info* rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1 cd .. %find_lang binutils %find_lang bfd binutils.lang %find_lang gas binutils.lang %find_lang ld binutils.lang %find_lang opcodes binutils.lang %find_lang gprof binutils.lang %ifarch %gold_archs %find_lang gold binutils-gold.lang %endif mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name} install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld %else # installing cross-TARGET-binutils and TARGET-binutils make DESTDIR=$RPM_BUILD_ROOT install # Replace hard links by symlinks, so that rpmlint doesn't complain T=$(basename %buildroot/usr/%{TARGET_OS}) for f in %buildroot/usr/$T/bin/* ; do ln -sf /usr/bin/$T-$(basename $f) $f done %if "%{TARGET}" == "arm" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in arm-none-eabi; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "riscv64" # Instead of building duplicate binutils, add symlinks for f in %buildroot/usr/$T/bin/* ; do for p in riscv64-elf; do ln -sf %{_bindir}/$T-$(basename $f) %buildroot%{_bindir}/$p-$(basename $f) done done %endif %if "%{TARGET}" == "avr" install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET_OS}-nesc-as ln -sf ../../bin/%{TARGET_OS}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET_OS}/bin/nesc-as %endif rm -rf $RPM_BUILD_ROOT%{_mandir} rm -rf $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/lib* rm -rf $RPM_BUILD_ROOT%{_prefix}/include rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
../binutils.lang %endif
%if 0%{!?cross:1} %post /sbin/ldconfig "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.bfd" 2 %install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz %post gold "%_sbindir/update-alternatives" --install \ "%_bindir/ld" ld "%_bindir/ld.gold" 1 %post -n libctf0 -p /sbin/ldconfig %post -n libctf-nobfd0 -p /sbin/ldconfig %preun %install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd"; fi; %preun gold if [ "$1" = 0 ]; then "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold"; fi; %postun -n libctf0 -p /sbin/ldconfig %postun -n libctf-nobfd0 -p /sbin/ldconfig %postun /sbin/ldconfig %endif %files -f binutils.lang %defattr(-,root,root) %if 0%{!?cross:1} %{_docdir}/%{name} %{_prefix}/%{HOST}/bin/* %{_prefix}/%{HOST}/lib/ldscripts %{_libdir}/ldscripts %{_bindir}/* %ghost %_sysconfdir/alternatives/ld %ifarch %gold_archs %exclude %{_bindir}/gold %exclude %{_bindir}/ld.gold %endif %doc %{_infodir}/*.gz %{_libdir}/lib*-%{version}*.so %doc %{_mandir}/man1/*.1.gz %else %{_prefix}/%{TARGET_OS} %{_prefix}/bin/* %endif %ifarch %gold_archs %files gold -f binutils-gold.lang %defattr(-,root,root) %doc gold/NEWS gold/README %{_bindir}/gold %{_bindir}/ld.gold %endif %if 0%{!?cross:1} %files devel %defattr(-,root,root) %{_prefix}/include/*.h %{_libdir}/lib*.*a %{_libdir}/libctf.so %{_libdir}/libctf-nobfd.so %files -n libctf0 %{_libdir}/libctf.so.* %files -n libctf-nobfd0 %{_libdir}/libctf-nobfd.so.* %endif %changelog ++++++ README.First-for.SUSE.packagers ++++++ IMPORTANT: Please change binutils.spec and then run ./pre_checkin.sh! Do not change cross-*.spec directly! The spec file triggers by it's %name if it compiles the native or the cross version and pre_checkin.sh (called automatically by checkin too) copies over the binutils.spec and changes the Name field, so you shouldn't need to worry too much about the cross packages Updating to some branch head:
cvs -z 9 -d :pserver:anoncvs@stravinsky:/cvs/src export -r binutils-2_23-branch binutils
Thanks, Stephan Kulow ++++++ _constraints ++++++ <constraints> <hardware> <disk> <size unit="G">6</size> </disk> </hardware> <overwrite> <conditions> <arch>ppc</arch> <arch>ppc64</arch> <arch>ppc64le</arch> </conditions> <hardware> <physicalmemory> <size unit="G">4</size> </physicalmemory> </hardware> </overwrite> </constraints> ++++++ aarch64-common-pagesize.patch ++++++ Change default common-page-size to 64K on aarch64. This enables the use of RELRO since we are using 64K pages. Index: binutils-2.25.0/bfd/elfnn-aarch64.c =================================================================== --- binutils-2.25.0.orig/bfd/elfnn-aarch64.c +++ binutils-2.25.0/bfd/elfnn-aarch64.c @@ -7945,7 +7945,7 @@ const struct elf_size_info elfNN_aarch64 #define ELF_MACHINE_CODE EM_AARCH64 #define ELF_MAXPAGESIZE 0x10000 #define ELF_MINPAGESIZE 0x1000 -#define ELF_COMMONPAGESIZE 0x1000 +#define ELF_COMMONPAGESIZE 0x10000 #define bfd_elfNN_close_and_cleanup \ elfNN_aarch64_close_and_cleanup Index: binutils-2.25.0/gold/aarch64.cc =================================================================== --- binutils-2.25.0.orig/gold/aarch64.cc +++ binutils-2.25.0/gold/aarch64.cc @@ -791,7 +791,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) - 0x1000, // common_pagesize (overridable by -z common-page-size) + 0x10000, // common_pagesize (overridable by -z common-page-size) false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx @@ -818,7 +818,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) - 0x1000, // common_pagesize (overridable by -z common-page-size) + 0x10000, // common_pagesize (overridable by -z common-page-size) false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx @@ -845,7 +845,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) - 0x1000, // common_pagesize (overridable by -z common-page-size) + 0x10000, // common_pagesize (overridable by -z common-page-size) false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx @@ -872,7 +872,7 @@ const Target::Target_info Target_aarch64 "/lib/ld.so.1", // program interpreter 0x400000, // default_text_segment_address 0x10000, // abi_pagesize (overridable by -z max-page-size) - 0x1000, // common_pagesize (overridable by -z common-page-size) + 0x10000, // common_pagesize (overridable by -z common-page-size) false, // isolate_execinstr 0, // rosegment_gap elfcpp::SHN_UNDEF, // small_common_shndx ++++++ add-ulp-section.diff ++++++ This is for userspace live patching, adding some space into shared libs or executable (in the .ulp section) when one of the input files contains a section named .ulp.track. Index: binutils-2.35/bfd/elf-bfd.h =================================================================== --- binutils-2.35.orig/bfd/elf-bfd.h 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/bfd/elf-bfd.h 2020-08-10 16:30:46.555219071 +0200 @@ -1476,6 +1476,10 @@ struct elf_backend_data (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection, Elf_Internal_Shdr *osection); + bfd_boolean (*elf_backend_is_ulp_enabled) (bfd *abfd); + + bfd_boolean (*elf_backend_setup_ulp) (struct bfd_link_info *); + /* Used to handle bad SHF_LINK_ORDER input. */ void (*link_order_error_handler) (const char *, ...); Index: binutils-2.35/bfd/elflink.c =================================================================== --- binutils-2.35.orig/bfd/elflink.c 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/bfd/elflink.c 2020-08-10 16:30:46.565219071 +0200 @@ -7197,6 +7197,13 @@ bfd_elf_size_dynamic_sections (bfd *outp s = bfd_get_linker_section (dynobj, ".gnu.version"); s->flags |= SEC_EXCLUDE; } + + if (bed->elf_backend_is_ulp_enabled != NULL + && bed->elf_backend_setup_ulp != NULL + && (*bed->elf_backend_is_ulp_enabled) (info->input_bfds)) + { + (*bed->elf_backend_setup_ulp)(info); + } } return TRUE; } Index: binutils-2.35/bfd/elfxx-target.h =================================================================== --- binutils-2.35.orig/bfd/elfxx-target.h 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/bfd/elfxx-target.h 2020-08-10 16:30:46.565219071 +0200 @@ -768,6 +768,14 @@ #define elf_backend_copy_special_section_fields _bfd_elf_copy_special_section_fields #endif +#ifndef elf_backend_is_ulp_enabled +#define elf_backend_is_ulp_enabled NULL +#endif + +#ifndef elf_backend_setup_ulp +#define elf_backend_setup_ulp NULL +#endif + #ifndef elf_backend_compact_eh_encoding #define elf_backend_compact_eh_encoding NULL #endif @@ -900,6 +908,8 @@ static struct elf_backend_data elfNN_bed elf_backend_maybe_function_sym, elf_backend_get_reloc_section, elf_backend_copy_special_section_fields, + elf_backend_is_ulp_enabled, + elf_backend_setup_ulp, elf_backend_link_order_error_handler, elf_backend_relplt_name, ELF_MACHINE_ALT1, Index: binutils-2.35/bfd/elfxx-x86.c =================================================================== --- binutils-2.35.orig/bfd/elfxx-x86.c 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/bfd/elfxx-x86.c 2020-08-10 16:30:46.565219071 +0200 @@ -31,6 +31,8 @@ #define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1" #define ELFX32_DYNAMIC_INTERPRETER "/lib/ldx32.so.1" +#define ULP_ENTRY_LEN 16 + bfd_boolean _bfd_x86_elf_mkobject (bfd *abfd) { @@ -984,6 +986,64 @@ _bfd_elf_x86_valid_reloc_p (asection *in return valid_p; } +/* Check if input bfds are ulp-enabled by containing .ulp.track section */ + +bfd_boolean +_bfd_x86_elf_is_ulp_enabled (struct bfd *input_bfd) +{ + while (input_bfd != NULL) + for (; input_bfd != NULL; input_bfd = input_bfd->link.next) + { + if (input_bfd->section_count == 0) continue; + if (bfd_get_section_by_name (input_bfd, ".ulp.track")) return TRUE; + } + return FALSE; +} + +/* To be used by elf_link_hash_traverse when computing the ulp length */ + +static bfd_boolean +bfd_x86_elf_link_compute_ulp (struct elf_link_hash_entry *h, void *data) +{ + unsigned long *ulp_length = (unsigned long *) data; + + if (h->dynindx != -1 && h->type == STT_FUNC && !h->def_dynamic) + { + ++(*ulp_length); + } + return TRUE; +} + +/* Fill the user-space live patching section */ + +bfd_boolean +_bfd_x86_elf_setup_ulp (struct bfd_link_info *info) +{ + struct elf_x86_link_hash_table *htab; + asection *ulp; + unsigned int ulp_length = 0; + + htab = elf_x86_hash_table (info, X86_64_ELF_DATA); + + elf_link_hash_traverse (elf_hash_table (info), + bfd_x86_elf_link_compute_ulp, + &ulp_length); + + ulp = htab->ulp; + + ulp->size = ulp_length * ULP_ENTRY_LEN; + + ulp->contents = (bfd_byte *) bfd_malloc (ulp->size); + if (ulp->contents == NULL) + return FALSE; + + if (!ulp->contents) + return FALSE; + + memset(ulp->contents, 0x00, ulp->size); + return TRUE; +} + /* Set the sizes of the dynamic sections. */ bfd_boolean @@ -2855,7 +2915,26 @@ _bfd_x86_elf_link_setup_gnu_properties htab->plt_second = sec; } - } + + /* create sections to support user-space live patching */ + if (_bfd_x86_elf_is_ulp_enabled(info->input_bfds)) + { + flagword flags = (bed->dynamic_sec_flags + | SEC_ALLOC + | SEC_CODE + | SEC_LOAD + | SEC_READONLY); + + sec = bfd_make_section_anyway_with_flags (dynobj, ".ulp", flags); + if (sec == NULL) + info->callbacks->einfo (_("%F%P: failed to create ULP section\n")); + + if (!bfd_set_section_alignment (sec, plt_alignment)) + goto error_alignment; + + htab->ulp = sec; + } + } if (!info->no_ld_generated_unwind_info) { Index: binutils-2.35/bfd/elfxx-x86.h =================================================================== --- binutils-2.35.orig/bfd/elfxx-x86.h 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/bfd/elfxx-x86.h 2020-08-10 16:30:46.565219071 +0200 @@ -449,6 +449,7 @@ struct elf_x86_link_hash_table asection *plt_second_eh_frame; asection *plt_got; asection *plt_got_eh_frame; + asection *ulp; /* Parameters describing PLT generation, lazy or non-lazy. */ struct elf_x86_plt_layout plt; @@ -687,6 +688,12 @@ extern void _bfd_x86_elf_link_fixup_ifun (struct bfd_link_info *, struct elf_x86_link_hash_table *, struct elf_link_hash_entry *, Elf_Internal_Sym *sym); +extern bfd_boolean _bfd_x86_elf_is_ulp_enabled + (struct bfd *); + +extern bfd_boolean _bfd_x86_elf_setup_ulp + (struct bfd_link_info *); + #define bfd_elf64_mkobject \ _bfd_x86_elf_mkobject #define bfd_elf32_mkobject \ @@ -724,3 +731,7 @@ extern void _bfd_x86_elf_link_fixup_ifun _bfd_x86_elf_merge_gnu_properties #define elf_backend_fixup_gnu_properties \ _bfd_x86_elf_link_fixup_gnu_properties +#define elf_backend_is_ulp_enabled \ + _bfd_x86_elf_is_ulp_enabled +#define elf_backend_setup_ulp \ + _bfd_x86_elf_setup_ulp ++++++ baselibs.conf ++++++ binutils-devel requires -binutils-<targettype> obsoletes "binutils-<targettype> < <version>" ++++++ binutils-2.35-branch.diff.gz ++++++ ++++ 54061 lines (skipped) ++++++ binutils-bfd_h.patch ++++++ Remove the #error to avoid issues with legacy not dealing with this --- bfd/bfd-in.h.orig 2012-11-30 13:44:35.715871571 +0100 +++ bfd/bfd-in.h 2012-11-30 13:44:43.428871298 +0100 @@ -25,11 +25,6 @@ #ifndef __BFD_H_SEEN__ #define __BFD_H_SEEN__ -/* PR 14072: Ensure that config.h is included first. */ -#if !defined PACKAGE && !defined PACKAGE_VERSION -#error config.h must be included before this header -#endif - #ifdef __cplusplus extern "C" { #endif ++++++ binutils-build-as-needed.diff ++++++ Index: ld/ldmain.c =================================================================== --- ld/ldmain.c.orig 2017-07-26 10:07:31.862559913 +0200 +++ ld/ldmain.c 2017-07-26 10:07:31.886560303 +0200 @@ -307,6 +307,8 @@ main (int argc, char **argv) yydebug = 1; } #endif + if (getenv ("SUSE_ASNEEDED") && atoi(getenv ("SUSE_ASNEEDED")) > 0) + input_flags.add_DT_NEEDED_for_regular = TRUE; config.build_constructors = TRUE; config.rpath_separator = ':'; ++++++ binutils-fix-abierrormsg.diff ++++++ This fixes an error message given too eagerly on ppc64le, when no input files are used and as-needed is in effect. E.g.: % ld-new --as-needed -o /dev/null -lc gives an error message about input and output ABI versions being incompatible. This is because the ABI setting of "unknown" (0) to "from-input" is done in ppc64_elf_before_check_relocs, which isn't called for as-needed libraries (via check_directives callback). merge_private_bfd_data is called for as-needed and not-as-needed inputs (via notice_as_needed), so copy that code there. This construct is used in some packages to check for availability of libraries (e.g. in nvme-cli to check for -luuid). Redircting error output makes this siletently fail. Index: binutils-2.35/bfd/elf64-ppc.c =================================================================== --- binutils-2.35.orig/bfd/elf64-ppc.c 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/bfd/elf64-ppc.c 2020-08-10 17:25:00.205219071 +0200 @@ -5301,12 +5301,17 @@ ppc64_elf_merge_private_bfd_data (bfd *i } else if (iflags != oflags && iflags != 0) { - _bfd_error_handler - /* xgettext:c-format */ - (_("%pB: ABI version %ld is not compatible with ABI version %ld output"), - ibfd, iflags, oflags); - bfd_set_error (bfd_error_bad_value); - return FALSE; + if (abiversion (info->output_bfd) == 0) + set_abiversion (info->output_bfd, abiversion (ibfd)); + else + { + _bfd_error_handler + /* xgettext:c-format */ + (_("%pB: ABI version %ld is not compatible with ABI version %ld output"), + ibfd, iflags, oflags); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } } if (!_bfd_elf_ppc_merge_fp_attributes (ibfd, info)) ++++++ binutils-fix-invalid-op-errata.diff ++++++ Also reported as PR25210. There's a problem when using the two linker options '--fix-cortex-a53-835769 --fix-cortex-a53-843419' together. This is the default in our distro, but not upstream so it went unnoticed. Leads to an error while linking any code that sports one of the sequences that triggers the errata fixup (gcc being one of those), namely: ld: can not size stub section: invalid operation ld: warning: cannot find entry symbol _start; defaulting to 0000000000400078 ld: linker stubs: file class ELFCLASSNONE incompatible with ELFCLASS64 ld: final link failed: file in wrong format --- bfd/elfnn-aarch64.c.mm 2019-09-09 13:19:43.000000000 +0000 +++ bfd/elfnn-aarch64.c 2019-11-20 11:44:00.000000000 +0000 @@ -4313,7 +4313,8 @@ elfNN_aarch64_size_stubs (bfd *output_bfd, || (input_bfd->flags & BFD_LINKER_CREATED) != 0) continue; - if (!_bfd_aarch64_erratum_835769_scan (input_bfd, info, + if (input_bfd != stub_bfd + && !_bfd_aarch64_erratum_835769_scan (input_bfd, info, &num_erratum_835769_fixes)) return FALSE; } ++++++ binutils-pr22868.diff ++++++ Fixes two testsuite fails in the gold plugin tests of LLVM. Aka binutils/PR22868 Index: binutils-2.30/gold/resolve.cc =================================================================== --- binutils-2.30.orig/gold/resolve.cc 2018-01-13 14:31:16.000000000 +0100 +++ binutils-2.30/gold/resolve.cc 2018-03-06 16:58:42.000000000 +0100 @@ -265,10 +265,13 @@ Symbol_table::resolve(Sized_symbol<size> return; // Likewise for an absolute symbol defined twice with the same value. + // plugin-symbols are always absolute with same value here, so ignore those if (!is_ordinary && st_shndx == elfcpp::SHN_ABS && !to_is_ordinary && to_shndx == elfcpp::SHN_ABS + && object->pluginobj() == NULL + && to->object()->pluginobj() == NULL && to->value() == sym.get_st_value()) return; ++++++ binutils-revert-nm-symversion.diff ++++++ Some packages of ours rely on the output of nm to not contain symversions. E.g. perf uses 'nm -D' to construct a linker input file with symbol names. ld errors on the '@' characters. Until those packages are fixed we use this patch. We have to carry it for old code streams forever. Index: binutils-2.35/binutils/nm.c =================================================================== --- binutils-2.35.orig/binutils/nm.c 2020-07-24 11:12:19.000000000 +0200 +++ binutils-2.35/binutils/nm.c 2020-08-07 16:42:58.000000000 +0200 @@ -411,7 +411,7 @@ print_symname (const char *form, struct } printf (form, name); - if (info != NULL && info->elfinfo) + if (info != NULL && info->elfinfo && 0) { const char *version_string; bfd_boolean hidden; Index: binutils-2.35/ld/testsuite/ld-elf/pr25708.d =================================================================== --- binutils-2.35.orig/ld/testsuite/ld-elf/pr25708.d 2020-07-24 11:12:20.000000000 +0200 +++ binutils-2.35/ld/testsuite/ld-elf/pr25708.d 2020-08-07 16:44:50.000000000 +0200 @@ -2,8 +2,9 @@ #ld: -shared -version-script pr13195.t #nm: -D #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi -#xfail: hppa64-*-* ![check_shared_lib_support] +#xfail: *-*-* ![check_shared_lib_support] # h8300 doesn't support -shared, and hppa64 creates .foo +# our binutils revert the printing of symversions with nm -D #.. 0+ A VERS_2.0 ++++++ binutils-revert-plt32-in-branches.diff ++++++ This reverts the below commit to not generate PLT32 relocs on branches by default. Used for old distros to not have to update several packages/tools that can't handle them. I.e. a compatibility patch. The patch isn't exactly the reverse of commit bd7ab16b because commit 83924b38 later moved the checking code around somewhat. The changes in nop-[345].d and pr22842b.S are followups to not break the testsuite because of this revert. commit bd7ab16b4537788ad53521c45469a1bdae84ad4a Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Feb 13 07:34:22 2018 -0800 x86-64: Generate branch with PLT32 relocation Since there is no need to prepare for PLT branch on x86-64, generate R_X86_64_PLT32, instead of R_X86_64_PC32, if possible, which can be used as a marker for 32-bit PC-relative branches. To compile Linux kernel, this patch: From: "H.J. Lu" <hjl.tools@gmail.com> Subject: [PATCH] x86: Treat R_X86_64_PLT32 as R_X86_64_PC32 On i386, there are 2 types of PLTs, PIC and non-PIC. PIE and shared objects must use PIC PLT. To use PIC PLT, you need to load _GLOBAL_OFFSET_TABLE_ into EBX first. There is no need for that on x86-64 since x86-64 uses PC-relative PLT. On x86-64, for 32-bit PC-relative branches, we can generate PLT32 relocation, instead of PC32 relocation, which can also be used as a marker for 32-bit PC-relative branches. Linker can always reduce PLT32 relocation to PC32 if function is defined locally. Local functions should use PC32 relocation. As far as Linux kernel is concerned, R_X86_64_PLT32 can be treated the same as R_X86_64_PC32 since Linux kernel doesn't use PLT. is needed. It is available on hjl/plt32/master branch at https://github.com/hjl-tools/linux bfd/ PR gas/22791 * elf64-x86-64.c (is_32bit_relative_branch): Removed. (elf_x86_64_relocate_section): Check PIC relocations in PIE. Remove is_32bit_relative_branch usage. Disallow PC32 reloc against protected function in shared object. gas/ PR gas/22791 * config/tc-i386.c (need_plt32_p): New function. (output_jump): Generate BFD_RELOC_X86_64_PLT32 if possible. (md_estimate_size_before_relax): Likewise. * testsuite/gas/i386/reloc64.d: Updated. * testsuite/gas/i386/x86-64-jump.d: Likewise. * testsuite/gas/i386/x86-64-mpx-branch-1.d: Likewise. * testsuite/gas/i386/x86-64-mpx-branch-2.d: Likewise. * testsuite/gas/i386/x86-64-relax-2.d: Likewise. * testsuite/gas/i386/x86-64-relax-3.d: Likewise. * testsuite/gas/i386/ilp32/reloc64.d: Likewise. * testsuite/gas/i386/ilp32/x86-64-branch.d: Likewise. ld/ PR gas/22791 * testsuite/ld-x86-64/mpx1c.rd: Updated. * testsuite/ld-x86-64/pr22791-1.err: New file. * testsuite/ld-x86-64/pr22791-1a.c: Likewise. * testsuite/ld-x86-64/pr22791-1b.s: Likewise. * testsuite/ld-x86-64/pr22791-2.rd: Likewise. * testsuite/ld-x86-64/pr22791-2a.s: Likewise. * testsuite/ld-x86-64/pr22791-2b.c: Likewise. * testsuite/ld-x86-64/pr22791-2c.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run PR ld/22791 tests. diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 311fb28a..5f1f0ce5 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -1834,6 +1834,24 @@ elf_x86_64_convert_load_reloc (bfd *abfd, return TRUE; } +/* Is the instruction before OFFSET in CONTENTS a 32bit relative + branch? */ + +static bfd_boolean +is_32bit_relative_branch (bfd_byte *contents, bfd_vma offset) +{ + /* Opcode Instruction + 0xe8 call + 0xe9 jump + 0x0f 0x8x conditional jump */ + return ((offset > 0 + && (contents [offset - 1] == 0xe8 + || contents [offset - 1] == 0xe9)) + || (offset > 1 + && contents [offset - 2] == 0x0f + && (contents [offset - 1] & 0xf0) == 0x80)); +} + /* Look through the relocs for a section during the first phase, and calculate needed space in the global offset table, procedure linkage table, and dynamic reloc sections. */ @@ -3143,28 +3161,30 @@ elf_x86_64_relocate_section (bfd *output_bfd, && (eh == NULL || !UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh))) - || (bfd_link_pie (info) - && !SYMBOL_DEFINED_NON_SHARED_P (h) - && h->def_dynamic) || (no_copyreloc_p && h->def_dynamic && !(h->root.u.def.section->flags & SEC_CODE)))) || bfd_link_dll (info))) { bfd_boolean fail = FALSE; + bfd_boolean branch + = ((r_type == R_X86_64_PC32 + || r_type == R_X86_64_PC32_BND) + && is_32bit_relative_branch (contents, rel->r_offset)); + if (SYMBOL_REFERENCES_LOCAL_P (info, h)) { /* Symbol is referenced locally. Make sure it is - defined locally. */ - fail = !SYMBOL_DEFINED_NON_SHARED_P (h); + defined locally or for a branch. */ + fail = !SYMBOL_DEFINED_NON_SHARED_P (h) && !branch; } else if (bfd_link_pie (info)) { /* We can only use PC-relative relocations in PIE - from non-code sections. */ + from non-code sections or branches. */ if (h->type == STT_FUNC && (sec->flags & SEC_CODE) != 0) - fail = TRUE; + fail = !branch; } else if (no_copyreloc_p || bfd_link_dll (info)) { @@ -3173,9 +3193,10 @@ elf_x86_64_relocate_section (bfd *output_bfd, relocations against default and protected symbols since address of protected function and location of protected data may not be in - the shared object. */ + the shared object. We do allow branch to symbol + with non-default visibility. */ fail = (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT - || ELF_ST_VISIBILITY (h->other) == STV_PROTECTED); + || !branch); } if (fail) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index ed514cf9..2fad4505 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -8472,52 +8472,12 @@ output_branch (void) frag_var (rs_machine_dependent, 5, i.reloc[0], subtype, sym, off, p); } -#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) -/* Return TRUE iff PLT32 relocation should be used for branching to - symbol S. */ - -static bfd_boolean -need_plt32_p (symbolS *s) -{ - /* PLT32 relocation is ELF only. */ - if (!IS_ELF) - return FALSE; - -#ifdef TE_SOLARIS - /* Don't emit PLT32 relocation on Solaris: neither native linker nor - krtld support it. */ - return FALSE; -#endif - - /* Since there is no need to prepare for PLT branch on x86-64, we - can generate R_X86_64_PLT32, instead of R_X86_64_PC32, which can - be used as a marker for 32-bit PC-relative branches. */ - if (!object_64bit) - return FALSE; - - /* Weak or undefined symbol need PLT32 relocation. */ - if (S_IS_WEAK (s) || !S_IS_DEFINED (s)) - return TRUE; - - /* Non-global symbol doesn't need PLT32 relocation. */ - if (! S_IS_EXTERNAL (s)) - return FALSE; - - /* Other global symbols need PLT32 relocation. NB: Symbol with - non-default visibilities are treated as normal global symbol - so that PLT32 relocation can be used as a marker for 32-bit - PC-relative branches. It is useful for linker relaxation. */ - return TRUE; -} -#endif - static void output_jump (void) { char *p; int size; fixS *fixP; - bfd_reloc_code_real_type jump_reloc = i.reloc[0]; if (i.tm.opcode_modifier.jump == JUMP_BYTE) { @@ -8585,17 +8545,8 @@ output_jump (void) abort (); } -#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) - if (size == 4 - && jump_reloc == NO_RELOC - && need_plt32_p (i.op[0].disps->X_add_symbol)) - jump_reloc = BFD_RELOC_X86_64_PLT32; -#endif - - jump_reloc = reloc (size, 1, 1, jump_reloc); - fixP = fix_new_exp (frag_now, p - frag_now->fr_literal, size, - i.op[0].disps, 1, jump_reloc); + i.op[0].disps, 1, reloc (size, 1, 1, i.reloc[0])); /* All jumps handled here are signed, but don't use a signed limit check for 32 and 16 bit jumps as we want to allow wrap around at @@ -11889,10 +11840,6 @@ md_estimate_size_before_relax (fragS *fragP, segT segment) reloc_type = (enum bfd_reloc_code_real) fragP->fr_var; else if (size == 2) reloc_type = BFD_RELOC_16_PCREL; -#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) - else if (need_plt32_p (fragP->fr_symbol)) - reloc_type = BFD_RELOC_X86_64_PLT32; -#endif else reloc_type = BFD_RELOC_32_PCREL; diff --git a/gas/testsuite/gas/i386/ilp32/reloc64.d b/gas/testsuite/gas/i386/ilp32/reloc64.d index 78ca3fd9..a9616797 100644 --- a/gas/testsuite/gas/i386/ilp32/reloc64.d +++ b/gas/testsuite/gas/i386/ilp32/reloc64.d @@ -17,7 +17,7 @@ Disassembly of section \.text: .*[ ]+R_X86_64_PC8[ ]+xtrn\+0x0*1 .*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4 .*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4 -.*[ ]+R_X86_64_PLT32[ ]+xtrn-0x0*4 +.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4 .*[ ]+R_X86_64_PC8[ ]+xtrn-0x0*1 .*[ ]+R_X86_64_GOT32[ ]+xtrn .*[ ]+R_X86_64_GOT32[ ]+xtrn diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d index 5bfa2a46..46b0f809 100644 --- a/gas/testsuite/gas/i386/ilp32/x86-64-branch.d +++ b/gas/testsuite/gas/i386/ilp32/x86-64-branch.d @@ -20,9 +20,9 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 66 ff 20 data16 jmpq \*\(%rax\) [ ]*[a-f0-9]+: e8 00 00 00 00 callq 0x1f 1b: R_X86_64_PC32 \*ABS\*\+0x10003c [ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 0x24 20: R_X86_64_PC32 \*ABS\*\+0x10003c -[ ]*[a-f0-9]+: 66 e8 00 00 00 00 data16 callq 0x2a 26: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: 66 e9 00 00 00 00 data16 jmpq 0x30 2c: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: 66 0f 82 00 00 00 00 data16 jb 0x37 33: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: 66 e8 00 00 00 00 data16 callq 0x2a 26: R_X86_64_PC32 foo-0x4 +[ ]*[a-f0-9]+: 66 e9 00 00 00 00 data16 jmpq 0x30 2c: R_X86_64_PC32 foo-0x4 +[ ]*[a-f0-9]+: 66 0f 82 00 00 00 00 data16 jb 0x37 33: R_X86_64_PC32 foo-0x4 [ ]*[a-f0-9]+: 66 c3 data16 retq * [ ]*[a-f0-9]+: 66 c2 08 00 data16 retq \$0x8 [ ]*[a-f0-9]+: ff d0 callq \*%rax diff --git a/gas/testsuite/gas/i386/reloc64.d b/gas/testsuite/gas/i386/reloc64.d index 540a9b77..ea16c68d 100644 --- a/gas/testsuite/gas/i386/reloc64.d +++ b/gas/testsuite/gas/i386/reloc64.d @@ -20,7 +20,7 @@ Disassembly of section \.text: .*[ ]+R_X86_64_PC8[ ]+xtrn\+0x0*1 .*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4 .*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4 -.*[ ]+R_X86_64_PLT32[ ]+xtrn-0x0*4 +.*[ ]+R_X86_64_PC32[ ]+xtrn-0x0*4 .*[ ]+R_X86_64_PC8[ ]+xtrn-0x0*1 .*[ ]+R_X86_64_GOT64[ ]+xtrn .*[ ]+R_X86_64_GOT32[ ]+xtrn diff --git a/gas/testsuite/gas/i386/x86-64-jump.d b/gas/testsuite/gas/i386/x86-64-jump.d index 1a1521d2..b898d7d5 100644 --- a/gas/testsuite/gas/i386/x86-64-jump.d +++ b/gas/testsuite/gas/i386/x86-64-jump.d @@ -9,7 +9,7 @@ Disassembly of section .text: 0+ <.text>: [ ]*[a-f0-9]+: eb fe jmp (0x0|0 <.text>) -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 0x7 3: R_X86_64_PLT32 xxx-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 0x7 3: R_X86_64_PC32 xxx-0x4 [ ]*[a-f0-9]+: ff 24 25 00 00 00 00 jmpq \*0x0 a: R_X86_64_32S xxx [ ]*[a-f0-9]+: ff e7 jmpq \*%rdi [ ]*[a-f0-9]+: ff 27 jmpq \*\(%rdi\) @@ -18,7 +18,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: ff 2c 25 00 00 00 00 ljmp \*0x0 24: R_X86_64_32S xxx [ ]*[a-f0-9]+: 66 ff 2c 25 00 00 00 00 ljmpw \*0x0 2c: R_X86_64_32S xxx [ ]*[a-f0-9]+: e8 cb ff ff ff callq 0x0 -[ ]*[a-f0-9]+: e8 00 00 00 00 callq 0x3a 36: R_X86_64_PLT32 xxx-0x4 +[ ]*[a-f0-9]+: e8 00 00 00 00 callq 0x3a 36: R_X86_64_PC32 xxx-0x4 [ ]*[a-f0-9]+: ff 14 25 00 00 00 00 callq \*0x0 3d: R_X86_64_32S xxx [ ]*[a-f0-9]+: ff d7 callq \*%rdi [ ]*[a-f0-9]+: ff 17 callq \*\(%rdi\) diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d index 03e96752..9d2ec05b 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d +++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d @@ -23,9 +23,9 @@ Disassembly of section .text: [ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 34 <foo2> 0+34 <foo2>: -[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 3a <foo2\+0x6> 36: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 <foo2\+0xd> 3d: R_X86_64_PLT32 foo-0x4 -[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 47 <foo2\+0x13> 43: R_X86_64_PLT32 foo-0x4 +[ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 3a <foo2\+0x6> 36: R_X86_64_PC32 foo-0x4 +[ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 41 <foo2\+0xd> 3d: R_X86_64_PC32 foo-0x4 +[ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 47 <foo2\+0x13> 43: R_X86_64_PC32 foo-0x4 [ ]*[a-f0-9]+: f2 e9 00 00 00 00 bnd jmpq 4d <foo2\+0x19> 49: R_X86_64_PLT32 foo-0x4 [ ]*[a-f0-9]+: f2 0f 82 00 00 00 00 bnd jb 54 <foo2\+0x20> 50: R_X86_64_PLT32 foo-0x4 [ ]*[a-f0-9]+: f2 e8 00 00 00 00 bnd callq 5a <foo2\+0x26> 56: R_X86_64_PLT32 foo-0x4 diff --git a/gas/testsuite/gas/i386/x86-64-nop-3.d b/gas/testsuite/gas/i386/x86-64-nop-3.d index 8514c4d0..617033a8 100644 --- a/gas/testsuite/gas/i386/x86-64-nop-3.d +++ b/gas/testsuite/gas/i386/x86-64-nop-3.d @@ -18,5 +18,5 @@ Disassembly of section .text: Disassembly of section .altinstr_replacement: 0+ <.altinstr_replacement>: - +[a-f0-9]+: e9 00 00 00 00 jmpq 5 <_start\+0x5> 1: R_X86_64_PLT32 foo-0x4 + +[a-f0-9]+: e9 00 00 00 00 jmpq 5 <_start\+0x5> 1: R_X86_64_PC32 foo-0x4 #pass diff --git a/gas/testsuite/gas/i386/x86-64-nop-4.d b/gas/testsuite/gas/i386/x86-64-nop-4.d index 7b696624..8610fc43 100644 --- a/gas/testsuite/gas/i386/x86-64-nop-4.d +++ b/gas/testsuite/gas/i386/x86-64-nop-4.d @@ -21,5 +21,5 @@ Disassembly of section .altinstr_replacement: +[a-f0-9]+: 89 c0 mov %eax,%eax +[a-f0-9]+: 89 c0 mov %eax,%eax +[a-f0-9]+: 89 c0 mov %eax,%eax - +[a-f0-9]+: e9 00 00 00 00 jmpq b <_start\+0xb> 7: R_X86_64_PLT32 foo-0x4 + +[a-f0-9]+: e9 00 00 00 00 jmpq b <_start\+0xb> 7: R_X86_64_PC32 foo-0x4 #pass diff --git a/gas/testsuite/gas/i386/x86-64-nop-5.d b/gas/testsuite/gas/i386/x86-64-nop-5.d index b0b7854f..333263bd 100644 --- a/gas/testsuite/gas/i386/x86-64-nop-5.d +++ b/gas/testsuite/gas/i386/x86-64-nop-5.d @@ -24,5 +24,5 @@ Disassembly of section .altinstr_replacement: +[a-f0-9]+: 89 c0 mov %eax,%eax +[a-f0-9]+: 89 c0 mov %eax,%eax +[a-f0-9]+: 89 c0 mov %eax,%eax - +[a-f0-9]+: e9 00 00 00 00 jmpq d <_start\+0xd> 9: R_X86_64_PLT32 foo-0x4 + +[a-f0-9]+: e9 00 00 00 00 jmpq d <_start\+0xd> 9: R_X86_64_PC32 foo-0x4 #pass diff --git a/gas/testsuite/gas/i386/x86-64-relax-2.d b/gas/testsuite/gas/i386/x86-64-relax-2.d index 8f432dff..6c765188 100644 --- a/gas/testsuite/gas/i386/x86-64-relax-2.d +++ b/gas/testsuite/gas/i386/x86-64-relax-2.d @@ -11,12 +11,12 @@ Disassembly of section .text: 0+ <foo>: [ ]*[a-f0-9]+: eb 24 jmp 26 <local> [ ]*[a-f0-9]+: eb 1e jmp 22 <hidden_def> -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 9 <foo\+0x9> 5: R_X86_64_PLT32 global_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 9 <foo\+0x9> 5: R_X86_64_PC32 global_def-0x4 [ ]*[a-f0-9]+: e9 00 00 00 00 jmpq e <foo\+0xe> a: R_X86_64_PLT32 global_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 13 <foo\+0x13> f: R_X86_64_PLT32 weak_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 18 <foo\+0x18> 14: R_X86_64_PLT32 weak_hidden_undef-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1d <foo\+0x1d> 19: R_X86_64_PLT32 weak_hidden_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 22 <hidden_def> 1e: R_X86_64_PLT32 hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 13 <foo\+0x13> f: R_X86_64_PC32 weak_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 18 <foo\+0x18> 14: R_X86_64_PC32 weak_hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1d <foo\+0x1d> 19: R_X86_64_PC32 weak_hidden_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 22 <hidden_def> 1e: R_X86_64_PC32 hidden_undef-0x4 0+22 <hidden_def>: [ ]*[a-f0-9]+: c3 retq diff --git a/gas/testsuite/gas/i386/x86-64-relax-3.d b/gas/testsuite/gas/i386/x86-64-relax-3.d index bb605081..f1ffdb89 100644 --- a/gas/testsuite/gas/i386/x86-64-relax-3.d +++ b/gas/testsuite/gas/i386/x86-64-relax-3.d @@ -12,10 +12,10 @@ Disassembly of section .text: [ ]*[a-f0-9]+: eb 1b jmp 1f <hidden_def> [ ]*[a-f0-9]+: eb 1b jmp 21 <global_def> [ ]*[a-f0-9]+: e9 00 00 00 00 jmpq b <foo\+0xb> 7: R_X86_64_PLT32 global_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 10 <foo\+0x10> c: R_X86_64_PLT32 weak_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 15 <foo\+0x15> 11: R_X86_64_PLT32 weak_hidden_undef-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1a <foo\+0x1a> 16: R_X86_64_PLT32 weak_hidden_def-0x4 -[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1f <hidden_def> 1b: R_X86_64_PLT32 hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 10 <foo\+0x10> c: R_X86_64_PC32 weak_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 15 <foo\+0x15> 11: R_X86_64_PC32 weak_hidden_undef-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1a <foo\+0x1a> 16: R_X86_64_PC32 weak_hidden_def-0x4 +[ ]*[a-f0-9]+: e9 00 00 00 00 jmpq 1f <hidden_def> 1b: R_X86_64_PC32 hidden_undef-0x4 0+1f <hidden_def>: [ ]*[a-f0-9]+: c3 retq diff --git a/ld/testsuite/ld-x86-64/mpx1c.rd b/ld/testsuite/ld-x86-64/mpx1c.rd index d66524c8..d3b292cb 100644 --- a/ld/testsuite/ld-x86-64/mpx1c.rd +++ b/ld/testsuite/ld-x86-64/mpx1c.rd @@ -1,3 +1,3 @@ #... -[0-9a-f ]+R_X86_64_PLT32 +0+ +.* +[0-9a-f ]+R_X86_64_PC32 +0+ +.* #... diff --git a/ld/testsuite/ld-x86-64/pr22791-1.err b/ld/testsuite/ld-x86-64/pr22791-1.err deleted file mode 100644 index 8c556599..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-1.err +++ /dev/null @@ -1,2 +0,0 @@ -.*relocation R_X86_64_PC32 against symbol `foo' can not be used when making a PIE object; recompile with -fPIE -#... diff --git a/ld/testsuite/ld-x86-64/pr22791-1a.c b/ld/testsuite/ld-x86-64/pr22791-1a.c deleted file mode 100644 index cd0130ca..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-1a.c +++ /dev/null @@ -1,4 +0,0 @@ -void -foo (void) -{ -} diff --git a/ld/testsuite/ld-x86-64/pr22791-1b.s b/ld/testsuite/ld-x86-64/pr22791-1b.s deleted file mode 100644 index 9751db49..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-1b.s +++ /dev/null @@ -1,6 +0,0 @@ - .text - .globl main - .type main, @function -main: - movl foo(%rip), %eax - .size main, .-main diff --git a/ld/testsuite/ld-x86-64/pr22791-2.rd b/ld/testsuite/ld-x86-64/pr22791-2.rd deleted file mode 100644 index 70deb30d..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-2.rd +++ /dev/null @@ -1,6 +0,0 @@ -#failif -#... -.*\(TEXTREL\).* -#... -[0-9a-f ]+R_X86_64_NONE.* -#... diff --git a/ld/testsuite/ld-x86-64/pr22791-2a.s b/ld/testsuite/ld-x86-64/pr22791-2a.s deleted file mode 100644 index 0a855024..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-2a.s +++ /dev/null @@ -1,8 +0,0 @@ - .text - .p2align 4,,15 - .globl foo - .type foo, @function -foo: - jmp bar - .size foo, .-foo - .section .note.GNU-stack,"",@progbits diff --git a/ld/testsuite/ld-x86-64/pr22791-2b.c b/ld/testsuite/ld-x86-64/pr22791-2b.c deleted file mode 100644 index 79ef27c0..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-2b.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdio.h> - -void -bar (void) -{ - puts ("PASS"); -} diff --git a/ld/testsuite/ld-x86-64/pr22791-2c.s b/ld/testsuite/ld-x86-64/pr22791-2c.s deleted file mode 100644 index 1460d1b8..00000000 --- a/ld/testsuite/ld-x86-64/pr22791-2c.s +++ /dev/null @@ -1,12 +0,0 @@ - .text - .p2align 4,,15 - .globl main - .type main, @function -main: - subq $8, %rsp - call foo - xorl %eax, %eax - addq $8, %rsp - ret - .size main, .-main - .section .note.GNU-stack,"",@progbits diff --git a/ld/testsuite/ld-x86-64/pr22842b.S b/ld/testsuite/ld-x86-64/pr22842b.S index f0659cd9..b9dd8134 100644 --- a/ld/testsuite/ld-x86-64/pr22842b.S +++ b/ld/testsuite/ld-x86-64/pr22842b.S @@ -7,7 +7,7 @@ main: leaq bar(%rip), %rdi addq %rax, %rdi - callq foo + callq foo@PLT xorl %eax, %eax popq %rcx retq diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index d836f334..b8a7de1f 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -1214,44 +1214,6 @@ if { [isnative] && [check_compiler_available] } { {readelf -lW pr22393-3b.rd}} \ "pr22393-3-static" \ ] \ - [list \ - "Build pr22791-1.so" \ - "-shared" \ - "-fPIC -Wa,-mx86-used-note=yes" \ - { pr22791-1a.c } \ - {} \ - "pr22791-1.so" \ - ] \ - [list \ - "Build pr22791-1" \ - "-pie -Wl,--no-as-needed,-z,notext tmpdir/pr22791-1.so" \ - "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \ - { pr22791-1b.s } \ - {{error_output "pr22791-1.err"}} \ - "pr22791-1" \ - ] \ - [list \ - "Build pr22791-2a.o" \ - "" \ - "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \ - { pr22791-2a.s } \ - ] \ - [list \ - "Build pr22791-2.so" \ - "-shared tmpdir/pr22791-2a.o" \ - "-fPIC -Wa,-mx86-used-note=yes" \ - { pr22791-2b.c } \ - {{readelf -drW pr22791-2.rd}} \ - "pr22791-2.so" \ - ] \ - [list \ - "Build pr22791-2" \ - "-pie -Wl,--no-as-needed tmpdir/pr22791-2.so" \ - "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \ - { pr22791-2c.s } \ - {{readelf -drW pr22791-2.rd}} \ - "pr22791-2" \ - ] \ [list \ "Build pr22842.so" \ "-shared" \ @@ -1700,15 +1662,6 @@ if { [isnative] && [check_compiler_available] } { "pr22393-3-static" \ "pass.out" \ ] \ - [list \ - "Run pr22791-2" \ - "-pie -Wl,--no-as-needed tmpdir/pr22791-2.so" \ - "-Wa,-mx86-used-note=yes" \ - { pr22791-2c.s } \ - "pr22791-2" \ - "pass.out" \ - "$NOPIE_CFLAGS" \ - ] \ [list \ "Run pr22842" \ "-pie -Wl,--no-as-needed tmpdir/pr22842.so" \ ++++++ binutils-skip-rpaths.patch ++++++ diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em index 42c552b36e..dd0a6b1e60 100644 --- a/ld/emultempl/elf.em +++ b/ld/emultempl/elf.em @@ -135,6 +135,8 @@ if test x"$LDEMUL_BEFORE_ALLOCATION" != xgld"$EMULATION_NAME"_before_allocation; if test x"${ELF_INTERPRETER_NAME}" = x; then ELF_INTERPRETER_NAME=NULL fi + + libpath_nl=`echo ${NATIVE_LIB_DIRS// /\\\n}` fragment <<EOF /* This is called after the sections have been attached to output diff --git a/ld/ldelf.c b/ld/ldelf.c index 2e27cf48a8..7162d0cf91 100644 --- a/ld/ldelf.c +++ b/ld/ldelf.c @@ -1506,6 +1506,31 @@ ldelf_append_to_separated_string (char **to, char *op_arg) } } +static int +ldelf_is_contained (const char *path, const char *dc) +{ + while (*dc) + { + const char *pc = path; + + while (*dc && *pc && *dc == *pc && *dc != '\n' + && *pc != ':' && *dc != '=') + { + dc++; + pc++; + } + if ((*pc == 0 || *pc == ':') && (*dc == '\n' || *dc == '=' || *dc == 0)) + return 1; + + while (*dc && *dc != '\n') + dc++; + if (*dc == '\n') + dc++; + } + + return 0; +} + /* This is called after the sections have been attached to output sections, but before any sizes or addresses have been set. */ @@ -1513,7 +1538,7 @@ void ldelf_before_allocation (char *audit, char *depaudit, const char *default_interpreter_name) { - const char *rpath; + char *rpath; asection *sinterp; bfd *abfd; struct bfd_link_hash_entry *ehdr_start = NULL; @@ -1572,7 +1597,65 @@ ldelf_before_allocation (char *audit, char *depaudit, by dynamic linking. */ rpath = command_line.rpath; if (rpath == NULL) - rpath = (const char *) getenv ("LD_RUN_PATH"); + rpath = getenv ("LD_RUN_PATH"); + + if (rpath != NULL && getenv ("SUSE_IGNORED_RPATHS")) + { + char *dirs = 0; + FILE *ldso = fopen (getenv ("SUSE_IGNORED_RPATHS"), "r"); + if (ldso) + { + off_t endcur = 0; + fseek (ldso, 0, SEEK_END); + endcur = ftell (ldso); + fseek (ldso, 0, SEEK_SET); + dirs = xmalloc (endcur); + if (fread (dirs, 1, endcur, ldso) != (size_t) endcur) + { + free (dirs); + dirs = NULL; + } + } + if (dirs) + { + char *cr; + rpath = xstrdup (rpath); + cr = rpath; /* cursor read */ + + while (*cr) + { + if (ldelf_is_contained (cr, dirs) + || ldelf_is_contained (cr, "$libpath_nl")) + { + char *cc = cr, *cw = cr; + while (*cc && *cc != ':') + cc++; + if (*cc == ':') + { + cc++; + for (; *cc; cc++, cw++) + *cw = *cc; + } + else if (cw > rpath) + cw[-1] = 0; + + *cw = 0; + } + else + { + while (*cr && *cr != ':') + cr++; + if (*cr == ':') + cr++; + } + } + if (*rpath == '\0') + { + free (rpath); + rpath = NULL; + } + } + } for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next) if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) ++++++ cross-avr-nesc-as.patch ++++++ Index: gas/config/tc-avr-nesc.h =================================================================== --- gas/config/tc-avr-nesc.h.orig 2016-02-01 09:58:37.419903606 +0100 +++ gas/config/tc-avr-nesc.h 2016-02-01 09:58:39.631928732 +0100 @@ -143,8 +143,12 @@ extern long md_pcrel_from_section (struc would print `12 34 56 78'. The default value is 4. */ #define LISTING_WORD_SIZE 2 -/* AVR port uses `$' as a logical line separator. */ -#define LEX_DOLLAR 0 +/* AVR port uses `$' as a logical line separator and doesn't + allow it in symbols. We allow it in the middle of symbols. + We also hack get_symbol_end to disallow it at the end of a symbol. */ +#define LEX_DOLLAR 1 +#define TC_EOL_IN_INSN(PTR) (*(PTR) == '$' && is_part_of_name((PTR)[-1]) && is_part_of_name((PTR)[1])) +#define TC_FORBID_DOLLAR_AT_END /* An `.lcomm' directive with no explicit alignment parameter will use this macro to set P2VAR to the alignment that a request for Index: gas/expr.c =================================================================== --- gas/expr.c.orig 2016-02-01 09:58:35.743884569 +0100 +++ gas/expr.c 2016-02-01 09:58:39.631928732 +0100 @@ -2342,6 +2342,15 @@ get_symbol_name (char ** ilp_return) ; if (is_name_ender (c)) c = *input_line_pointer++; +#ifdef TC_FORBID_DOLLAR_AT_END + /* This is for the Atmel AVR platforms. We want to allow $ in symbols + but also as a line separator. Yucky. */ + if (input_line_pointer[-2] == '$') + { + input_line_pointer--; + c = '$'; + } +#endif } else if (c == '"') { ++++++ cross-avr-omit_section_dynsym.patch ++++++ Index: bfd/elf32-avr.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-avr.c,v retrieving revision 1.27 diff -c -3 -p -r1.27 elf32-avr.c *** bfd/elf32-avr.c 28 Sep 2006 13:27:33 -0000 1.27 --- bfd/elf32-avr.c 19 Jan 2007 12:22:49 -0000 *************** elf32_avr_build_stubs (struct bfd_link_i *** 2915,2920 **** --- 2915,2922 ---- #define elf_backend_final_write_processing \ bfd_elf_avr_final_write_processing #define elf_backend_object_p elf32_avr_object_p + #define elf_backend_omit_section_dynsym \ + _bfd_elf_omit_section_dynsym_all #define bfd_elf32_bfd_relax_section elf32_avr_relax_section #define bfd_elf32_bfd_get_relocated_section_contents \ ++++++ cross-avr-size.patch ++++++ diff --git a/binutils/size.c b/binutils/size.c index 479a464887..971156ccbe 100644 --- a/binutils/size.c +++ b/binutils/size.c @@ -51,6 +51,7 @@ enum output_format { FORMAT_BERKLEY, FORMAT_SYSV, + FORMAT_AVR, FORMAT_GNU }; static enum output_format selected_output_format = @@ -74,6 +75,246 @@ static bfd_size_type total_textsize; /* Program exit status. */ static int return_code = 0; + +/* AVR Size specific stuff */ + +#define AVR64 64UL +#define AVR128 128UL +#define AVR256 256UL +#define AVR512 512UL +#define AVR1K 1024UL +#define AVR2K 2048UL +#define AVR4K 4096UL +#define AVR8K 8192UL +#define AVR16K 16384UL +#define AVR20K 20480UL +#define AVR24K 24576UL +#define AVR32K 32768UL +#define AVR36K 36864UL +#define AVR40K 40960UL +#define AVR64K 65536UL +#define AVR68K 69632UL +#define AVR128K 131072UL +#define AVR136K 139264UL +#define AVR200K 204800UL +#define AVR256K 262144UL +#define AVR264K 270336UL + +typedef struct +{ + char *name; + long flash; + long ram; + long eeprom; +} avr_device_t; + +avr_device_t avr[] = +{ + {"atxmega256a3", AVR264K, AVR16K, AVR4K}, + {"atxmega256a3b", AVR264K, AVR16K, AVR4K}, + {"atxmega256d3", AVR264K, AVR16K, AVR4K}, + + {"atmega2560", AVR256K, AVR8K, AVR4K}, + {"atmega2561", AVR256K, AVR8K, AVR4K}, + + {"atxmega192a3", AVR200K, AVR16K, AVR2K}, + {"atxmega192d3", AVR200K, AVR16K, AVR2K}, + + {"atxmega128a1", AVR136K, AVR8K, AVR2K}, + {"atxmega128a1u", AVR136K, AVR8K, AVR2K}, + {"atxmega128a3", AVR136K, AVR8K, AVR2K}, + {"atxmega128d3", AVR136K, AVR8K, AVR2K}, + + {"at43usb320", AVR128K, 608UL, 0UL}, + {"at90can128", AVR128K, AVR4K, AVR4K}, + {"at90usb1286", AVR128K, AVR8K, AVR4K}, + {"at90usb1287", AVR128K, AVR8K, AVR4K}, + {"atmega128", AVR128K, AVR4K, AVR4K}, + {"atmega1280", AVR128K, AVR8K, AVR4K}, + {"atmega1281", AVR128K, AVR8K, AVR4K}, + {"atmega1284p", AVR128K, AVR16K, AVR4K}, + {"atmega128rfa1", AVR128K, AVR16K, AVR4K}, + {"atmega103", AVR128K, 4000UL, AVR4K}, + + {"atxmega64a1", AVR68K, AVR4K, AVR2K}, + {"atxmega64a1u", AVR68K, AVR4K, AVR2K}, + {"atxmega64a3", AVR68K, AVR4K, AVR2K}, + {"atxmega64d3", AVR68K, AVR4K, AVR2K}, + + {"at90can64", AVR64K, AVR4K, AVR2K}, + {"at90scr100", AVR64K, AVR4K, AVR2K}, + {"at90usb646", AVR64K, AVR4K, AVR2K}, + {"at90usb647", AVR64K, AVR4K, AVR2K}, + {"atmega64", AVR64K, AVR4K, AVR2K}, + {"atmega640", AVR64K, AVR8K, AVR4K}, + {"atmega644", AVR64K, AVR4K, AVR2K}, + {"atmega644a", AVR64K, AVR4K, AVR2K}, + {"atmega644p", AVR64K, AVR4K, AVR2K}, + {"atmega644pa", AVR64K, AVR4K, AVR2K}, + {"atmega645", AVR64K, AVR4K, AVR2K}, + {"atmega645a", AVR64K, AVR4K, AVR2K}, + {"atmega645p", AVR64K, AVR4K, AVR2K}, + {"atmega6450", AVR64K, AVR4K, AVR2K}, + {"atmega6450a", AVR64K, AVR4K, AVR2K}, + {"atmega6450p", AVR64K, AVR4K, AVR2K}, + {"atmega649", AVR64K, AVR4K, AVR2K}, + {"atmega649a", AVR64K, AVR4K, AVR2K}, + {"atmega649p", AVR64K, AVR4K, AVR2K}, + {"atmega6490", AVR64K, AVR4K, AVR2K}, + {"atmega6490a", AVR64K, AVR4K, AVR2K}, + {"atmega6490p", AVR64K, AVR4K, AVR2K}, + {"atmega64c1", AVR64K, AVR4K, AVR2K}, + {"atmega64hve", AVR64K, AVR4K, AVR1K}, + {"atmega64m1", AVR64K, AVR4K, AVR2K}, + {"m3000", AVR64K, AVR4K, 0UL}, + + {"atmega406", AVR40K, AVR2K, AVR512}, + + {"atxmega32a4", AVR36K, AVR4K, AVR1K}, + {"atxmega32d4", AVR36K, AVR4K, AVR1K}, + + {"at90can32", AVR32K, AVR2K, AVR1K}, + {"at94k", AVR32K, AVR4K, 0UL}, + {"atmega32", AVR32K, AVR2K, AVR1K}, + {"atmega323", AVR32K, AVR2K, AVR1K}, + {"atmega324a", AVR32K, AVR2K, AVR1K}, + {"atmega324p", AVR32K, AVR2K, AVR1K}, + {"atmega324pa", AVR32K, AVR2K, AVR1K}, + {"atmega325", AVR32K, AVR2K, AVR1K}, + {"atmega325a", AVR32K, AVR2K, AVR1K}, + {"atmega325p", AVR32K, AVR2K, AVR1K}, + {"atmega3250", AVR32K, AVR2K, AVR1K}, + {"atmega3250a", AVR32K, AVR2K, AVR1K}, + {"atmega3250p", AVR32K, AVR2K, AVR1K}, + {"atmega328", AVR32K, AVR2K, AVR1K}, + {"atmega328p", AVR32K, AVR2K, AVR1K}, + {"atmega329", AVR32K, AVR2K, AVR1K}, + {"atmega329a", AVR32K, AVR2K, AVR1K}, + {"atmega329p", AVR32K, AVR2K, AVR1K}, + {"atmega329pa", AVR32K, AVR2K, AVR1K}, + {"atmega3290", AVR32K, AVR2K, AVR1K}, + {"atmega3290a", AVR32K, AVR2K, AVR1K}, + {"atmega3290p", AVR32K, AVR2K, AVR1K}, + {"atmega32hvb", AVR32K, AVR2K, AVR1K}, + {"atmega32c1", AVR32K, AVR2K, AVR1K}, + {"atmega32hvb", AVR32K, AVR2K, AVR1K}, + {"atmega32m1", AVR32K, AVR2K, AVR1K}, + {"atmega32u2", AVR32K, AVR1K, AVR1K}, + {"atmega32u4", AVR32K, 2560UL, AVR1K}, + {"atmega32u6", AVR32K, 2560UL, AVR1K}, + + {"at43usb355", AVR24K, 1120UL, 0UL}, + + {"atxmega16a4", AVR20K, AVR2K, AVR1K}, + {"atxmega16d4", AVR20K, AVR2K, AVR1K}, + + {"at76c711", AVR16K, AVR2K, 0UL}, + {"at90pwm216", AVR16K, AVR1K, AVR512}, + {"at90pwm316", AVR16K, AVR1K, AVR512}, + {"at90usb162", AVR16K, AVR512, AVR512}, + {"atmega16", AVR16K, AVR1K, AVR512}, + {"atmega16a", AVR16K, AVR1K, AVR512}, + {"atmega161", AVR16K, AVR1K, AVR512}, + {"atmega162", AVR16K, AVR1K, AVR512}, + {"atmega163", AVR16K, AVR1K, AVR512}, + {"atmega164", AVR16K, AVR1K, AVR512}, + {"atmega164a", AVR16K, AVR1K, AVR512}, + {"atmega164p", AVR16K, AVR1K, AVR512}, + {"atmega165a", AVR16K, AVR1K, AVR512}, + {"atmega165", AVR16K, AVR1K, AVR512}, + {"atmega165p", AVR16K, AVR1K, AVR512}, + {"atmega168", AVR16K, AVR1K, AVR512}, + {"atmega168a", AVR16K, AVR1K, AVR512}, + {"atmega168p", AVR16K, AVR1K, AVR512}, + {"atmega169", AVR16K, AVR1K, AVR512}, + {"atmega169a", AVR16K, AVR1K, AVR512}, + {"atmega169p", AVR16K, AVR1K, AVR512}, + {"atmega169pa", AVR16K, AVR1K, AVR512}, + {"atmega16hva", AVR16K, 768UL, AVR256}, + {"atmega16hva2", AVR16K, AVR1K, AVR256}, + {"atmega16hvb", AVR16K, AVR1K, AVR512}, + {"atmega16m1", AVR16K, AVR1K, AVR512}, + {"atmega16u2", AVR16K, AVR512, AVR512}, + {"atmega16u4", AVR16K, 1280UL, AVR512}, + {"attiny167", AVR16K, AVR512, AVR512}, + + {"at90c8534", AVR8K, 352UL, AVR512}, + {"at90pwm1", AVR8K, AVR512, AVR512}, + {"at90pwm2", AVR8K, AVR512, AVR512}, + {"at90pwm2b", AVR8K, AVR512, AVR512}, + {"at90pwm3", AVR8K, AVR512, AVR512}, + {"at90pwm3b", AVR8K, AVR512, AVR512}, + {"at90pwm81", AVR8K, AVR256, AVR512}, + {"at90s8515", AVR8K, AVR512, AVR512}, + {"at90s8535", AVR8K, AVR512, AVR512}, + {"at90usb82", AVR8K, AVR512, AVR512}, + {"ata6289", AVR8K, AVR512, 320UL}, + {"atmega8", AVR8K, AVR1K, AVR512}, + {"atmega8515", AVR8K, AVR512, AVR512}, + {"atmega8535", AVR8K, AVR512, AVR512}, + {"atmega88", AVR8K, AVR1K, AVR512}, + {"atmega88a", AVR8K, AVR1K, AVR512}, + {"atmega88p", AVR8K, AVR1K, AVR512}, + {"atmega88pa", AVR8K, AVR1K, AVR512}, + {"atmega8hva", AVR8K, 768UL, AVR256}, + {"atmega8u2", AVR8K, AVR512, AVR512}, + {"attiny84", AVR8K, AVR512, AVR512}, + {"attiny84a", AVR8K, AVR512, AVR512}, + {"attiny85", AVR8K, AVR512, AVR512}, + {"attiny861", AVR8K, AVR512, AVR512}, + {"attiny861a", AVR8K, AVR512, AVR512}, + {"attiny87", AVR8K, AVR512, AVR512}, + {"attiny88", AVR8K, AVR512, AVR64}, + + {"at90s4414", AVR4K, 352UL, AVR256}, + {"at90s4433", AVR4K, AVR128, AVR256}, + {"at90s4434", AVR4K, 352UL, AVR256}, + {"atmega48", AVR4K, AVR512, AVR256}, + {"atmega48a", AVR4K, AVR512, AVR256}, + {"atmega48p", AVR4K, AVR512, AVR256}, + {"attiny4313", AVR4K, AVR256, AVR256}, + {"attiny43u", AVR4K, AVR256, AVR64}, + {"attiny44", AVR4K, AVR256, AVR256}, + {"attiny44a", AVR4K, AVR256, AVR256}, + {"attiny45", AVR4K, AVR256, AVR256}, + {"attiny461", AVR4K, AVR256, AVR256}, + {"attiny461a", AVR4K, AVR256, AVR256}, + {"attiny48", AVR4K, AVR256, AVR64}, + + {"at86rf401", AVR2K, 224UL, AVR128}, + {"at90s2313", AVR2K, AVR128, AVR128}, + {"at90s2323", AVR2K, AVR128, AVR128}, + {"at90s2333", AVR2K, 224UL, AVR128}, + {"at90s2343", AVR2K, AVR128, AVR128}, + {"attiny20", AVR2K, AVR128, 0UL}, + {"attiny22", AVR2K, 224UL, AVR128}, + {"attiny2313", AVR2K, AVR128, AVR128}, + {"attiny2313a", AVR2K, AVR128, AVR128}, + {"attiny24", AVR2K, AVR128, AVR128}, + {"attiny24a", AVR2K, AVR128, AVR128}, + {"attiny25", AVR2K, AVR128, AVR128}, + {"attiny26", AVR2K, AVR128, AVR128}, + {"attiny261", AVR2K, AVR128, AVR128}, + {"attiny261a", AVR2K, AVR128, AVR128}, + {"attiny28", AVR2K, 0UL, 0UL}, + {"attiny40", AVR2K, AVR256, 0UL}, + + {"at90s1200", AVR1K, 0UL, AVR64}, + {"attiny9", AVR1K, 32UL, 0UL}, + {"attiny10", AVR1K, 32UL, 0UL}, + {"attiny11", AVR1K, 0UL, AVR64}, + {"attiny12", AVR1K, 0UL, AVR64}, + {"attiny13", AVR1K, AVR64, AVR64}, + {"attiny13a", AVR1K, AVR64, AVR64}, + {"attiny15", AVR1K, 0UL, AVR64}, + + {"attiny4", AVR512, 32UL, 0UL}, + {"attiny5", AVR512, 32UL, 0UL}, +}; + +static char *avrmcu = NULL; + + static char *target = NULL; /* Forward declarations. */ @@ -89,7 +330,8 @@ usage (FILE *stream, int status) fprintf (stream, _(" Displays the sizes of sections inside binary files\n")); fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n")); fprintf (stream, _(" The options are:\n\ - -A|-B|-G --format={sysv|berkeley|gnu} Select output style (default is %s)\n\ + -A|-B|-C|-G --format={sysv|berkeley|avr|gnu} Select output style (default is %s)\n\ + --mcu=<avrmcu> MCU name for AVR format only\n\ -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n\ -t --totals Display the total sizes (Berkeley only)\n\ --common Display total size for *COM* syms\n\ @@ -113,6 +355,7 @@ usage (FILE *stream, int status) #define OPTION_FORMAT (200) #define OPTION_RADIX (OPTION_FORMAT + 1) #define OPTION_TARGET (OPTION_RADIX + 1) +#define OPTION_MCU (OPTION_TARGET + 1) static struct option long_options[] = { @@ -120,6 +363,7 @@ static struct option long_options[] = {"format", required_argument, 0, OPTION_FORMAT}, {"radix", required_argument, 0, OPTION_RADIX}, {"target", required_argument, 0, OPTION_TARGET}, + {"mcu", required_argument, 0, 203}, {"totals", no_argument, &show_totals, 1}, {"version", no_argument, &show_version, 1}, {"help", no_argument, &show_help, 1}, @@ -153,13 +397,17 @@ main (int argc, char **argv) fatal (_("fatal error: libbfd ABI mismatch")); set_default_bfd_target (); - while ((c = getopt_long (argc, argv, "ABGHhVvdfotx", long_options, + while ((c = getopt_long (argc, argv, "ABCGHhVvdfotx", long_options, (int *) 0)) != EOF) switch (c) { case OPTION_FORMAT: switch (*optarg) { + case 'A': + case 'a': + selected_output_format = FORMAT_AVR; + break; case 'B': case 'b': selected_output_format = FORMAT_BERKLEY; @@ -178,6 +426,10 @@ main (int argc, char **argv) } break; + case OPTION_MCU: + avrmcu = optarg; + break; + case OPTION_TARGET: target = optarg; break; @@ -211,6 +463,9 @@ main (int argc, char **argv) case 'B': selected_output_format = FORMAT_BERKLEY; break; + case 'C': + selected_output_format = FORMAT_AVR; + break; case 'G': selected_output_format = FORMAT_GNU; break; @@ -648,13 +903,115 @@ print_sysv_format (bfd *file) printf ("\n\n"); } +static avr_device_t * +avr_find_device (void) +{ + unsigned int i; + if (avrmcu != NULL) + { + for (i = 0; i < sizeof(avr) / sizeof(avr[0]); i++) + { + if (strcmp(avr[i].name, avrmcu) == 0) + { + /* Match found */ + return (&avr[i]); + } + } + } + return (NULL); +} + +static void +print_avr_format (bfd *file) +{ + char *avr_name = "Unknown"; + int flashmax = 0; + int rammax = 0; + int eeprommax = 0; + asection *section; + datasize = 0; + textsize = 0; + bsssize = 0; + bfd_size_type bootloadersize = 0; + bfd_size_type noinitsize = 0; + bfd_size_type eepromsize = 0; + + avr_device_t *avrdevice = avr_find_device(); + if (avrdevice != NULL) + { + avr_name = avrdevice->name; + flashmax = avrdevice->flash; + rammax = avrdevice->ram; + eeprommax = avrdevice->eeprom; + } + + if ((section = bfd_get_section_by_name (file, ".data")) != NULL) + datasize = bfd_section_size (section); + if ((section = bfd_get_section_by_name (file, ".text")) != NULL) + textsize = bfd_section_size (section); + if ((section = bfd_get_section_by_name (file, ".bss")) != NULL) + bsssize = bfd_section_size (section); + if ((section = bfd_get_section_by_name (file, ".bootloader")) != NULL) + bootloadersize = bfd_section_size (section); + if ((section = bfd_get_section_by_name (file, ".noinit")) != NULL) + noinitsize = bfd_section_size (section); + if ((section = bfd_get_section_by_name (file, ".eeprom")) != NULL) + eepromsize = bfd_section_size (section); + + bfd_size_type text = textsize + datasize + bootloadersize; + bfd_size_type data = datasize + bsssize + noinitsize; + bfd_size_type eeprom = eepromsize; + + printf ("AVR Memory Usage\n" + "----------------\n" + "Device: %s\n\n", avr_name); + + /* Text size */ + printf ("Program:%8ld bytes", text); + if (flashmax > 0) + { + printf (" (%2.1f%% Full)", ((float)text / flashmax) * 100); + } + printf ("\n(.text + .data + .bootloader)\n\n"); + + /* Data size */ + printf ("Data: %8ld bytes", data); + if (rammax > 0) + { + printf (" (%2.1f%% Full)", ((float)data / rammax) * 100); + } + printf ("\n(.data + .bss + .noinit)\n\n"); + + /* EEPROM size */ + if (eeprom > 0) + { + printf ("EEPROM: %8ld bytes", eeprom); + if (eeprommax > 0) + { + printf (" (%2.1f%% Full)", ((float)eeprom / eeprommax) * 100); + } + printf ("\n(.eeprom)\n\n"); + } +} + + static void print_sizes (bfd *file) { if (show_common) calculate_common_size (file); - if (selected_output_format == FORMAT_SYSV) - print_sysv_format (file); - else - print_berkeley_or_gnu_format (file); + switch (selected_output_format) + { + case FORMAT_SYSV: + print_sysv_format (file); + break; + case FORMAT_BERKLEY: + case FORMAT_GNU: + print_berkeley_or_gnu_format (file); + break; + case FORMAT_AVR: + default: + print_avr_format (file); + break; + } } ++++++ enable-targets-gold.diff ++++++ Index: gold/configure =================================================================== --- gold/configure.orig 2018-07-16 09:55:04.675278145 +0200 +++ gold/configure 2018-07-16 09:55:36.007836031 +0200 @@ -5180,7 +5180,8 @@ for targ in $target $canon_targets; do . ${srcdir}/configure.tgt if test "$targ_obj" = "UNKNOWN"; then - as_fn_error $? "\"unsupported target $targ\"" "$LINENO" 5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"unsupported target $targ\"" >&5 + $as_echo "$as_me: WARNING: \"unsupported target $targ\"" >&2;} else targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)" if test "$targ_extra_obj" != ""; then ++++++ ld-relro.diff ++++++ Index: ld/lexsup.c =================================================================== --- ld/lexsup.c.orig 2014-10-14 17:43:07.000000000 +0200 +++ ld/lexsup.c 2014-10-14 17:43:26.000000000 +0200 @@ -623,6 +623,9 @@ parse_args (unsigned argc, char **argv) } } + optarg = "relro"; + ldemul_handle_option ('z'); + last_optind = -1; while (1) { Index: ld/testsuite/config/default.exp =================================================================== --- ld/testsuite/config/default.exp.orig 2014-10-14 17:43:07.000000000 +0200 +++ ld/testsuite/config/default.exp 2014-10-14 17:44:58.000000000 +0200 @@ -22,7 +22,7 @@ # if ![info exists ld] then { - set ld [findfile $base_dir/ld-new $base_dir/ld-new [transform ld]] + set ld "[findfile $base_dir/ld-new $base_dir/ld-new [transform ld]] -znorelro" } if ![info exists as] then { @@ -60,7 +60,7 @@ if {![file isdirectory tmpdir/ld]} then catch "exec ln -s ld tmpdir/ld/collect-ld" status catch "exec ln -s ../../../gas/as-new tmpdir/ld/as" status } -set gcc_B_opt "-B[pwd]/tmpdir/ld/" +set gcc_B_opt "-B[pwd]/tmpdir/ld/ -Wl,-z,norelro" # load the linker path set ld_L_opt "" @@ -272,7 +272,7 @@ if ![info exists READELFFLAGS] then { } if ![info exists LD] then { - set LD [findfile $base_dir/ld-new ./ld-new [transform ld]] + set LD "[findfile $base_dir/ld-new ./ld-new [transform ld]] -znorelro" } if ![info exists LDFLAGS] then { Index: ld/testsuite/ld-bootstrap/bootstrap.exp =================================================================== --- ld/testsuite/ld-bootstrap/bootstrap.exp.orig 2014-10-14 17:43:07.000000000 +0200 +++ ld/testsuite/ld-bootstrap/bootstrap.exp 2014-10-14 17:43:26.000000000 +0200 @@ -78,7 +78,12 @@ foreach flags $test_flags { # This test can only be run if we have the ld build directory, # since we need the object files. - if {$ld != "$objdir/ld-new"} { + set ldexe $ld + set ldparm [string first " " $ld] + if { $ldparm > 0 } then { + set ldexe [string range $ld 0 $ldparm] + } + if {$ldexe != "$objdir/ld-new"} { untested $testname continue } ++++++ pre_checkin.sh ++++++ #!/bin/bash # the script takes binutils* and creates the cross-* packages rm -f cross-*-binutils.spec cross-*-binutils.changes # sh4 is stuck in the testsuite for arch in aarch64 hppa hppa64 arm i386 x86_64 s390 s390x ppc ppc64 ppc64le ia64 sparc sparc64 spu avr mips m68k epiphany rx riscv64 xtensa; do echo -n "Building package for $arch --> cross-$arch-binutils ..." ln -f binutils.changes cross-$arch-binutils.changes targetarch=`echo $arch | sed -e "s/parisc/hppa/;s/i.86/i586/;s/ppc/powerpc/"` exclarch=`echo $arch | sed -e 's/parisc/hppa/;s/i.86/%ix86/;s/arm/%arm/'` sed -e "s/^Name:.*binutils\$/Name: cross-$arch-binutils\nExcludeArch: $exclarch\n%define cross 1\n%define TARGET $targetarch/;" \ < binutils.spec > cross-$arch-binutils.spec echo " done." done osc service localrun format_spec_file ++++++ s390-biarch.diff ++++++ Index: ld/emulparams/elf_s390.sh =================================================================== --- ld/emulparams/elf_s390.sh.orig 2019-09-09 18:48:59.000000000 +0200 +++ ld/emulparams/elf_s390.sh 2019-09-09 18:49:02.000000000 +0200 @@ -12,3 +12,18 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes NO_SMALL_DATA=yes IREL_IN_PLT= + +# Treat a host that matches the target with the possible exception of "x" +# in the name as if it were native. +if test `echo "$host" | sed -e s/x//` = `echo "$target" | sed -e s/x//`; then + case " $EMULATION_LIBPATH " in + *" ${EMULATION_NAME} "*) + NATIVE=yes + ;; + esac +fi + +# Look for 64 bit target libraries in /lib64, /usr/lib64 etc., first. +case "$EMULATION_NAME" in + *64*) LIBPATH_SUFFIX=64 ;; +esac ++++++ s390-pic-dso.diff ++++++ Index: bfd/elf32-s390.c =================================================================== --- bfd/elf32-s390.c.orig 2016-01-25 09:51:06.000000000 +0100 +++ bfd/elf32-s390.c 2016-01-27 15:24:52.947115619 +0100 @@ -2782,6 +2782,27 @@ elf_s390_relocate_section (bfd *output_b case R_390_PC24DBL: case R_390_PC32DBL: case R_390_PC32: + /* This is strictly required only for PC32DBL, which + is not handled by ld.so, but let's be helpful to the user also + in the other cases. */ + if (bfd_link_pic (info) + && !SYMBOL_REFERENCES_LOCAL (info, h) + && (input_section->flags & SEC_ALLOC) != 0 + && (input_section->flags & SEC_READONLY) != 0 + && (!h->def_regular + || r_type != R_390_PC32DBL + || h->type != STT_FUNC + || ELF_ST_VISIBILITY (h->other) != STV_PROTECTED)) + { + (*_bfd_error_handler) + (_("%B: relocation %s against `%s' can not be used when " + "making a shared object; recompile with -fPIC"), + input_bfd, elf_howto_table[r_type].name, + h->root.root.string); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + if (h != NULL && s390_is_ifunc_symbol_p (h) && h->def_regular ++++++ testsuite.diff ++++++ Index: binutils/testsuite/binutils-all/windres/windres.exp =================================================================== --- binutils/testsuite/binutils-all/windres/windres.exp.orig +++ binutils/testsuite/binutils-all/windres/windres.exp @@ -36,6 +36,7 @@ set wr "$WINDRES --include-dir $srcdir/$ if [file exists "$srcdir/../../winsup/w32api/include"] { set wr "$wr --include-dir $srcdir/../../winsup/w32api/include" } else { + return send_log "\nWarning: Assuming windres can find the win32 headers\n\n" } Index: ld/testsuite/ld-srec/srec.exp =================================================================== --- ld/testsuite/ld-srec/srec.exp.orig +++ ld/testsuite/ld-srec/srec.exp @@ -20,6 +20,9 @@ # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, # MA 02110-1301, USA. +# Too fragile. +return + # Get the offset from an S-record line to the start of the data. proc srec_off { l } { ++++++ unit-at-a-time.patch ++++++ Index: ld/testsuite/ld-selective/selective.exp =================================================================== --- ld/testsuite/ld-selective/selective.exp +++ ld/testsuite/ld-selective/selective.exp @@ -46,8 +46,8 @@ set seltests { {A::foo() B::foo() dropme1() dropme2()} {*-*-*}} } -set cflags "-w -O -ffunction-sections -fdata-sections $NOSANTIZE_CFLAGS" -set cxxflags "-fno-exceptions -fno-rtti $NOSANTIZE_CFLAGS" +set cflags "-w -O -ffunction-sections -fdata-sections -fno-unit-at-a-time $NOSANTIZE_CFLAGS" +set cxxflags "-fno-exceptions -fno-rtti -fno-unit-at-a-time $NOSANTIZE_CFLAGS" set ldflags "--gc-sections -Bstatic" if [istarget mips*-*] { ++++++ x86-64-biarch.patch ++++++ Index: ld/emulparams/elf_i386.sh =================================================================== --- ld/emulparams/elf_i386.sh.orig 2014-10-14 17:39:02.000000000 +0200 +++ ld/emulparams/elf_i386.sh 2014-10-14 17:39:44.000000000 +0200 @@ -23,6 +23,10 @@ case "$target" in LIBPATH_SUFFIX=32 LIBPATH_SUFFIX_SKIP=64 ;; + *64*) + LIBPATH_SUFFIX=64 + LIBPATH_SUFFIX_SKIP=32 + ;; esac ;; esac
participants (1)
-
root