aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-03-22 21:58:02 +0000
committerGitHub <noreply@github.com>2022-03-22 21:58:02 +0000
commit1d34c120c4754b921ac0520585cfef0e7a0bbb29 (patch)
tree45eafa2571825ef662ff91e575f35263261ece7e
parentfb886737e23eef762c8c164c53168ebfd86e9435 (diff)
parentf0b5ac2e821924f5c2288daac32db311d262369c (diff)
downloadgcc-1d34c120c4754b921ac0520585cfef0e7a0bbb29.zip
gcc-1d34c120c4754b921ac0520585cfef0e7a0bbb29.tar.gz
gcc-1d34c120c4754b921ac0520585cfef0e7a0bbb29.tar.bz2
Merge #1026
1026: Enable -Werror r=tschwinge a=CastilloDel Fixes #694 - \[x] GCC development requires copyright assignment or the Developer's Certificate of Origin sign-off, see https://gcc.gnu.org/contribute.html or https://gcc.gnu.org/dco.html - \[x] Read contributing guidelines - \[ ] `make check-rust` passes locally - \[ ] Run `clang-format` - \[ ] Added any relevant test cases to `gcc/testsuite/rust/` The last three ones shouldn't be necessary for this change. --- Update the CI to use the bootstrap build process and enable -Werror Signed-off-by: Daniel del Castillo <delcastillodelarosadaniel@gmail.com> Co-authored-by: CastilloDel <delcastillodelarosadaniel@gmail.com> Co-authored-by: Thomas Schwinge <thomas@codesourcery.com>
-rw-r--r--.github/bors_log_expected_warnings128
-rw-r--r--.github/workflows/ccpp.yml18
-rw-r--r--README.md39
3 files changed, 184 insertions, 1 deletions
diff --git a/.github/bors_log_expected_warnings b/.github/bors_log_expected_warnings
new file mode 100644
index 0000000..0ab3eba
--- /dev/null
+++ b/.github/bors_log_expected_warnings
@@ -0,0 +1,128 @@
+../../../../libffi/src/x86/ffi.c:612:1: warning: label ‘out’ defined but not used [-Wunused-label]
+../../../../libssp/ssp.c:172:11: warning: array subscript 0 is outside array bounds of ‘volatile int[0]’ [-Warray-bounds]
+../../../libcpp/expr.cc:808:18: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libcpp/expr.cc:811:39: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libcpp/expr.cc:821:34: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libcpp/macro.cc:186:23: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libcpp/macro.cc:215:24: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libcpp/macro.cc:3701:58: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libcpp/macro.cc:3716:58: warning: format not a string literal and no format arguments [-Wformat-security]
+../../../libffi/src/java_raw_api.c:317:3: warning: ‘ffi_java_raw_to_ptrarray’ is deprecated [-Wdeprecated-declarations]
+../../../libffi/src/java_raw_api.c:328:3: warning: ‘ffi_java_raw_size’ is deprecated [-Wdeprecated-declarations]
+../../../libffi/src/java_raw_api.c:331:3: warning: ‘ffi_java_ptrarray_to_raw’ is deprecated [-Wdeprecated-declarations]
+../../../libffi/src/java_raw_api.c:369:3: warning: ‘ffi_prep_java_raw_closure_loc’ is deprecated [-Wdeprecated-declarations]
+../../../libffi/src/x86/ffi64.c:783:1: warning: label ‘out’ defined but not used [-Wunused-label]
+../../../libffi/src/x86/ffiw64.c:250:1: warning: label ‘out’ defined but not used [-Wunused-label]
+../../../libssp/ssp.c:172:11: warning: array subscript 0 is outside array bounds of ‘volatile int[0]’ [-Warray-bounds]
+../../c++tools/server.cc:486:11: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../c++tools/server.cc:616:10: warning: ignoring return value of ‘int pipe(int*)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/../libgcc/libgcov-util.c:465:9: warning: ignoring return value of ‘int chdir(const char*)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/analyzer/engine.cc:1521:3: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/engine.cc:1521:60: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/program-state.cc:1252:20: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/analyzer/sm-file.cc:181:34: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-file.cc:181:70: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-file.cc:231:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-file.cc:231:63: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-file.cc:234:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-file.cc:234:59: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:1023:36: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:1023:61: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:1193:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:1193:67: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:1196:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:1196:69: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:1199:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:1200:28: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:1269:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:1269:66: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:1277:31: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:1277:66: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:795:7: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:796:24: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:796:54: warning: format ‘%s’ expects argument of type ‘char*’, but argument 4 has type ‘diagnostic_event_id_t*’ [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:801:7: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:802:23: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:859:34: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:859:70: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-malloc.cc:930:34: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-malloc.cc:930:76: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/analyzer/sm-sensitive.cc:138:34: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/analyzer/sm-sensitive.cc:139:22: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/c-family/c-common.cc:6580:30: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/c-family/c-common.cc:6584:33: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/c/c-convert.cc:84:31: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/c/c-typeck.cc:11850:42: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/c/c-typeck.cc:3689:28: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/c/c-typeck.cc:4448:42: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/c/c-typeck.cc:6616:43: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/collect-utils.cc:237:37: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/collect2.cc:2397:37: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/config/i386/i386.cc:21446:32: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/config/i386/i386.cc:21446:32: warning: unknown conversion type character ‘{’ in format [-Wformat=]
+../../gcc/config/i386/i386.cc:21446:32: warning: unknown conversion type character ‘}’ in format [-Wformat=]
+../../gcc/config/i386/i386.cc:2535:8: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/config/i386/i386.cc:2535:8: warning: unknown conversion type character ‘{’ in format [-Wformat=]
+../../gcc/config/i386/i386.cc:2535:8: warning: unknown conversion type character ‘}’ in format [-Wformat=]
+../../gcc/diagnostic.cc:2021:52: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/fold-const.cc:305:42: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/gcc.cc:10560:12: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/gcc.cc:7776:9: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/gcc.cc:7779:13: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/gcc.cc:7780:13: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/gcc.cc:7782:9: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/genhooks.cc:112:17: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/genhooks.cc:121:14: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/genhooks.cc:174:14: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/genhooks.cc:180:14: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/gimple-range-gori.cc:411:22: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/gimple-ssa-warn-access.cc:3954:15: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/gimple-ssa-warn-access.cc:3962:11: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/ipa-devirt.cc:951:47: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/lto-wrapper.cc:1131:8: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/lto-wrapper.cc:1376:52: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/lto-wrapper.cc:1957:35: warning: format not a string literal and no format arguments [-Wformat-security]
+../../gcc/lto/lto-common.cc:2072:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/lto/lto-common.cc:2074:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/lto/lto-common.cc:2094:10: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
+../../gcc/omp-low.cc:10527:19: warning: ‘T’ conversion used within a quoted sequence [-Wformat=]
+../../gcc/omp-offload.cc:2241:22: warning: ‘T’ conversion used within a quoted sequence [-Wformat=]
+../../gcc/omp-offload.cc:2279:22: warning: ‘T’ conversion used within a quoted sequence [-Wformat=]
+../../gcc/tree-diagnostic-path.cc:177:21: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/tree-diagnostic-path.cc:177:24: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/tree-diagnostic-path.cc:177:28: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘diagnostic_event_id_t*’ [-Wformat=]
+../../gcc/tree-diagnostic-path.cc:467:12: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘diagnostic_event_id_t*’ [-Wformat=]
+../../gcc/tree-diagnostic-path.cc:467:7: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/tree-diagnostic-path.cc:467:9: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/tree-diagnostic-path.cc:68:21: warning: too many arguments for format [-Wformat-extra-args]
+../../gcc/tree-diagnostic-path.cc:68:23: warning: unknown conversion type character ‘@’ in format [-Wformat=]
+../../gcc/tree-diagnostic-path.cc:68:26: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘diagnostic_event_id_t*’ [-Wformat=]
+../../gcc/tree-ssa-sccvn.cc:280:67: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/expr.cc:808:18: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/expr.cc:811:39: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/expr.cc:821:34: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/macro.cc:186:23: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/macro.cc:215:24: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/macro.cc:3701:58: warning: format not a string literal and no format arguments [-Wformat-security]
+../../libcpp/macro.cc:3716:58: warning: format not a string literal and no format arguments [-Wformat-security]
+/home/runner/work/gccrs/gccrs/gccrs-build/x86_64-pc-linux-gnu/32/libssp/../../../../libssp/gets-chk.c:74: warning: the `gets' function is dangerous and should not be used.
+/home/runner/work/gccrs/gccrs/gccrs-build/x86_64-pc-linux-gnu/libssp/../../../libssp/gets-chk.c:74: warning: the `gets' function is dangerous and should not be used.
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:864: warning: ignoring old recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+Makefile:873: warning: overriding recipe for target 'all-multi'
+gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
+gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
+gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
+gengtype-lex.cc:357:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
+libtool: install: warning: remember to run `libtool --finish /usr/local/libexec/gcc/x86_64-pc-linux-gnu/12.0.1'
diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml
index 50ef728..5e9e5f4 100644
--- a/.github/workflows/ccpp.yml
+++ b/.github/workflows/ccpp.yml
@@ -11,6 +11,10 @@ on:
jobs:
build-and-check:
+ env:
+ # Force locale, in particular for reproducible results re '.github/bors_log_expected_warnings' (see below).
+ LC_ALL: C.UTF-8
+
runs-on: ubuntu-latest
steps:
@@ -44,9 +48,21 @@ jobs:
--enable-multilib
- name: Build
+ shell: bash
run: |
cd gccrs-build; \
- make -j $(nproc)
+ make -j $(nproc) 2>&1 | tee log
+
+ - name: Check for new warnings
+ run: |
+ cd gccrs-build
+ < log grep 'warning: ' | sort > log_warnings
+ if diff -U0 ../.github/bors_log_expected_warnings log_warnings; then
+ :
+ else
+ echo 'See <https://github.com/Rust-GCC/gccrs/pull/1026>.'
+ exit 1
+ fi >&2
- name: Run Tests
run: |
diff --git a/README.md b/README.md
index 5c8307f..9675b11 100644
--- a/README.md
+++ b/README.md
@@ -202,6 +202,45 @@ Please see the [Contributing to GCC](https://gcc.gnu.org/contribute.html) guide
Not all contributions must be code; we would love to see new test cases or bugs and issues to be reported.
Feel free to add any comments on open PRs
+
+## Continuous Integration
+
+When submitting (or updating) a [GitHub Pull Request](https://github.com/Rust-GCC/gccrs/pull/),
+several automated checks are run.
+Generally, a "green status" is necessary before merge.
+
+
+### Compiler Diagnostics
+
+That is, here, diagnostics emitted by the "initial" compiler used to build GCC/Rust.
+
+If building a native toolchain,
+GCC by default does a 3-stage bootstrap build (<https://gcc.gnu.org/install/configure.html>).
+In addition to making sure that GCC is able to reproduce itself bit-by-bit,
+this also means that stages 2+ are built with `-Werror`
+(turning most _warning_ into _error_ diagnostics; see `--enable-werror`,
+possibly enabled by default).
+This helps to catch a good number of bugs, because it enforces that GCC compiles without compiler diagnostics;
+it's a requirement for upstream patch submission (<https://gcc.gnu.org/contribute.html#testing>).
+
+GCC generally is only expected to be "warning-clean" without `--disable-bootstrap`
+(that is, default `--enable-bootstrap` for a native build),
+and not for the initial stage where it's using the "initial" compiler -- otherwise
+we're at the mercy of whatever "initial" compiler we're using.
+Doing a `--disable-bootstrap` build is much faster, of course, so we're often doing that:
+for example, per the instructions above, or in the standard CI.
+With that, we're missing out on the aspect that _enforces that GCC compiles without compiler diagnostics_.
+
+To encounter that, the default CI has a [_check for new warnings_ step](https://github.com/Rust-GCC/gccrs/pull/1026)
+that verifies in the CI `--disable-bootstrap` build configuration that no new warnings are introduced.
+If that step fails, it usually points out a new _warning_ you've introduced erroneously, and should address.
+Occasionally it means that simply the `.github/bors_log_expected_warnings` file needs to be updated,
+for example if due to any kind of "environmental changes" (for example, CI "initial" compiler changes).
+Unless diligently reproducing the CI configuration (in particular "initial" compiler, GCC version),
+it's not really feasible to reproduce this check locally.
+If in doubt, do a local `--enable-bootstrap` build, or submit your changes, and wait for the CI system's results.
+
+
## Community
We can be found on all usual Rust channels such as Zulip, but we also have our own channels: