Fix illegal memory access whilst parsing corrupt DWARF debug information.
[binutils-gdb.git] / binutils / README-how-to-make-a-release
index bae38485696a84169ee149fc1d00c73f78115443..7aa5efa04970701a6f4e0afb1151990ba7a43dd1 100644 (file)
@@ -24,13 +24,19 @@ How to perform a release.
      they are less busy).
 
   2. When the branch date is near:  Update the libiberty and config
-     directories and the top level configure files.
+     directories and the top level Makefile and configure files.  Also
+     consider updating the toplevel libtool files.
+
+
+Approx time to complete from here: 2 hours ....
 
   3. When branch day arrives add markers for the upcoming release to
-     the NEWS files in gas, ld, gold and binutils.
+     the NEWS files in gas, ld, and binutils.  No need to update NEWS
+     in the gold directory - it has its own release numbering.
 
      Likewise for the ChangeLog files in: bfd, binutils, config, cpu,
-     elfcpp, gas, gold, gprof, include, ld, libctf, opcodes and toplevel.
+     elfcpp, gas, gold, gprof, include, ld, libctf, libiberty, opcodes
+     and toplevel.
 
      Add a note of the name of the new branch to binutils/BRANCHES.
 
@@ -38,8 +44,8 @@ How to perform a release.
 
   4. Create the release branch using:
 
-       git branch binutils-2_33-branch
-        git push origin binutils-2_33-branch
+       git branch binutils-2_38-branch
+        git push origin binutils-2_38-branch
 
      If you get a message like:
      
@@ -49,7 +55,7 @@ How to perform a release.
 
   5. Make sure that the branch is there.  IE check out the branch sources:
   
-        git clone ssh://sourceware.org/git/binutils-gdb.git -b binutils-2_33-branch 2.33
+        git clone ssh://sourceware.org/git/binutils-gdb.git -b binutils-2_38-branch 2.38
 
      If you get a message about being in a "detached head" state, something
      has gone wrong...
@@ -71,21 +77,21 @@ How to perform a release.
      ask Joel Brobecker <brobecker AT adacore DOT com>.
 
   7. Rename the current HEAD version entry in Bugzilla, and create a
-     new one.  E.g. rename "2.33 (HEAD)" to 2.33, and create "2.34
-     (HEAD)":
+     new one.  E.g. rename "2.38 (HEAD)" to 2.38, and create
+     "2.39 (HEAD)":
      
         https://sourceware.org/bugzilla/editversions.cgi?product=binutils
 
   8. Update bfd/version.m4 on HEAD to indicate that is now a snapshot
      of the next release:
      
-       m4_define([BFD_VERSION], [2.33.51])
+       m4_define([BFD_VERSION], [2.38.50])
        
-     Update the release number in bfd/version.m4 for the branch.
+     Update the release number in bfd/version.m4 for the BRANCH.
      The branch only needs the point value set to 90 as the release
      has not actually happened yet.
 
-       m4_define([BFD_VERSION], [2.32.90])
+       m4_define([BFD_VERSION], [2.37.90])
 
      Regenerate various files on both branch and HEAD by configuring
      with "--enable-maintainer-mode --enable-gold" and then building
@@ -95,13 +101,13 @@ How to perform a release.
      Make sure that this includes the .pot files as well as the
      configure and makefiles.
 
-  8. Create an initial pre-release:
+  9. Create an initial pre-release:
 
      a. Remove any auto-generated files, in order to force the
         src-release script to rebuild them.
         
           cd <branch-sources>
-          git clean -fdx .
+          git clean -fdx
          
      b. Create a source tarball of the BRANCH sources:
 
@@ -109,58 +115,58 @@ How to perform a release.
 
      c. Build a test target using this tarball.
 
-           cp binutils-<version>.tar.xz /dev/shm
-          cd /dev/shm
-          tar xvf binutils-<version>.tar.xz
+           cp binutils-2.37.90.tar.xz /dev/shm
+          pushd /dev/shm
+          tar xvf binutils-2.36.90.tar.xz
           mkdir build
           cd build
-          ../<version>/configure --quiet --enable-gold
+          ../binutils-2.37.90/configure --quiet --enable-gold
           make
+          popd
 
         If there are problems, fix them.
 
      d. Upload the pre-release snapshot to the sourceware FTP site:
 
-          cd <branch-sources>
-          scp binutils-<version>.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
-          ssh sourceware.org md5sum ~ftp/pub/binutils/snapshots/binutils-<version>.tar.xz
+          scp binutils-2.37.90.tar.xz sourceware.org:~ftp/pub/binutils/snapshots
+          ssh sourceware.org sha256sum ~ftp/pub/binutils/snapshots/binutils-2.37.90.tar.xz
 
      e. Clean up the source directory again.
 
-         git clean -fdx .
+         git clean -fdx
 
-   9. Tell the Translation Project where to find the new tarball.
+  10. Tell the Translation Project where to find the new tarball.
       <coordinator@translationproject.org>
-      qv: http://translationproject.org/html/maintainers.html
+      qv: https://translationproject.org/html/maintainers.html
 
 ------------------------------------------------------------------------
 Dear Translation Project
 
-  The 2.3x release branch has been created for the FSF binutils.
+  The 2.38 release branch has been created for the GNU Binutils project.
 
   A snapshot of the branch sources can be found here:
 
-    https://sourceware.org/pub/binutils/snapshots/binutils-2.3x.90.tar.xz
+    https://sourceware.org/pub/binutils/snapshots/binutils-2.37.90.tar.xz
 
-  We hope to make the official release of the sources on the 8th July
+  We hope to make the official release of the sources on the <DATE>
   although that could change if there are important bugs that need to
   be fixed before the release.
 ------------------------------------------------------------------------
 
-  10. Announce the availability of the snapshot and the branch on the
+  11. Announce the availability of the snapshot and the branch on the
       binutils mailing list.  Set a date for when the release will
       actually happen.  Something like:
       
 ------------------------------------------------------------------------
 Hi Everyone, 
 
-  The 2.3x branch has now been created:
+  The <NEW_VERSION> branch has now been created:
 
-     git clone git://sourceware.org/git/binutils-gdb.git -b binutils-2_3x-branch 2.3x
+     git clone git://sourceware.org/git/binutils-gdb.git -b binutils-<NEW_VERSION>-branch
 
   A snapshot of the sources is also available here:
 
-    https://sourceware.org/pub/binutils/snapshots/binutils-2.3x.90.tar.xz
+    https://sourceware.org/pub/binutils/snapshots/binutils-<OLD_VERSION>.90.tar.xz
 
   Please could all patches for the branch be run by me.
   The rules for the branch are:
@@ -173,14 +179,15 @@ Hi Everyone,
     * Fixes for testsuite failures are OK.
 
   Ideally I would like to make the release happen in two weeks time,
-  i.e. Saturday 27th Jan.  Which I hope will be enough time for everyone
+  i.e. <DATE>.  Which I hope will be enough time for everyone
   to get their final fixes in.
 ------------------------------------------------------------------------
 
-  11. Build various different toolchains, test them and nag
+  12. Build various different toolchains, test them and nag
       maintainers to fix any testsuite failures for their
       architectures...
 
+==============================================================================
 
 When the time comes to actually make the release....
 
@@ -190,14 +197,14 @@ When the time comes to actually make the release....
       patch files (.reg .orig *~) left over.
 
          cd <branch>
-        git clean -dfx .
+        git clean -fdx
 
   21. Update the release number in bfd/version.m4 on the release
       branch to a whole new minor version number, without a point
-      value.  Eg "2.29.90" becomes "2.30".  Change bfd/development.sh
+      value.  Eg "2.37.90" becomes "2.38".  Change bfd/development.sh
       to set all values to "false".  Regenerate the configure and
       makefiles.  And *info* files.  Add ChangeLog entries for the
-      updates and add a  "this-is-the-2.3x-release" comment and
+      updates and add a  "this-is-the-2.38-release" comment and
       commit.
 
   22. Check that your file creation mask will create the
@@ -209,7 +216,7 @@ When the time comes to actually make the release....
       Remove any spurious autom4te.cache files left over from the
       reconfiguring:
 
-            % find . -depth -name autom4te.cache -exec rm -r {} \;
+            git clean -fdx
 
   23. Note - check to see if any new files have been added to the top
       level of the source directory, but which are not in the
@@ -221,26 +228,58 @@ When the time comes to actually make the release....
             ./src-release.sh -b -g -l -x binutils
 
   24. Check that the files in the tarballs have the correct
-      permissions. 
+      permissions.
+
+           tar tvf binutils-2.37.tar.bz2 | grep -e "---"
+
+      Also check that the man files are not empty.  (cf PR 28144).
+
+           tar tvf binutils-2.37.tar.xz | grep -e "\.1"
 
   25. Sanity check the release on x86_64-pc-linux-gnu by building and
       running the testsuites (gas, gold, binutils and ld).  Make the
       source directory read-only before building.  Also test
       "make install".  If necessary fix any problems.
 
+        cd /dev/shm
+       mkdir delme
+       cd delme
+       tar xvf <path-to-sources>/binutils-2.*.tar.lz
+       chmod -R -w binutils-2.*
+       mkdir build
+       cd build
+       ../binutils-2.X/configure --enable-gold --prefix=`pwd`/install --enable-plugins
+       make all-gas all-gold all-ld all-binutils all-gprof
+       make check-gas check-binutils check-ld check-gold
+        make install-gas install-gold install-ld install-binutils
+
+        # Needed for step 29...
+        make html pdf
+
   26. Tag the branch with the new release number:
 
-            git tag -a binutils-2_3x
+            git tag -a binutils-2_3x     <=== Be careful to get the tag right
+           
              [optional: add "-u XXXXX" to sign with a gpg key]
-           git push origin binutils-2_3x
+             enter a tag message such as: "Official Binutils 2.3x release"
+
+            eg: git tag -a binutils-2_37 -u DD9E3C4F
 
         NB/ If you do sign the binaries make sure to use a key
        that has been published with the FSF.
 
+        Then push the release:
+       
+           git push origin binutils-2_3x
+
+        If you get an error message along the lines of "Invalid revision range ..." you can ignore it.
+
   27. Upload the tarballs to ftp.gnu.org.
 
-       gnupload --to ftp.gnu.org:binutils binutils-2.3x.tar.*
+       gnupload --to ftp.gnu.org:binutils binutils-2.3*.tar.*
 
+      Be prepared to provide the password for the key, if you signed the binaries.
+      
       The gnupload script is in the gnulib/build-aux directory.
 
       Check for an email response from the upload.  If necessary
@@ -250,12 +289,13 @@ When the time comes to actually make the release....
 
        sftp sourceware.org
          cd /sourceware/ftp/pub/binutils/releases
-        put binutils-2.3x.tar.*
+        put binutils-2.3*.tar.*
         chmod 644 binutils-2.3x.tar.*
         quit
 
-      FIXME: Should the signatures (created by the gnupload script in
-      step 29) be uploaded as well ?
+      FIXME: Are the signatures (created by the gnupload script in step 27) needed ?
+      [The above commands upload them and nobody has complained, so suggest that they
+      are retained].
 
   29. Update web pages.  For sourceware.org:
 
@@ -266,7 +306,11 @@ When the time comes to actually make the release....
          cd /sourceware/www/sourceware/htdocs/binutils
         mkdir docs-2.3x
         cd docs-2.3x
-        mkdir as bfd binutils gprof ld
+        mkdir as
+        mkdir bfd
+        mkdir binutils
+        mkdir gprof
+        mkdir ld
         cd ../docs-2.3(x-1)
         get index.html
 
@@ -277,30 +321,50 @@ When the time comes to actually make the release....
         put index.html
 
       Make the html documentation locally with the "make html" command
-      and then upload and rename the directories as needed.  (sftp
-      does not appear to support recursive uploads however, so the
-      directories will have to be made by hand).
+      (see step 25 above).  Then upload and rename the directories as
+      needed.  (sftp does not appear to support recursive uploads
+      however, so the directories had to be made by hand, as shown above).
 
          cd as
-        lcd <build-dir>/gas/doc/as.html
-        put *
+        lcd <build-dir>/gas/doc/as
+        put *                {be patient - this takes a long time...}
+        lcd ..
+        cd ..
+        put as.html
+        put as.pdf
         cd ../bfd
-        lcd ../../../bfd/doc/bfd.html
+        lcd ../../bfd/doc/bfd
         put *
+        cd ..
+        lcd ..
+        put bfd.html
+        put bfd.pdf
         cd ../binutils
-        lcd ../../../binutils/doc/binutils.html
+        lcd ../../binutils/doc/binutils
         put *
+        cd ..
+        lcd ..
+        put binutils.html
+        put binutils.pdf
         cd ../gprof
-        lcd ../../../gprof/gprof.html
+        lcd ../../gprof/doc/gprof
         put *
+        cd ..
+        lcd ../..
+        put gprof.html
+        put gprof.pdf
         cd ../ld
-        lcd ../../ld/ld.html
+        lcd ../ld/doc/ld
         put *
+        cd ..
+        lcd ../..
+        put ld.html
+        put ld.pdf
         
       Edit the top level binutils index.html file to change the links
-      to the new documentation.
+      to point to the new documentation.
 
-         cd ../../..
+         cd ../..
         get index.html
         [edit]
         put index.html
@@ -308,14 +372,36 @@ When the time comes to actually make the release....
         ln -s docs-2.3x docs
         quit
 
-      Check that the new web page is correct.
-
+      Check that the new web page is correct:
+      
+          https://sourceware.org/binutils/
+         
       For the www.gnu.org site you have to email webmasters@gnu.org
-      and ask them to make the change(s).
+      and ask them to make the change(s):
+---------------------------------------
+Hi FSF Webmasters,
+
+  Please could the GNU Binutils webpage at:
+
+https://www.gnu.org/software/binutils/binutils.html
+
+  be updated to indicate that there is now a newer version available
+  (2.3x).  I have already updated the related page on the sourceware
+  website so this might be useful as a template:
+
+https://sourceware.org/binutils/
+
+  Thanks very much.
+
+Cheers
+--------------------------------------  
 
   30. Send emails to binutils@sourceware.org, info-gnu@gnu.org and
       David Edelsohn <dje.gcc@gmail.com> announcing the new release.
-      Sign the email and include the checksum.
+      Sign the email and include the checksum:
+
+          sha256sum binutils-2.3*.tar.*
+
       (The email to Davis is so that he can update the GNU Toolchain
       social media).  Something like this:
       -----------------------------------------------------------------------
@@ -329,13 +415,13 @@ When the time comes to actually make the release....
 
           checksums: xxxx
 
-       This release contains numerous bug fixes, and also the
-       following new features:
+        This release contains numerous bug fixes, and also the
+        following new features:
 
           <extract info from the NEWS files>
 
-       Our thanks go out to all of the binutils contributors, past and
-       present, for helping to make this release possible.
+        Our thanks go out to all of the binutils contributors, past and
+        present, for helping to make this release possible.
 
       -----------------------------------------------------------------------
 
@@ -350,16 +436,19 @@ When the time comes to actually make the release....
       Regenerate files.  Commit these changes.
 
   33. Email the binutils list telling everyone that the 2.3x branch
-      is now open for business as usual and that patched no longer
+      is now open for business as usual and that patches no longer
       need special approval.
 
-  34. Examine the bfd/config.bfd file and move any pending obsolete
-      targets into the definitely obsolete section.  Create a
-      changelog entry and commit.
-      
--------------------------------------------------
-How to perform a point release.
--------------------------------------------------
+  34. Examine the bfd/config.bfd file in the mainline sources and move
+      any pending obsolete targets into the definitely obsolete
+      section.  Create a changelog entry and commit.
+
+
+
+
+--------------------------------------------------------------------------
+How to perform a POINT release.
+--------------------------------------------------------------------------
 
 A point release is easier than a normal release since a lot of the
 work has already been done.  The branch has been created, the
@@ -389,42 +478,43 @@ looks like this:
        a. Update the minor release number in bfd/version.m4.
        b. Edit bfd/development.sh, set "development=false".
        c. Regenerate the configure files.
-       c.1. Remove spurious autom4te.cache files:
+       d. Remove spurious autom4te.cache files:
 
-          find . -depth -name autom4te.cache -exec rm -r {} \;
+          git clean -fdx
          
-       d. Commit the updates along with a "this-is-the-2.3x.y-release"
+       e. Commit the updates along with a "this-is-the-2.3x.y-release"
           note in all of the changelogs.
-       e. Tag the branch with the new release number:
+       f. Tag the branch with the new release number:
 
             git tag -a binutils-2_3x_y
              [optional: add "-u XXXXX" to sign with a gpg key]
            git push origin binutils-2_3x_y
 
-       f. Check that your file creation mask will create the
-          correct file permissions.  Eg:
+       g. Check that your file creation mask will create the
+          correct file permissions.  Ie:
 
            umask 022
 
-       g. Create the release tarballs:
+       h. Create the release tarballs:
        
             ./src-release -b -g -l -x binutils
 
-       h. Check that the files in the tarballs have the correct
+       i. Check that the files in the tarballs have the correct
           permissions.
 
-       i. Edit bfd/development.sh and set "development=true".
-       j. Commit this change into the git repository.
-       k. Clean up the source tree.
+       j. Clean the source tree again
        
-            git clean -dfx .
+           git clean -fdx
+         
+       k. Edit bfd/development.sh and set "development=true".
+       l. Commit this change.
 
   4. [If paranoid - upload the tarballs to one of the FTP servers and
       ask people to test it before going on to step 5].
 
   5. Upload the tarballs to ftp.gnu.org.
 
-       gnupload --to ftp.gnu.org:binutils binutils-2.3x.y.tar.*
+       gnupload --to ftp.gnu.org:binutils binutils-*.tar.*
 
      The gnupload script is in the gnulib/build-aux directory.
 
@@ -432,8 +522,8 @@ looks like this:
 
        sftp sourceware.org
          cd /sourceware/ftp/pub/binutils/releases
-        put binutils-2.3x.y.tar.*
-        chmod 644 binutils-2.3x.y.tar.*
+        put binutils-*.tar.*
+        chmod 644 binutils-*.tar.*
         quit
 
     It is OK to upload the signatures as well.
@@ -442,7 +532,7 @@ looks like this:
 
       * Log on to sourceware.org
       * Go to /sourceware/www/sourceware/htdocs/binutils
-      * Edit index.html
+      * Edit index.html and update the latest release number (if this is a latest release)
 
       For the www.gnu.org site you have to email webmasters@gnu.org
       and ask them to make the change(s).
@@ -451,6 +541,7 @@ looks like this:
      David Edelsohn <dje.gcc@gmail.com> announcing the new release.
      (The email to Davis is so that he can update the GNU Toolchain
      social media).  Something like this:
+
 ------------------------------------------------------------------------
 Hi Everyone,
 
@@ -473,8 +564,15 @@ Hi Everyone,
     xx
 --------------------------------------------------------------------------
 
+  9. Create a new Bugzilla entry for the point release.
+     
+       https://sourceware.org/bugzilla/editversions.cgi?product=binutils
+
+     And a new milestone too:
+
+       https://sourceware.org/bugzilla/editmilestones.cgi?product=binutils
 \f
-Copyright (C) 2017-2019 Free Software Foundation, Inc.
+Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright