Skip to content
Snippets Groups Projects
  1. Jul 14, 2023
  2. Jul 13, 2023
    • Lehua Ding's avatar
      mklog: Add --append option to auto add generate ChangeLog to patch file · 7f0700a6
      Lehua Ding authored
      
      This tiny patch add --append option to mklog.py that support add generated
      change-log to the corresponding patch file. With this option there is no need
      to manually copy the generated change-log to the patch file. e.g.:
      
      Run `mklog.py --append /path/to/this/patch` will add the generated change-log
      to the right place of the /path/to/this/patch file.
      
      contrib/ChangeLog:
      
      	* mklog.py: Add --append option.
      
      Signed-off-by: default avatarLehua Ding <lehua.ding@rivai.ai>
      7f0700a6
  3. Jul 08, 2023
  4. Jul 07, 2023
    • Richard Biener's avatar
      Closing the GCC 10 branch · 8bebf97f
      Richard Biener authored
      contrib/
      	* gcc-changelog/git_update_version.py: Remove GCC 10 from
      	active_refs.
      
      maintainer-scripts/
      	* crontab: Remove entry for GCC 10.
      8bebf97f
  5. Jun 23, 2023
  6. Jun 22, 2023
    • David Malcolm's avatar
      diagnostics: add support for "text art" diagrams · 4f01ae37
      David Malcolm authored
      
      Existing text output in GCC has to be implemented by writing
      sequentially to a pretty_printer instance.  This makes it
      hard to implement some kinds of diagnostic output (see e.g.
      diagnostic-show-locus.cc).
      
      This patch adds more flexible ways of creating text output:
      - a canvas class, which can be "painted" to via random-access (rather
      that sequentially)
      - a table class for 2D grid layout, supporting items that span
      multiple rows/columns
      - a widget class for organizing diagrams hierarchically.
      
      The patch also expands GCC's diagnostics subsystem so that diagnostics
      can have "text art" diagrams - think ASCII art, but potentially
      including some Unicode characters, such as box-drawing chars.
      
      The new code is in a new "gcc/text-art" subdirectory and "text_art"
      namespace.
      
      The patch adds a new "-fdiagnostics-text-art-charset=VAL" option, with
      values:
      - "none": don't emit diagrams (added to -fdiagnostics-plain-output)
      - "ascii": use pure ASCII in diagrams
      - "unicode": allow for conservative use of unicode drawing characters
      (such as box-drawing characters).
      - "emoji" (the default): as "unicode", but potentially allow for
      conservative use of emoji in the output (such as U+26A0 WARNING SIGN).
      I made it possible to disable emoji separately from unicode as I believe
      there's a generation gap in acceptance of these characters (some older
      programmers have a visceral reaction against them, whereas younger
      programmers may have no problem with them).
      
      Diagrams are emitted to stderr by default.  With SARIF output they are
      captured as a location in "relatedLocations", with the diagram as a
      code block in Markdown within a "markdown" property of a message.
      
      This patch doesn't add any such diagram usage to GCC, saving that for
      followups, apart from adding a plugin to the test suite to exercise the
      functionality.
      
      contrib/ChangeLog:
      	* unicode/gen-box-drawing-chars.py: New file.
      	* unicode/gen-combining-chars.py: New file.
      	* unicode/gen-printable-chars.py: New file.
      
      gcc/ChangeLog:
      	* Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
      	text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
      	text-art/style.o, text-art/styled-string.o, text-art/table.o,
      	text-art/theme.o, and text-art/widget.o.
      	* color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
      	(COLOR_FG_BRIGHT_RED): New.
      	(COLOR_FG_BRIGHT_GREEN): New.
      	(COLOR_FG_BRIGHT_YELLOW): New.
      	(COLOR_FG_BRIGHT_BLUE): New.
      	(COLOR_FG_BRIGHT_MAGENTA): New.
      	(COLOR_FG_BRIGHT_CYAN): New.
      	(COLOR_FG_BRIGHT_WHITE): New.
      	(COLOR_BG_BRIGHT_BLACK): New.
      	(COLOR_BG_BRIGHT_RED): New.
      	(COLOR_BG_BRIGHT_GREEN): New.
      	(COLOR_BG_BRIGHT_YELLOW): New.
      	(COLOR_BG_BRIGHT_BLUE): New.
      	(COLOR_BG_BRIGHT_MAGENTA): New.
      	(COLOR_BG_BRIGHT_CYAN): New.
      	(COLOR_BG_BRIGHT_WHITE): New.
      	* common.opt (fdiagnostics-text-art-charset=): New option.
      	(diagnostic-text-art.h): New SourceInclude.
      	(diagnostic_text_art_charset) New Enum and EnumValues.
      	* configure: Regenerate.
      	* configure.ac (gccdepdir): Add text-art to loop.
      	* diagnostic-diagram.h: New file.
      	* diagnostic-format-json.cc (json_emit_diagram): New.
      	(diagnostic_output_format_init_json): Wire it up to
      	context->m_diagrams.m_emission_cb.
      	* diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
      	"text-art/canvas.h".
      	(sarif_result::on_nested_diagnostic): Move code to...
      	(sarif_result::add_related_location): ...this new function.
      	(sarif_result::on_diagram): New.
      	(sarif_builder::emit_diagram): New.
      	(sarif_builder::make_message_object_for_diagram): New.
      	(sarif_emit_diagram): New.
      	(diagnostic_output_format_init_sarif): Set
      	context->m_diagrams.m_emission_cb to sarif_emit_diagram.
      	* diagnostic-text-art.h: New file.
      	* diagnostic.cc: Include "diagnostic-text-art.h",
      	"diagnostic-diagram.h", and "text-art/theme.h".
      	(diagnostic_initialize): Initialize context->m_diagrams and
      	call diagnostics_text_art_charset_init.
      	(diagnostic_finish): Clean up context->m_diagrams.m_theme.
      	(diagnostic_emit_diagram): New.
      	(diagnostics_text_art_charset_init): New.
      	* diagnostic.h (text_art::theme): New forward decl.
      	(class diagnostic_diagram): Likewise.
      	(diagnostic_context::m_diagrams): New field.
      	(diagnostic_emit_diagram): New decl.
      	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
      	-fdiagnostics-text-art-charset=.
      	(-fdiagnostics-plain-output): Add
      	-fdiagnostics-text-art-charset=none.
      	* gcc.cc: Include "diagnostic-text-art.h".
      	(driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
      	* opts-common.cc (decode_cmdline_options_to_array): Add
      	"-fdiagnostics-text-art-charset=none" to expanded_args for
      	-fdiagnostics-plain-output.
      	* opts.cc: Include "diagnostic-text-art.h".
      	(common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
      	* pretty-print.cc (pp_unicode_character): New.
      	* pretty-print.h (pp_unicode_character): New decl.
      	* selftest-run-tests.cc: Include "text-art/selftests.h".
      	(selftest::run_tests): Call text_art_tests.
      	* text-art/box-drawing-chars.inc: New file, generated by
      	contrib/unicode/gen-box-drawing-chars.py.
      	* text-art/box-drawing.cc: New file.
      	* text-art/box-drawing.h: New file.
      	* text-art/canvas.cc: New file.
      	* text-art/canvas.h: New file.
      	* text-art/ruler.cc: New file.
      	* text-art/ruler.h: New file.
      	* text-art/selftests.cc: New file.
      	* text-art/selftests.h: New file.
      	* text-art/style.cc: New file.
      	* text-art/styled-string.cc: New file.
      	* text-art/table.cc: New file.
      	* text-art/table.h: New file.
      	* text-art/theme.cc: New file.
      	* text-art/theme.h: New file.
      	* text-art/types.h: New file.
      	* text-art/widget.cc: New file.
      	* text-art/widget.h: New file.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic-test-text-art-ascii-bw.c: New test.
      	* gcc.dg/plugin/diagnostic-test-text-art-ascii-color.c: New test.
      	* gcc.dg/plugin/diagnostic-test-text-art-none.c: New test.
      	* gcc.dg/plugin/diagnostic-test-text-art-unicode-bw.c: New test.
      	* gcc.dg/plugin/diagnostic-test-text-art-unicode-color.c: New test.
      	* gcc.dg/plugin/diagnostic_plugin_test_text_art.c: New test plugin.
      	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add them.
      
      libcpp/ChangeLog:
      	* charset.cc (get_cppchar_property): New function template, based
      	on...
      	(cpp_wcwidth): ...this function.  Rework to use the above.
      	Include "combining-chars.inc".
      	(cpp_is_combining_char): New function
      	Include "printable-chars.inc".
      	(cpp_is_printable_char): New function
      	* combining-chars.inc: New file, generated by
      	contrib/unicode/gen-combining-chars.py.
      	* include/cpplib.h (cpp_is_combining_char): New function decl.
      	(cpp_is_printable_char): New function decl.
      	* printable-chars.inc: New file, generated by
      	contrib/unicode/gen-printable-chars.py.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      4f01ae37
  7. Jun 18, 2023
  8. Jun 17, 2023
    • Thiago Jung Bauermann's avatar
      [contrib] validate_failures.py: Don't consider summary line in wrong place · 8955eed3
      Thiago Jung Bauermann authored
      When parsing a summary or manifest file, if we're not either after a tool
      line (e.g. "=== gdb tests ===") or before a summary line (e.g.,
      "=== gdb Summary ===") then the current line can't be a valid result line
      so ignore it.
      
      This addresses a problem we're seeing when running the GDB testsuite in
      our CI environment where it produces a valid summary file, but then after
      the "=== gdb Summary ===" section it outputs a series of Tcl errors that
      match _VALID_TEST_RESULTS_REX and thus confuse the parsing logic:
      
      05: 14:32 .sum file seems to be broken: tool="None", exp="None", summary_line="ERROR: -------------------------------------------"
      05: 14:32 Traceback (most recent call last):
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 706, in <module>
      05: 14:32     retval = Main(sys.argv)
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 697, in Main
      05: 14:32     retval = CheckExpectedResults()
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 572, in CheckExpectedResults
      05: 14:32     actual = GetResults(sum_files)
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 447, in GetResults
      05: 14:32     build_results.update(ParseSummary(sum_fname))
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 389, in ParseSummary
      05: 14:32     result = result_set.MakeTestResult(line, ordinal)
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 236, in MakeTestResult
      05: 14:32     return TestResult(summary_line, ordinal,
      05: 14:32   File "/path/to/gcc/contrib/testsuite-management/validate_failures.py", line 148, in __init__
      05: 14:32     raise
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (IsInterestingResult):
      	Add result_set argument and use it.  Adjust callers.
      8955eed3
  9. Jun 15, 2023
  10. Jun 14, 2023
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Ignore stray filesystem paths in results · 9ef1391d
      Maxim Kuvyrkov authored
      This patch simplifies comparison of results that have filesystem
      paths.  E.g., (assuming different values of <N>):
      <cut>
      Running /home/user/gcc-N/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp ...
      ERROR: tcl error sourcing /home/user/gcc-N/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp.
      </cut>
      
      We add "--srcpath <regex>", option, and set it by default to
      "[^ ]+/testsuite/", which works well for all components of the GNU
      Toolchain.  We then remove substrings matching <regex> from paths of
      .exp files and from occasional "ERROR:" results.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (TestResult,)
      	(ParseManifestWorker, ParseSummary, Main): Handle new option
      	"--srcpath <regex>".
      9ef1391d
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Add "--expiry_date YYYYMMDD" option · 316b1d66
      Maxim Kuvyrkov authored
      This option sets "today" date to compare expiration entries against.
      Setting expiration date into the future allows re-detection of flaky
      tests and creating fresh entries for them before the current flaky
      entries expire.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (TestResult): Update.
      	(Main): Handle new option "--expiry_date YYYYMMDD".
      316b1d66
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Add new option --invert_match · 22a0ade8
      Maxim Kuvyrkov authored
      This option is used to detect flaky tests that FAILed in the clean
      build (or manifest), but PASSed in the current build (or manifest).
      
      The option inverts output logic similar to what "-v/--invert-match"
      does for grep.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (ResultSet.update,)
      	(ResultSet.HasTestsuite): New methods.
      	(GetResults): Update.
      	(ParseSummary, CompareResults, PerformComparison, Main): Handle new
      	option --invert_match.
      22a0ade8
    • Thiago Bauermann's avatar
      [contrib] validate_failures.py: Improve error output · 7aa47751
      Thiago Bauermann authored
      - Print message in case of broken sum file error.
      - Print error messages to stderr.  The script's stdout is, usually,
        redirected to a file, and error messages shouldn't go there.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (TestResult): Improve error
      	output.
      7aa47751
    • Christophe Lyon's avatar
      [contrib] validate_failures.py: Support "$tool:" prefix in exp names · 484a4864
      Christophe Lyon authored
      This makes it easier to extract the $tool:$exp pair when iterating
      over failures/flaky tests, which, in turn, simplifies re-running
      testsuite parts that have unexpected failures or passes.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (_EXP_LINE_FORMAT,)
      	(_EXP_LINE_REX, ResultSet): Support "$tool:" prefix in exp names.
      484a4864
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Use exit code "2" to indicate regression · 5d52f355
      Maxim Kuvyrkov authored
      ... in the results.  Python exits with code "1" on exceptions and
      internal errors, which we use to detect failure to parse results.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (Main): Use exit code "2"
      	to indicate regression.
      5d52f355
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Be more stringent in parsing result lines · d4d776a3
      Maxim Kuvyrkov authored
      Before this patch we would identify malformed line
      "UNRESOLVEDTest run by tcwg-buildslave on Mon Aug 23 10:17:50 2021"
      as an interesting result, only to fail in TestResult:__init__ due
      to missing ":" after UNRESOLVED.
      
      This patch makes all places that parse result lines use a single
      compiled regex.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (_VALID_TEST_RESULTS_REX):
      	Update.
      	(TestResult): Use _VALID_TEST_RESULTS_REX.
      d4d776a3
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Add more verbosity levels · e341d15b
      Maxim Kuvyrkov authored
      ... to control validate_failures.py output
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py: Add more verbosity levels.
      e341d15b
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Simplify GetManifestPath() · febe56cb
      Maxim Kuvyrkov authored
      ... and don't require a valid build directory when no data from it
      is necessary.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py: Simplify GetManifestPath().
      febe56cb
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Read in manifest when comparing build dirs · 5f8cc7f0
      Maxim Kuvyrkov authored
      This allows comparison of two build directories with a manifest
      listing known flaky tests on the side.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (GetResults): Update.
      	(CompareBuilds): Read in manifest.
      5f8cc7f0
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Support expiry attributes in manifests · b713de1c
      Maxim Kuvyrkov authored
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py (ParseManifestWorker):
      	Support expiry attributes in manifests.
      	(ParseSummary): Add a comment.
      b713de1c
    • Maxim Kuvyrkov's avatar
      [contrib] validate_failures.py: Avoid testsuite aliasing · c8558627
      Maxim Kuvyrkov authored
      This patch adds tracking of current testsuite "tool" and "exp"
      to the processing of .sum files.  This avoids aliasing between
      tests from different testsuites with same name+description.
      
      E.g., this is necessary for testsuite/c-c++-common, which is ran
      for both gcc and g++ "tools".
      
      This patch changes manifest format from ...
      <cut>
      FAIL: gcc_test
      FAIL: g++_test
      </cut>
      ... to ...
      <cut>
      		=== gcc tests ===
      Running gcc/foo.exp ...
      FAIL: gcc_test
      		=== gcc Summary ==
      		=== g++ tests ===
      Running g++/bar.exp ...
      FAIL: g++_test
      		=== g++ Summary ==
      </cut>.
      
      The new format uses same formatting as DejaGnu's .sum files
      to specify which "tool" and "exp" the test belongs to.
      
      contrib/ChangeLog:
      
      	* testsuite-management/validate_failures.py: Avoid testsuite
      	aliasing.
      c8558627
    • GCC Administrator's avatar
      Daily bump. · 532fb120
      GCC Administrator authored
      532fb120
  11. Jun 13, 2023
    • Andi Kleen's avatar
      Update perf auto profile script · 950fa855
      Andi Kleen authored
      - Fix gen_autofdo_event: The download URL for the Intel Perfmon Event
        list has changed, as well as the JSON format.
        Also it now uses pattern matching to match CPUs. Update the script to support all of this.
      - Regenerate gcc-auto-profile with the latest published Intel model
        numbers, so it works with recent systems.
      - So far it's still broken on hybrid systems
      
      contrib/ChangeLog:
      
      	* gen_autofdo_event.py: Update for download server changes
      
      gcc/ChangeLog
      
      	* config/i386/gcc-auto-profile: Regenerate.
      950fa855
  12. Jun 04, 2023
  13. Jun 03, 2023
  14. May 19, 2023
  15. May 18, 2023
    • Jonathan Wakely's avatar
      contrib: Fix nonportable shell syntax in "test" and "[" commands [PR105831] · 120e4449
      Jonathan Wakely authored
      POSIX sh does not support the == for string comparisons, use = instead.
      
      These contrib scripts all use a bash shebang so == does work, but
      there's no reason they can't just use the more portable form anyway.
      
      	PR bootstrap/105831
      
      contrib/ChangeLog:
      
      	* bench-stringop: Use = operator instead of ==.
      	* repro_fail: Likewise.
      
      contrib/reghunt/ChangeLog:
      
      	* bin/reg-hunt: Use = operator instead of ==.
      120e4449
  16. Apr 29, 2023
  17. Apr 28, 2023
  18. Apr 27, 2023
  19. Apr 26, 2023
  20. Apr 18, 2023
  21. Apr 17, 2023
    • Jakub Jelinek's avatar
      Update crontab and git_update_version.py · f46ab321
      Jakub Jelinek authored
      2023-04-17  Jakub Jelinek  <jakub@redhat.com>
      
      maintainer-scripts/
      	* crontab: Snapshots from trunk are now GCC 14 related.
      	Add GCC 13 snapshots from the respective branch.
      contrib/
      	* gcc-changelog/git_update_version.py (active_refs): Add
      	releases/gcc-13.
      f46ab321
  22. Mar 17, 2023
  23. Mar 16, 2023
    • Jakub Jelinek's avatar
      contrib: Update instructions regarding Unicode updates · 63b25b80
      Jakub Jelinek authored
      I've noticed we have instructions on how to update from newer Unicode
      standard, but it didn't mention uname2c.h regeneration.
      
      The following patch mentions that, also mentions that the Copyright years
      of Unicode should be updated and adds a copy of NameAliases.txt which
      is used for uname2c.h generation.
      
      2023-03-16  Jakub Jelinek  <jakub@redhat.com>
      
      	* unicode/README: Update to mention also makeuname2c.
      	* unicode/NameAliases.txt: New file.
      63b25b80
  24. Mar 14, 2023
  25. Mar 13, 2023
    • Lewis Hyatt's avatar
      libcpp: Update cpp_wcwidth() to Unicode 15 · 73dd5c6c
      Lewis Hyatt authored
      Updates cpp_wcwidth() to Unicode 15, following the procedure in
      contrib/unicode/README mechanically without incident.
      
      contrib/ChangeLog:
      
      	* unicode/DerivedCoreProperties.txt: Update to Unicode 15.
      	* unicode/DerivedNormalizationProps.txt: Likewise.
      	* unicode/EastAsianWidth.txt: Likwise.
      	* unicode/PropList.txt: Likewise.
      	* unicode/README: Likewise.
      	* unicode/UnicodeData.txt: Likewise.
      
      libcpp/ChangeLog:
      
      	* generated_cpp_wcwidth.h: Regenerated for Unicode 15.
      73dd5c6c
  26. Feb 23, 2023
  27. Feb 22, 2023
    • Thomas Schwinge's avatar
      In 'contrib/config-list.mk', clarify i686-symbolics-gnu to i686-gnu · 10f08513
      Thomas Schwinge authored
      Already in the first revision of 'contrib/config-list.mk', i686-symbolics-gnu
      has been present, but it's not clear to me whether that was meant to be
      Symbolics as in the manufacturer, <https://en.wikipedia.org/wiki/Symbolics>,
      with GNU (that is, GNU/Hurd) kernel/operating system (user land), or Symbolics
      kernel with GNU operating system (user land)?
      
      I can't find any mention of "Symbolics" in the history of 'config.sub'
      upstream.
      
      Either way, GCC configures i686-symbolics-gnu exactly the same as i686-gnu:
      
          $ sed -n -e '/Using .* host machine hooks\.$/q' -e '/^Using the following target machine macro files:$/,$p' log/i686-gnu-make.out
          Using the following target machine macro files:
                  [...]/gcc/config/vxworks-dummy.h
                  [...]/gcc/config/i386/i386.h
                  [...]/gcc/config/i386/unix.h
                  [...]/gcc/config/i386/att.h
                  [...]/gcc/config/elfos.h
                  [...]/gcc/config/gnu-user.h
                  [...]/gcc/config/glibc-stdint.h
                  [...]/gcc/config/i386/gnu-user-common.h
                  [...]/gcc/config/i386/gnu-user.h
                  [...]/gcc/config/gnu.h
                  [...]/gcc/config/i386/gnu.h
                  [...]/gcc/config/initfini-array.h
      
      ..., so let's clarify i686-symbolics-gnu to i686-gnu.
      
      	contrib/
      	* config-list.mk (LIST): Clarify i686-symbolics-gnu to i686-gnu.
      10f08513
  28. Feb 18, 2023
Loading