Security update for binutils

GNU binutil was updated to the 2.29.1 release, bringing various new features, fixing a lot of bugs and security issues.

Following security issues are being addressed by this release:

* 18750 bsc#1030296 CVE-2014-9939
* 20891 bsc#1030585 CVE-2017-7225
* 20892 bsc#1030588 CVE-2017-7224
* 20898 bsc#1030589 CVE-2017-7223
* 20905 bsc#1030584 CVE-2017-7226
* 20908 bsc#1031644 CVE-2017-7299
* 20909 bsc#1031656 CVE-2017-7300
* 20921 bsc#1031595 CVE-2017-7302
* 20922 bsc#1031593 CVE-2017-7303
* 20924 bsc#1031638 CVE-2017-7301
* 20931 bsc#1031590 CVE-2017-7304
* 21135 bsc#1030298 CVE-2017-7209
* 21137 bsc#1029909 CVE-2017-6965
* 21139 bsc#1029908 CVE-2017-6966
* 21156 bsc#1029907 CVE-2017-6969
* 21157 bsc#1030297 CVE-2017-7210
* 21409 bsc#1037052 CVE-2017-8392
* 21412 bsc#1037057 CVE-2017-8393
* 21414 bsc#1037061 CVE-2017-8394
* 21432 bsc#1037066 CVE-2017-8396
* 21440 bsc#1037273 CVE-2017-8421
* 21580 bsc#1044891 CVE-2017-9746
* 21581 bsc#1044897 CVE-2017-9747
* 21582 bsc#1044901 CVE-2017-9748
* 21587 bsc#1044909 CVE-2017-9750
* 21594 bsc#1044925 CVE-2017-9755
* 21595 bsc#1044927 CVE-2017-9756
* 21787 bsc#1052518 CVE-2017-12448
* 21813 bsc#1052503, CVE-2017-12456, bsc#1052507, CVE-2017-12454, bsc#1052509, CVE-2017-12453, bsc#1052511, CVE-2017-12452, bsc#1052514, CVE-2017-12450, bsc#1052503, CVE-2017-12456, bsc#1052507, CVE-2017-12454, bsc#1052509, CVE-2017-12453, bsc#1052511, CVE-2017-12452, bsc#1052514, CVE-2017-12450
* 21933 bsc#1053347 CVE-2017-12799
* 21990 bsc#1058480 CVE-2017-14333
* 22018 bsc#1056312 CVE-2017-13757
* 22047 bsc#1057144 CVE-2017-14129
* 22058 bsc#1057149 CVE-2017-14130
* 22059 bsc#1057139 CVE-2017-14128
* 22113 bsc#1059050 CVE-2017-14529
* 22148 bsc#1060599 CVE-2017-14745
* 22163 bsc#1061241 CVE-2017-14974
* 22170 bsc#1060621 CVE-2017-14729

Update to binutils 2.29. [fate#321454, fate#321494, fate#323293]:

* The MIPS port now supports microMIPS eXtended Physical Addressing (XPA)
instructions for assembly and disassembly.
* The MIPS port now supports the microMIPS Release 5 ISA for assembly and
disassembly.
* The MIPS port now supports the Imagination interAptiv MR2 processor,
which implements the MIPS32r3 ISA, the MIPS16e2 ASE as well as a couple
of implementation-specific regular MIPS and MIPS16e2 ASE instructions.
* The SPARC port now supports the SPARC M8 processor, which implements the
Oracle SPARC Architecture 2017.
* The MIPS port now supports the MIPS16e2 ASE for assembly and disassembly.
* Add support for ELF SHF_GNU_MBIND and PT_GNU_MBIND_XXX.
* Add support for the wasm32 ELF conversion of the WebAssembly file format.
* Add --inlines option to objdump, which extends the --line-numbers option
so that inlined functions will display their nesting information.
* Add --merge-notes options to objcopy to reduce the size of notes in
a binary file by merging and deleting redundant notes.
* Add support for locating separate debug info files using the build-id
method, where the separate file has a name based upon the build-id of
the original file.

- GAS specific:

* Add support for ELF SHF_GNU_MBIND.
* Add support for the WebAssembly file format and wasm32 ELF conversion.
* PowerPC gas now checks that the correct register class is used in
instructions. For instance, "addi %f4,%cr3,%r31" warns three times
that the registers are invalid.
* Add support for the Texas Instruments PRU processor.
* Support for the ARMv8-R architecture and Cortex-R52 processor has been
added to the ARM port.

- GNU ld specific:

* Support for -z shstk in the x86 ELF linker to generate
GNU_PROPERTY_X86_FEATURE_1_SHSTK in ELF GNU program properties.
* Add support for GNU_PROPERTY_X86_FEATURE_1_SHSTK in ELF GNU program
properties in the x86 ELF linker.
* Add support for GNU_PROPERTY_X86_FEATURE_1_IBT in ELF GNU program
properties in the x86 ELF linker.
* Support for -z ibtplt in the x86 ELF linker to generate IBT-enabled
PLT.
* Support for -z ibt in the x86 ELF linker to generate IBT-enabled
PLT as well as GNU_PROPERTY_X86_FEATURE_1_IBT in ELF GNU program
properties.
* Add support for ELF SHF_GNU_MBIND and PT_GNU_MBIND_XXX.
* Add support for ELF GNU program properties.
* Add support for the Texas Instruments PRU processor.
* When configuring for arc*-*-linux* targets the default linker emulation will
change if --with-cpu=nps400 is used at configure time.
* Improve assignment of LMAs to orphan sections in some edge cases where a
mixture of both AT>LMA_REGION and AT(LMA) are used.
* Orphan sections placed after an empty section that has an AT(LMA) will now
take an load memory address starting from LMA.
* Section groups can now be resolved (the group deleted and the group members
placed like normal sections) at partial link time either using the new
linker option --force-group-allocation or by placing FORCE_GROUP_ALLOCATION
into the linker script.

- Add riscv64 target, tested with gcc7 and downstream newlib 2.4.0
- Prepare riscv32 target (gh#riscv/riscv-newlib#8)
- Make compressed debug section handling explicit, disable for
old products and enable for gas on all architectures otherwise. [bsc#1029995]
- Remove empty rpath component removal optimization from to workaround
CMake rpath handling. [bsc#1025282]

Minor security bugs fixed:
PR 21147, PR 21148, PR 21149, PR 21150, PR 21151, PR 21155, PR 21158, PR 21159

- Update to binutils 2.28.

* Add support for locating separate debug info files using the build-id
method, where the separate file has a name based upon the build-id of
the original file.
* This version of binutils fixes a problem with PowerPC VLE 16A and 16D
relocations which were functionally swapped, for example,
R_PPC_VLE_HA16A performed like R_PPC_VLE_HA16D while R_PPC_VLE_HA16D
performed like R_PPC_VLE_HA16A. This could have been fixed by
renumbering relocations, which would keep object files created by an
older version of gas compatible with a newer ld. However, that would
require an ABI update, affecting other assemblers and linkers that
create and process the relocations correctly. It is recommended that
all VLE object files be recompiled, but ld can modify the relocations
if --vle-reloc-fixup is passed to ld. If the new ld command line
option is not used, ld will ld warn on finding relocations inconsistent
with the instructions being relocated.
* The nm program has a new command line option (--with-version-strings)
which will display a symbol's version information, if any, after the
symbol's name.
* The ARC port of objdump now accepts a -M option to specify the extra
instruction class(es) that should be disassembled.
* The --remove-section option for objcopy and strip now accepts section
patterns starting with an exclamation point to indicate a non-matching
section. A non-matching section is removed from the set of sections
matched by an earlier --remove-section pattern.
* The --only-section option for objcopy now accepts section patterns
starting with an exclamation point to indicate a non-matching section.
A non-matching section is removed from the set of sections matched by
an earlier --only-section pattern.
* New --remove-relocations=SECTIONPATTERN option for objcopy and strip.
This option can be used to remove sections containing relocations.
The SECTIONPATTERN is the section to which the relocations apply, not
the relocation section itself.

- GAS specific:

* Add support for the RISC-V architecture.
* Add support for the ARM Cortex-M23 and Cortex-M33 processors.

- GNU ld specific:

* The EXCLUDE_FILE linker script construct can now be applied outside of the
section list in order for the exclusions to apply over all input sections
in the list.
* Add support for the RISC-V architecture.
* The command line option --no-eh-frame-hdr can now be used in ELF based
linkers to disable the automatic generation of .eh_frame_hdr sections.
* Add --in-implib= to the ARM linker to enable specifying a set of
Secure Gateway veneers that must exist in the output import library
specified by --out-implib= and the address they must have.
As such, --in-implib is only supported in combination with --cmse-implib.
* Extended the --out-implib= option, previously restricted to x86 PE
targets, to any ELF based target. This allows the generation of an import
library for an ELF executable, which can then be used by another application
to link against the executable.

- GOLD specific:

* Add -z bndplt option (x86-64 only) to support Intel MPX.
* Add --orphan-handling option.
* Add --stub-group-multi option (PowerPC only).
* Add --target1-rel, --target1-abs, --target2 options (Arm only).
* Add -z stack-size option.
* Add --be8 option (Arm only).
* Add HIDDEN support in linker scripts.
* Add SORT_BY_INIT_PRIORITY support in linker scripts.

- Other fixes:

* Fix section alignment on .gnu_debuglink. [bso#21193]
* Add s390x to gold_archs.
* Fix alignment frags for aarch64 (bsc#1003846)
* Call ldconfig for libbfd
* Fix an assembler problem with clang on ARM.
* Restore monotonically increasing section offsets.

- Update to binutils 2.27.

* Add a configure option, --enable-64-bit-archive, to force use of a
64-bit format when creating an archive symbol index.
* Add --elf-stt-common= option to objcopy for ELF targets to control
whether to convert common symbols to the STT_COMMON type.

- GAS specific:

* Default to --enable-compressed-debug-sections=gas for Linux/x86 targets.
* Add --no-pad-sections to stop the assembler from padding the end of output
sections up to their alignment boundary.
* Support for the ARMv8-M architecture has been added to the ARM port.
Support for the ARMv8-M Security and DSP Extensions has also been added
to the ARM port.
* ARC backend accepts .extInstruction, .extCondCode, .extAuxRegister, and
.extCoreRegister pseudo-ops that allow an user to define custom
instructions, conditional codes, auxiliary and core registers.
* Add a configure option --enable-elf-stt-common to decide whether ELF
assembler should generate common symbols with the STT_COMMON type by
default. Default to no.
* New command line option --elf-stt-common= for ELF targets to control
whether to generate common symbols with the STT_COMMON type.
* Add ability to set section flags and types via numeric values for ELF
based targets.
* Add a configure option --enable-x86-relax-relocations to decide whether
x86 assembler should generate relax relocations by default. Default to
yes, except for x86 Solaris targets older than Solaris 12.
* New command line option -mrelax-relocations= for x86 target to control
whether to generate relax relocations.
* New command line option -mfence-as-lock-add=yes for x86 target to encode
lfence, mfence and sfence as "lock addl $0x0, (%[re]sp)".
* Add assembly-time relaxation option for ARC cpus.
* Add --with-cpu=TYPE configure option for ARC gas. This allows the default
cpu type to be adjusted at configure time.

- GOLD specific:

* Add a configure option --enable-relro to decide whether -z relro should
be enabled by default. Default to yes.
* Add support for s390, MIPS, AArch64, and TILE-Gx architectures.
* Add support for STT_GNU_IFUNC symbols.
* Add support for incremental linking (--incremental).

- GNU ld specific:

* Add a configure option --enable-relro to decide whether -z relro should
be enabled in ELF linker by default. Default to yes for all Linux
targets except FRV, HPPA, IA64 and MIPS.
* Support for -z noreloc-overflow in the x86-64 ELF linker to disable
relocation overflow check.
* Add -z common/-z nocommon options for ELF targets to control whether to
convert common symbols to the STT_COMMON type during a relocatable link.
* Support for -z nodynamic-undefined-weak in the x86 ELF linker, which
avoids dynamic relocations against undefined weak symbols in executable.
* The NOCROSSREFSTO command was added to the linker script language.
* Add --no-apply-dynamic-relocs to the AArch64 linker to do not apply
link-time values for dynamic relocations.

This update was imported from the SUSE:SLE-12:Update update project.

Fixed bugs
fate#323972
[Toolchain Module] Summer 2017 Refresh
bnc#1056437
[Toolchain Module] Summer 2017 Refresh
bnc#1003846
aarch64: arm-trusted-firmware fails to build - binutils
bnc#1025282
binutils: ld filters/ignores valid RPATH entry
bnc#1030296
VUL-0: CVE-2014-9939: binutils: ihex.c in GNU Binutils < 2.26 stack buffer overflow
bnc#1029907
VUL-0: CVE-2017-6969: bintuils: readelf in GNU Binutils 2.28 is vulnerable to a heap-based buffer over-read
bnc#1029908
VUL-0: CVE-2017-6966: bintuils: readelf in GNU Binutils 2.28 has a use-after-free (specifically read-after-free) error
bnc#1029909
VUL-0: CVE-2017-6965: bintuils: readelf in GNU Binutils heap-based buffer overflow
bnc#1029995
elfutils fails "make check" processing on s390x
bnc#1030297
VUL-0: CVE-2017-7210: binutils: objdump in GNU Binutils 2.28 is vulnerable to multiple heap-based bufferover-reads
bnc#1030298
VUL-0: CVE-2017-7209: binutils: The dump_section_as_bytes function in readelf in GNU Binutils 2.28 reads NULL pointer
bnc#1030583
VUL-0: CVE-2017-7227: binutils: GNU linker (ld) in GNU Binutils 2.28 is vulnerable to a heap-based bufferoverflow
bnc#1030584
VUL-0: CVE-2017-7226: binutils: libbfd heap over-read
bnc#1030585
VUL-0: CVE-2017-7225: binutils: NULL pointer dereference and invalid write on find_nearest_line function
bnc#1030588
VUL-0: CVE-2017-7224: binutils: objdump find_nearest_line function invalid write leads to crash
bnc#1030589
VUL-0: CVE-2017-7223: binutils: GNU assembler global buffer overflow leading to crash
bnc#1031590
VUL-0: CVE-2017-7304: binutils: The Binary File Descriptor (BFD) library (aka libbfd) invalid read
bnc#1031593
VUL-0: CVE-2017-7303: binutils: The Binary File Descriptor (BFD) library (aka libbfd) invalid read
bnc#1031595
VUL-0: CVE-2017-7302: binutils: The Binary File Descriptor (BFD) library (aka libbfd) invalid read
bnc#1031638
VUL-0: CVE-2017-7301: binutils: The Binary File Descriptor (BFD) library (aka libbfd) off-by-one issue
bnc#1031644
VUL-0: CVE-2017-7299: binutils: The Binary File Descriptor (BFD) library (aka libbfd) invalid read out of bonds leads to crash
bnc#1031656
VUL-0: CVE-2017-7300: binutils: The Binary File Descriptor (BFD) library (aka libbfd) heap-based buffer over-read (off-by-one) issue
bnc#1033122
VUL-1: CVE-2017-7614: binutils: elflink.c in the Binary File Descriptor (BFD) library (aka libbfd) NULL pointer undefined behavior could lead to denial of service
bnc#1037052
VUL-1: CVE-2017-8392: binutils: libbfd: objdump segfault - null pointer dereferencing (_bfd_dwarf2_find_nearest_line function)
bnc#1037057
VUL-1: CVE-2017-8393: binutils: libbfd: global-buffer-overflow in objcopy (SHT_REL/SHR_RELA sections)
bnc#1037061
VUL-1: CVE-2017-8394: binutils: libbfd: Segfault in objcopy (_bfd_elf_large_com_section)
bnc#1037062
VUL-1: CVE-2017-8395: binutils: libbfd: objcopy segfault - null pointer dereferencing (_bfd_generic_get_section_contents function)
bnc#1037066
VUL-0: CVE-2017-8396: binutils: libbfd: heap buffer overflow in objdump
bnc#1037070
VUL-1: CVE-2017-8397: binutils: libbfd: heap buffer overflow in objdump
bnc#1037072
VUL-1: CVE-2017-8398: binutils: heap buffer overflow in printf_common (dwarf.c)
bnc#1037273
VUL-0: CVE-2017-8421: binutils: libbfd: leak vulnerability in objdump via a crafted PE-file
bnc#1038874
VUL-1: CVE-2017-9038: binutils: readelf heapoverflow2-byte_get_little_endian
bnc#1038875
VUL-1: CVE-2017-9039: binutils: readelf memory allocation failure
bnc#1038876
VUL-1: CVE-2017-9040: binutils: memory allocation failure
bnc#1038877
VUL-1: CVE-2017-9041: binutils: readelf-heapoverflow2-byte_get_little_endian
bnc#1038878
VUL-1: CVE-2017-9042: binutils: signed integer overflow
bnc#1038880
VUL-1: CVE-2017-9043: binutils: shift exponent 64 is too large for 64-bit type 'unsigned long'
bnc#1038881
VUL-1: CVE-2017-9044: binutils: NULLptr-print_symbol_for_build_attribute
bnc#1044891
VUL-0: CVE-2017-9746: binutils: DoS in disassemble_bytes function in objdump.c
bnc#1044897
VUL-0: CVE-2017-9747: binutils: DoS in ieee_archive_p function in bfd/ieee.c
bnc#1044901
VUL-0: CVE-2017-9748: binutils: DoS in ieee_object_p function in bfd/ieee.c
bnc#1044909
VUL-0: CVE-2017-9750: binutils: DoS in opcodes/rx-decode.opc lacks bounds checks for certain scale arrays
bnc#1044925
VUL-0: CVE-2017-9755: binutils: DoS in opcodes/i386-dis.c that does not consider the number of registers for bnd mode
bnc#1044927
VUL-0: CVE-2017-9756: binutils: DoS in aarch64_ext_ldst_reglist function in opcodes/aarch64-dis.c
bnc#1046094
VUL-1: CVE-2017-9955: binutils: DoS in get_build_id function in opncls.c
bnc#1052061
VUL-1: CVE-2017-9954: binutils: stack-based buffer over-read in getvalue function
bnc#1052496
VUL-1: CVE-2017-9954: binutils: stack-based buffer over-read in getvalue function
bnc#1052503
VUL-0: CVE-2017-12456: binutils: read_symbol_stabs_debugging_info function in rddbg.c allows remote attackers to cause an out of bounds heap read
bnc#1052507
VUL-0: CVE-2017-12454: binutils: _bfd_vms_slurp_egsd function in bfd/vms-alpha.c allows remote attackers to cause an arbitrary memory read
bnc#1052509
VUL-0: CVE-2017-12453: binutils: _bfd_vms_slurp_eeom function in libbfd.c allows remote attackers to cause an out of bounds heap read
bnc#1052511
VUL-0: CVE-2017-12452: binutils: bfd_mach_o_i386_canonicalize_one_reloc function in bfd/mach-o-i386.c allows remote attackers to cause an out of bounds heap read
bnc#1052514
VUL-0: CVE-2017-12450: binutils: alpha_vms_object_p function in bfd/vms-alpha.c allows remote attackers to cause an out of bounds heap write and possibly achieve code execution
bnc#1052518
VUL-0: CVE-2017-12448: binutils: bfd_cache_close function in bfd/cache.c allows remote attackers to cause a heap use after free and possibly achieve code execution
bnc#1053347
VUL-1: CVE-2017-12799: binutils: Heap-based 1 byte buffer over-write in elf_read_notes function in bfd/elf.c
bnc#1056312
VUL-0: CVE-2017-13757: binutils: libbfd does not validate the PLT section size
bnc#1057139
VUL-0: CVE-2017-14128: binutils: decode_line_info function in dwarf2.c allows remote attackers to cause a denial of service
bnc#1057144
VUL-0: CVE-2017-14129: binutils: read_section function in dwarf2.c allows remote attackers to cause a denial of service
bnc#1057149
VUL-0: CVE-2017-14130: binutils: _bfd_elf_parse_attributes function in elf-attrs.c allows remote attackers to cause a denial of service
bnc#1058480
VUL-0: CVE-2017-14333: binutils: The process_version_sections function in readelf.c allows attacker to cause a denial of service
bnc#1059050
VUL-0: CVE-2017-14529: binutils: pe_print_idata function in peXXigen.c allows remote attackers to cause a denial of service
bnc#1060599
VUL-0: CVE-2017-14745: binutils: The *_get_synthetic_symtab functions in the Binary File Descriptor (BFD) library(aka libbfd) integer overflow could lead to denial of service
bnc#1060621
VUL-0: CVE-2017-14729: binutils: The *_get_synthetic_symtab functions in the Binary File Descriptor (BFD) library(aka libbfd) do not ensure unique PLT entry for symbol, which could lead to denial of service
bnc#1061241
VUL-0: CVE-2017-14974: binutils: denial of service (NULL pointer dereference) in *_get_synthetic_symtab
bnc#437293
obsolete -XXbit packages during system upgrade
bnc#445037
SDK 11 is missing many 32-bit devel packages
bnc#546106
FATE 307020/201149 Full Power7 binutils enablement
bnc#561142
internal error during linking libQtWebKit (libqt4)
bnc#578249
binutils doesn't support XOP instructions
bnc#590820
binutils test case crashes
bnc#691290
2.21.0 binutils ld fails when building kvm package
bnc#698346
binutils: Linker problem on POWER7/P7 SLES11 SP1 when running Gaussian
bnc#713504
PowerPC64 xlf objects produce errors from ld
bnc#776968
VUL-1: CVE-2012-3509: binutils: libiberty integer overflow
bnc#863764
SLES 12 - Enable POWER LE kernel build with ELFv2
bnc#938658
cross-mips-binutils should not enable hash-style=gnu
bnc#970239
[openQA][20160308] Kernel 4.4.4 fails to boot in all i586 tests
Selected Binaries
openSUSE Build Service is sponsored by