This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR other/79543] Fix GNU ld --version scanning to conform to the GNU Coding Standards


On 2017/10/31 8:17 AM, Joseph Myers wrote:
Specifically,*non-release*  versions of binutils predating my patch

commit 066c2a57f5858310c9f12518317aecd4b54e753d
Author: Joseph Myers<joseph@codesourcery.com>
Date:   Thu Mar 1 15:48:36 2007 +0000

would have had a space between the binutils version number and the BFD
datestamp and the end of the first line of --version output.  That would
not have been an issue for release versions, and the stray word "version"
before the version number before that patch would not cause problems for
the simplified sed expressions.

Applying the following patch (that is, simplying the sed command), makes
the problem go away:

     -sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
     +sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
While I think working properly for binutils versions in the past ten years
matters more than any issues with old non-release versions that probably
wouldn't work with current GCC anyway, it seems to me that this patch
would require*something*  surrounded by spaces between "GNU ld" and the
version number.  If you configure with --without-pkgversion, you get e.g.

GNU ld 2.28

as the complete first line of the output, and that doesn't look like it
would match the above pattern, as there's only one space not two between
"GNU ld" and the version number.  So I think you need a pattern that does
allow the --without-pkgversion form of output.

Bringing back this issue, as this is still bothering our OpenACC toolchains.

If the main variance in format was the 2007 ' ' to '.' change for non-release
binutils builds, then is the attached patch okay?

What the patch does is to first look for an 8-digit part at the end
(preceded by either a space or '.'), chop it off if it exists, and then take the last
space-preceded string.

This matching logic does appear to be more reliant on the aforementioned
GNU standard of 'everything after the last space on the first line of the output'.
OTOH, not sure if all the testing for GNU gold, GNU ld, etc. in the current
sed pattern means much since this is already under $with_gnu_ld=yes.

(seeking approval for trunk and all active release branches)

Thanks,
Chung-Lin

2019-07-04  Chung-Lin Tang <cltang@codesourcery.com>

        libatomic/
        PR other/79543
        * acinclude.m4 (LIBAT_CHECK_LINKER_FEATURES): Fix GNU ld --version
        scanning to conform to the GNU Coding Standards.
        * configure: Regenerate.

        libffi/
        PR other/79543
        * acinclude.m4 (LIBAT_CHECK_LINKER_FEATURES): Fix GNU ld --version
        scanning to conform to the GNU Coding Standards.
        * configure: Regenerate.

        libgomp/
        PR other/79543
        * acinclude.m4 (LIBGOMP_CHECK_LINKER_FEATURES): Fix GNU ld --version
        scanning to conform to the GNU Coding Standards.
        * configure: Regenerate.

        libitm/
        PR other/79543
        * acinclude.m4 (LIBITM_CHECK_LINKER_FEATURES): Fix GNU ld --version
        scanning to conform to the GNU Coding Standards.
        * configure: Regenerate.

        libstdc++-v3/
        PR other/79543
        * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld --version
        scanning to conform to the GNU Coding Standards.
        * configure: Regenerate.

Attachment: pr79543-v2.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]