From Fedora Project Wiki
(Created page with " = Changes/Binutils_2.36 = == Summary == Rebase the binutils package from version 2.35.1 to version 2.36. == Owner == * Name: Nick Clifton [https://fedoraproject.org/wiki/U...")
 
(Add trackers)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:


= Changes/Binutils_2.36 =
= Changes/Binutils 2.36 =


== Summary ==
== Summary ==
Line 11: Line 11:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF35]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 18: Line 18:
[[Category:SystemWideChange]]
[[Category:SystemWideChange]]


* Targeted release: Fedora 34
* Targeted release: Fedora 35
* Last updated: <!-- this is an automatic macro — you don't need to change this line -->  {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}  
* Last updated: <!-- this is an automatic macro — you don't need to change this line -->  {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Line 27: Line 27:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/2529 #2529]
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1920226 #1920226]
* Release notes tracker: <will be assigned by the Wrangler>
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/641 #641]


== Detailed Description ==
== Detailed Description ==
Line 134: Line 134:
== Contingency Plan ==
== Contingency Plan ==


<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism:
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? N/A (not a System Wide Change), Yes/No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? product <!-- Applicable for Changes that blocks specific product release/Fedora.next -->
Revert to the 2.35.1 binutils as currently used in rawhide.  This work can be done by me, should it prove necessary.
Revert to the 2.35.1 binutils as currently used in rawhide.  This work can be done by me, should it prove necessary.
* Contingency deadline: Beta freeze.
* Blocks release? No
* Blocks product? None


== Documentation ==
== Documentation ==
Line 156: Line 156:
     * Removed --reduce-memory-overheads and --hash-size as gas now
     * Removed --reduce-memory-overheads and --hash-size as gas now
       uses hash tables that can be expand and shrink automatically.
       uses hash tables that can be expand and shrink automatically.
     X86/x86_64:
     X86/x86_64:
       * Add support for AVX VNNI, HRESET, UINTR, TDX, AMX and Key
       * Add support for AVX VNNI, HRESET, UINTR, TDX, AMX and Key
Line 163: Line 162:
       * Add {disp16} pseudo prefix to x86 assembler.
       * Add {disp16} pseudo prefix to x86 assembler.
       * Configure with --enable-x86-used-note by default for Linux/x86.
       * Configure with --enable-x86-used-note by default for Linux/x86.
     
     ARM/AArch64:
     ARM/AArch64:
       * Add support for Cortex-A78, Cortex-A78AE and Cortex-X1,
       * Add support for Cortex-A78, Cortex-A78AE and Cortex-X1,
Line 182: Line 180:
       * Add support for +pauth (Pointer Authentication) feature for
       * Add support for +pauth (Pointer Authentication) feature for
         -march in AArch64.
         -march in AArch64.


     New features in the Linker:
     New features in the Linker:
   
       * Add --error-handling-script=<NAME> command line option to allow
       * Add --error-handling-script=<NAME> command line option to allow
         a helper script to be invoked when an undefined symbol or a
         a helper script to be invoked when an undefined symbol or a
         missing library is encountered.  This option can be suppressed
         missing library is encountered.  This option can be suppressed
         via the configure time switch: --enable-error-handling-script=no.
         via the configure time switch: --enable-error-handling-script=no.
       * Add -z x86-64-{baseline|v[234]} to the x86 ELF linker to mark
       * Add -z x86-64-{baseline|v[234]} to the x86 ELF linker to mark
         x86-64-{baseline|v[234]} ISA level as needed.
         x86-64-{baseline|v[234]} ISA level as needed.
       * Add -z unique-symbol to avoid duplicated local symbol names.
       * Add -z unique-symbol to avoid duplicated local symbol names.
       * The creation of PE format DLLs now defaults to using a more
       * The creation of PE format DLLs now defaults to using a more
         secure set of DLL characteristics.
         secure set of DLL characteristics.
       * The linker now deduplicates the types in .ctf sections.  The new  
       * The linker now deduplicates the types in .ctf sections.  The new  
         command-line option --ctf-share-types describes how to do this:
         command-line option --ctf-share-types describes how to do this:
         its default value, share-unconflicted, produces the most compact
         its default value, share-unconflicted, produces the most compact
         output.
         output.
       * The linker now omits the "variable section" from .ctf sections
       * The linker now omits the "variable section" from .ctf sections
         by default, saving space.  This is almost certainly what you
         by default, saving space.  This is almost certainly what you
Line 211: Line 202:


   New features in other binary tools:
   New features in other binary tools:
       * The ar tool's previously unused l modifier is now used for
       * The ar tool's previously unused l modifier is now used for
         specifying dependencies of a static library. The arguments of
         specifying dependencies of a static library. The arguments of
Line 217: Line 207:
         stored verbatim in the __.LIBDEP member of the archive, which
         stored verbatim in the __.LIBDEP member of the archive, which
         the linker may read at link time.
         the linker may read at link time.
       * Readelf can now display the contents of LTO symbol table
       * Readelf can now display the contents of LTO symbol table
         sections when asked to do so via the --lto-syms command line
         sections when asked to do so via the --lto-syms command line
         option.
         option.
       * Readelf now accepts the -C command line option to enable the
       * Readelf now accepts the -C command line option to enable the
         demangling of symbol names.  In addition the --demangle=<style>,
         demangling of symbol names.  In addition the --demangle=<style>,
         --no-demangle, --recurse-limit and --no-recurse-limit options
         --no-demangle, --recurse-limit and --no-recurse-limit options
         are also now availale.
         are also now available.
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)


== Release Notes ==
== Release Notes ==

Latest revision as of 20:17, 25 January 2021

Changes/Binutils 2.36

Summary

Rebase the binutils package from version 2.35.1 to version 2.36.

Owner

  • Name: Nick Clifton [1]
  • Email: nickc@redhat.com

Current status

  • Targeted release: Fedora 35
  • Last updated: 2021-01-25
  • FESCo issue: #2529
  • Tracker bug: #1920226
  • Release notes tracker: #641

Detailed Description

Switch the binutils package from being based on the 2.35.1 release of the GNU binutils to being based on the 2.36 release. This release will bring in numerous bug fixes, as well as support for new x86 and ARM architecture extensions.

Feedback

Benefit to Fedora

The main benefit will be the bug fixes and the improvements to the linker and assembler. Whilst invisible to ordinary users these changes will benefit package maintainers and application developers.

Scope

  • Proposal owners:

Change the source parameter in the binutils.spec rpm and adjust the local patches to take account of the bugs that are now already fixed. This is a significant change to the underlying tools used to build Fedora and so there should be a mass rebuild in order for the changes to be noticed across the system.

  • Other developers: None

A mass rebuilt will be required.

  • Policies and guidelines: No documents need to be updated.
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives:

The rebase of the binutils will bring with it improved support for smaller architectures (eg ARM, RISC-V, MIPS) which in turn will align with the Fedora Internet of Things objective.

Upgrade/compatibility impact

The binutils are backwards compatible with previous releases, so no changes should be necessary.

How To Test

The binutils package does include its own set of testsuites which check basic functionality. The real test however is by rebuilding other packages which depend upon the binutils, or more likely, upon gcc. If these packages continue to work then the binutils update has not broken anything.

User Experience

The change should not be noticeable to the user.

Dependencies

This update has no hard dependencies on any other package. There are other packages that do depend upon the binutils however. Most notably gcc and redhat-rpm-config.


Contingency Plan

  • Contingency mechanism:

Revert to the 2.35.1 binutils as currently used in rawhide. This work can be done by me, should it prove necessary.

  • Contingency deadline: Beta freeze.
  • Blocks release? No
  • Blocks product? None

Documentation

This rebase brings with it many bug fixes, plus the following notable new features:

  New features in the Assembler:
   
   General:
    * When setting the link order attribute of ELF sections, it is now
      possible to use a numeric section index instead of symbol name.
    * Added a .nop directive to generate a single no-op instruction in
      a target neutral manner.  This instruction does have an effect on
      DWARF line number generation, if that is active.
    * Removed --reduce-memory-overheads and --hash-size as gas now
      uses hash tables that can be expand and shrink automatically.
    X86/x86_64:
      * Add support for AVX VNNI, HRESET, UINTR, TDX, AMX and Key
        Locker instructions. 
      * Support non-absolute segment values for lcall and ljmp.
      * Add {disp16} pseudo prefix to x86 assembler.
      * Configure with --enable-x86-used-note by default for Linux/x86.
    ARM/AArch64:
      * Add support for Cortex-A78, Cortex-A78AE and Cortex-X1,
        Cortex-R82, Neoverse V1, and Neoverse N2 cores.
      * Add support for ETMv4 (Embedded Trace Macrocell), ETE (Embedded
        Trace Extension), TRBE (Trace Buffer Extension), CSRE (Call
        Stack Recorder Extension) and BRBE (Branch Record Buffer
        Extension) system registers.
      * Add support for Armv8-R and Armv8.7-A ISA extensions.
      * Add support for DSB memory nXS barrier, WFET and WFIT
        instruction for Armv8.7.
      * Add support for +csre feature for -march. Add CSR PDEC
        instruction for CSRE feature in AArch64.
      * Add support for +flagm feature for -march in Armv8.4 AArch64.
      * Add support for +ls64 feature for -march in Armv8.7
        AArch64. Add atomic 64-byte load/store instructions for this
        feature. 
      * Add support for +pauth (Pointer Authentication) feature for
        -march in AArch64.
   New features in the Linker:
     * Add --error-handling-script=<NAME> command line option to allow
       a helper script to be invoked when an undefined symbol or a
       missing library is encountered.  This option can be suppressed
       via the configure time switch: --enable-error-handling-script=no.
     * Add -z x86-64-{baseline|v[234]} to the x86 ELF linker to mark
       x86-64-{baseline|v[234]} ISA level as needed.
     * Add -z unique-symbol to avoid duplicated local symbol names.
     * The creation of PE format DLLs now defaults to using a more
       secure set of DLL characteristics.
     * The linker now deduplicates the types in .ctf sections.  The new 
        command-line option --ctf-share-types describes how to do this:
        its default value, share-unconflicted, produces the most compact
        output.
     * The linker now omits the "variable section" from .ctf sections
       by default, saving space.  This is almost certainly what you
       want unless you are working on a project that has its own
       analogue of symbol tables that are not reflected in the ELF
       symtabs.
 New features in other binary tools:
     * The ar tool's previously unused l modifier is now used for
       specifying dependencies of a static library. The arguments of
       this option (or --record-libdeps long form option) will be
       stored verbatim in the __.LIBDEP member of the archive, which
       the linker may read at link time.
     * Readelf can now display the contents of LTO symbol table
       sections when asked to do so via the --lto-syms command line
       option.
     * Readelf now accepts the -C command line option to enable the
       demangling of symbol names.  In addition the --demangle=<style>,
       --no-demangle, --recurse-limit and --no-recurse-limit options
       are also now available.

Release Notes