https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117110

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:384faebde257b0b5a0aa334718ef1b645d4c8d1e

commit r15-4345-g384faebde257b0b5a0aa334718ef1b645d4c8d1e
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Oct 15 07:50:35 2024 +0200

    genmatch: Revert recent genmatch changes, instead add custom diag_vfprintf
routine [PR117110]

    My recent changes to genmatch apparently broke bootstrap on FreeBSD
    and Darwin and perhaps others, and also broke $build != $host
    builds including canadian cross.

    The change was to link in libcommon.a into build/genmatch, so that
    we can use pp_format_verbatim.  Unfortunately that has various
    dependencies in libcommon.a, and more importantly, libcommon.a is
    a host library, while build/genmatch carefully links with build/vec.o
    etc., build version of libcpp.
    So, in order to use pretty-print.o stuff, we'd need to build a build/
    version of all those objects and worse ensure there is and we properly
    link build version of libintl and/or libiconv when needed (those 2 are
    the reasons for FreeBSD/Darwin failures).

    The following patch just reverts those changes and instead adds a very
    simple variant of gcc_diag style vfprintf, which prints the result
    directly into a stream.
    We don't need anything fancy, like UTF-8 quotes, colors, URLs, in the
    usual case genmatch shouldn't print anything at all.
    The patch implements what pretty-print.cc implements, except the fancy
    stuff (no colors, no URLs printed, quotes always printed just as
    'something', strings even in %qs printed normally rather than trying to
    pass through ASCII and valid UTF-8 and use <80><35> style printing for the
    rest) and except %@ and %e (neither libcpp nor genmatch.cc use those
    currently and they need extra structures etc. which aren't used in libcpp
    at all).  It handles both "%.*s %d" and "%3$.*2$s %1$d" styles just in case
    something got translated (although at least the cross-compiler and stage1
    genmatch shouldn't be translating anything, but stage2+ native can).

    I've tested it with hacking up most of pretty-print.cc self-tests
    to just use warning_at ((location_t) 1, ...) and doing manual verification
    of what was printed vs. what was expected (with a few additions for the
    %M$ style formats); as it goes into a FILE * directly, I'm afraid
self-tests
    of this aren't easily possible.

    2024-10-15  Jakub Jelinek  <ja...@redhat.com>

            PR bootstrap/117110
            * Makefile.in (generated_files, generated_match_files,
            build/genmatch$(build_exeext), LINKER_FOR_BUILD): Revert
            2024-10-12 changes.
            * genmatch.cc: Don't include pretty-print.h and input.h.
            (fatal, ggc_internal_cleared_alloc, ggc_free, line_table,
            linemap_client_expand_location_to_spelling_point): Revert
            2024-10-12 changes.
            (DIAG_ARGMAX): Define.
            (diag_integer_with_precision): Define.
            (diag_vfprintf): New function.
            (diagnostic_cb): Use diag_vfprintf instead of pp_format_verbatim.
            (output_line_directive): Revert 2024-10-12 changes.

Reply via email to