From 5bd6fe122c0bdaff15295fdbb27707a17a0103c8 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 22 Feb 2022 09:01:20 -0800 Subject: [PATCH 1/4] Error even w/warnings disabled for no-return fcns A function whose prototype says it will return a value but doesn't is undefined behaviour in C++. GCC 10 will generate code that crashes in this case. In warnings==None mode, insterad of turning off all warnings with `-w`, explicitly list all G++ possible warnings except for the `no-return` warning which catches this programming error. --- platform.txt | 4 +- tools/gcc-no-warnings | 209 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 211 insertions(+), 2 deletions(-) create mode 100644 tools/gcc-no-warnings diff --git a/platform.txt b/platform.txt index ead29507f5..0792374cdc 100644 --- a/platform.txt +++ b/platform.txt @@ -21,8 +21,8 @@ runtime.tools.mkdir={runtime.platform.path}/tools/mkdir.py runtime.tools.cp={runtime.platform.path}/tools/cp.py runtime.tools.eboot={runtime.platform.path}/bootloaders/eboot/eboot.elf -compiler.warning_flags=-w -Werror=return-type -compiler.warning_flags.none=-w -Werror=return-type +compiler.warning_flags=@{runtime.platform.path}/tools/gcc-no-warnings -Werror=return-type +compiler.warning_flags.none=@{runtime.platform.path}/tools/gcc-no-warnings -Werror=return-type compiler.warning_flags.default=-Werror=return-type compiler.warning_flags.more=-Wall -Werror=return-type compiler.warning_flags.all=-Wall -Wextra -Werror=return-type diff --git a/tools/gcc-no-warnings b/tools/gcc-no-warnings new file mode 100644 index 0000000000..08101bc87f --- /dev/null +++ b/tools/gcc-no-warnings @@ -0,0 +1,209 @@ +-Wno-abi +-Wno-abi-tag +-Wno-address +-Wno-address-of-packed-member +-Wno-aggregate-return +-Wno-aggressive-loop-optimizations +-Wno-alloc-zero +-Wno-alloca +-Wno-analyzer-malloc-leak +-Wno-analyzer-null-argument +-Wno-analyzer-null-dereference +-Wno-analyzer-possible-null-argument +-Wno-analyzer-possible-null-dereference +-Wno-analyzer-stale-setjmp-buffer +-Wno-analyzer-tainted-array-index +-Wno-analyzer-too-complex +-Wno-analyzer-unsafe-call-within-signal-handler +-Wno-arith-conversion +-Wno-array-bounds +-Wno-attribute-alias +-Wno-attribute-warning +-Wno-attributes +-Wno-bool-compare +-Wno-bool-operation +-Wno-builtin-declaration-mismatch +-Wno-builtin-macro-redefined +-Wno-c++0x-compat +-Wno-c++11-compat +-Wno-c++14-compat +-Wno-c++17-compat +-Wno-c++1z-compat +-Wno-c++20-compat +-Wno-c++2a-compat +-Wno-cannot-profile +-Wno-cast-align +-Wno-cast-qual +-Wno-catch-value +-Wno-char-subscripts +-Wno-chkp +-Wno-class-conversion +-Wno-class-memaccess +-Wno-clobbered +-Wno-comma-subscript +-Wno-comment +-Wno-comments +-Wno-conditionally-supported +-Wno-conversion +-Wno-conversion-null +-Wno-coverage-mismatch +-Wno-cpp +-Wno-ctor-dtor-privacy +-Wno-dangling-else +-Wno-date-time +-Wno-delete-incomplete +-Wno-delete-non-virtual-dtor +-Wno-deprecated +-Wno-deprecated-copy +-Wno-deprecated-copy-dtor +-Wno-deprecated-declarations +-Wno-disabled-optimization +-Wno-div-by-zero +-Wno-double-promotion +-Wno-duplicated-branches +-Wno-duplicated-cond +-Wno-effc++ +-Wno-empty-body +-Wno-endif-labels +-Wno-enum-compare +-Wno-expansion-to-defined +-Wno-extra +-Wno-extra-semi +-Wno-hsa +-Wno-if-not-aligned +-Wno-ignored-attributes +-Wno-ignored-qualifiers +-Wno-inaccessible-base +-Wno-inherited-variadic-ctor +-Wno-init-list-lifetime +-Wno-init-self +-Wno-inline +-Wno-int-in-bool-context +-Wno-int-to-pointer-cast +-Wno-invalid-memory-model +-Wno-invalid-offsetof +-Wno-invalid-pch +-Wno-literal-suffix +-Wno-logical-not-parentheses +-Wno-logical-op +-Wno-long-long +-Wno-lto-type-mismatch +-Wno-main +-Wno-maybe-uninitialized +-Wno-memset-elt-size +-Wno-memset-transposed-args +-Wno-misleading-indentation +-Wno-mismatched-tags +-Wno-missing-attributes +-Wno-missing-braces +-Wno-missing-declarations +-Wno-missing-include-dirs +-Wno-missing-noreturn +-Wno-missing-profile +-Wno-multichar +-Wno-multiple-inheritance +-Wno-multistatement-macros +-Wno-namespaces +-Wno-narrowing +-Wno-noexcept +-Wno-noexcept-type +-Wno-non-virtual-dtor +-Wno-nonnull +-Wno-nonnull-compare +-Wno-normalized +-Wno-null-dereference +-Wno-odr +-Wno-old-style-cast +-Wno-openmp-simd +-Wno-overflow +-Wno-overlength-strings +-Wno-overloaded-virtual +-Wno-packed +-Wno-packed-bitfield-compat +-Wno-packed-not-aligned +-Wno-padded +-Wno-parentheses +-Wno-pedantic +-Wno-pessimizing-move +-Wno-placement-new +-Wno-pmf-conversions +-Wno-pointer-arith +-Wno-pointer-compare +-Wno-pragmas +-Wno-prio-ctor-dtor +-Wno-psabi +-Wno-redundant-decls +-Wno-redundant-move +-Wno-redundant-tags +-Wno-register +-Wno-reorder +-Wno-restrict +-Wno-return-local-addr +-Wno-scalar-storage-order +-Wno-sequence-point +-Wno-shadow +-Wno-shadow-compatible-local +-Wno-shadow-local +-Wno-shift-count-negative +-Wno-shift-count-overflow +-Wno-shift-negative-value +-Wno-shift-overflow +-Wno-sign-compare +-Wno-sign-conversion +-Wno-sign-promo +-Wno-sized-deallocation +-Wno-sizeof-array-argument +-Wno-sizeof-pointer-div +-Wno-sizeof-pointer-memaccess +-Wno-stack-protector +-Wno-strict-aliasing +-Wno-strict-null-sentinel +-Wno-strict-overflow +-Wno-string-compare +-Wno-stringop-overflow +-Wno-stringop-truncation +-Wno-subobject-linkage +-Wno-suggest-override +-Wno-switch +-Wno-switch-bool +-Wno-switch-default +-Wno-switch-enum +-Wno-switch-outside-range +-Wno-switch-unreachable +-Wno-sync-nand +-Wno-synth +-Wno-system-headers +-Wno-tautological-compare +-Wno-templates +-Wno-terminate +-Wno-trampolines +-Wno-trigraphs +-Wno-type-limits +-Wno-undef +-Wno-uninitialized +-Wno-unknown-pragmas +-Wno-unreachable-code +-Wno-unsafe-loop-optimizations +-Wno-unused +-Wno-unused-but-set-parameter +-Wno-unused-but-set-variable +-Wno-unused-const-variable +-Wno-unused-label +-Wno-unused-local-typedefs +-Wno-unused-macros +-Wno-unused-parameter +-Wno-unused-result +-Wno-unused-value +-Wno-unused-variable +-Wno-useless-cast +-Wno-varargs +-Wno-variadic-macros +-Wno-vector-operation-performance +-Wno-virtual-inheritance +-Wno-virtual-move-assign +-Wno-vla +-Wno-volatile +-Wno-volatile-register-var +-Wno-write-strings +-Wno-zero-as-null-pointer-constant +-Wno-zero-length-bounds From 086b9c90f727b062d5de268c134bb4a05c3cbef2 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 22 Feb 2022 18:30:27 -0800 Subject: [PATCH 2/4] Use different lists for GCC vs G++ G++ and GCC have different warning options, so use different lists. --- platform.txt | 16 ++-- tools/gcc-no-warnings | 209 ------------------------------------------ tools/no-warnings-g++ | 53 +++++++++++ tools/no-warnings-gcc | 66 +++++++++++++ 4 files changed, 127 insertions(+), 217 deletions(-) delete mode 100644 tools/gcc-no-warnings create mode 100644 tools/no-warnings-g++ create mode 100644 tools/no-warnings-gcc diff --git a/platform.txt b/platform.txt index 0792374cdc..39414b988b 100644 --- a/platform.txt +++ b/platform.txt @@ -21,11 +21,11 @@ runtime.tools.mkdir={runtime.platform.path}/tools/mkdir.py runtime.tools.cp={runtime.platform.path}/tools/cp.py runtime.tools.eboot={runtime.platform.path}/bootloaders/eboot/eboot.elf -compiler.warning_flags=@{runtime.platform.path}/tools/gcc-no-warnings -Werror=return-type -compiler.warning_flags.none=@{runtime.platform.path}/tools/gcc-no-warnings -Werror=return-type -compiler.warning_flags.default=-Werror=return-type -compiler.warning_flags.more=-Wall -Werror=return-type -compiler.warning_flags.all=-Wall -Wextra -Werror=return-type +compiler.warning_flags=@{runtime.platform.path}/tools/no-warnings- +compiler.warning_flags.none=@{runtime.platform.path}/tools/no-warnings- +compiler.warning_flags.default=-D__COMPILER= +compiler.warning_flags.more=-Wall -D__COMPILER= +compiler.warning_flags.all=-Wall -Wextra -D__COMPILER= build.lwip_lib=-llwip_gcc build.lwip_include=lwip/include @@ -68,18 +68,18 @@ compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_S compiler.libraries.ldflags= compiler.c.cmd=xtensa-lx106-elf-gcc -compiler.c.flags=-c {compiler.warning_flags} -std=gnu17 {build.stacksmash_flags} -Os -g -free -fipa-pta -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} +compiler.c.flags=-c {compiler.warning_flags}gcc -std=gnu17 {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} compiler.S.cmd=xtensa-lx106-elf-gcc compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls "-I{runtime.tools.xtensa-lx106-elf-gcc.path}/include/" -compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{build.path}" "-L{compiler.libc.path}/lib" "-Tlocal.eagle.flash.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read +compiler.c.elf.flags=-g {compiler.warning_flags}gcc -Os -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{build.path}" "-L{compiler.libc.path}/lib" "-Tlocal.eagle.flash.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read compiler.c.elf.cmd=xtensa-lx106-elf-gcc compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -lbearssl -lespnow -lsmartconfig -lairkiss -lwpa2 {build.stdcpp_lib} -lm -lc -lgcc compiler.cpp.cmd=xtensa-lx106-elf-g++ -compiler.cpp.flags=-c {compiler.warning_flags} {build.stacksmash_flags} -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} +compiler.cpp.flags=-c {compiler.warning_flags}g++ {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} compiler.as.cmd=xtensa-lx106-elf-as diff --git a/tools/gcc-no-warnings b/tools/gcc-no-warnings deleted file mode 100644 index 08101bc87f..0000000000 --- a/tools/gcc-no-warnings +++ /dev/null @@ -1,209 +0,0 @@ --Wno-abi --Wno-abi-tag --Wno-address --Wno-address-of-packed-member --Wno-aggregate-return --Wno-aggressive-loop-optimizations --Wno-alloc-zero --Wno-alloca --Wno-analyzer-malloc-leak --Wno-analyzer-null-argument --Wno-analyzer-null-dereference --Wno-analyzer-possible-null-argument --Wno-analyzer-possible-null-dereference --Wno-analyzer-stale-setjmp-buffer --Wno-analyzer-tainted-array-index --Wno-analyzer-too-complex --Wno-analyzer-unsafe-call-within-signal-handler --Wno-arith-conversion --Wno-array-bounds --Wno-attribute-alias --Wno-attribute-warning --Wno-attributes --Wno-bool-compare --Wno-bool-operation --Wno-builtin-declaration-mismatch --Wno-builtin-macro-redefined --Wno-c++0x-compat --Wno-c++11-compat --Wno-c++14-compat --Wno-c++17-compat --Wno-c++1z-compat --Wno-c++20-compat --Wno-c++2a-compat --Wno-cannot-profile --Wno-cast-align --Wno-cast-qual --Wno-catch-value --Wno-char-subscripts --Wno-chkp --Wno-class-conversion --Wno-class-memaccess --Wno-clobbered --Wno-comma-subscript --Wno-comment --Wno-comments --Wno-conditionally-supported --Wno-conversion --Wno-conversion-null --Wno-coverage-mismatch --Wno-cpp --Wno-ctor-dtor-privacy --Wno-dangling-else --Wno-date-time --Wno-delete-incomplete --Wno-delete-non-virtual-dtor --Wno-deprecated --Wno-deprecated-copy --Wno-deprecated-copy-dtor --Wno-deprecated-declarations --Wno-disabled-optimization --Wno-div-by-zero --Wno-double-promotion --Wno-duplicated-branches --Wno-duplicated-cond --Wno-effc++ --Wno-empty-body --Wno-endif-labels --Wno-enum-compare --Wno-expansion-to-defined --Wno-extra --Wno-extra-semi --Wno-hsa --Wno-if-not-aligned --Wno-ignored-attributes --Wno-ignored-qualifiers --Wno-inaccessible-base --Wno-inherited-variadic-ctor --Wno-init-list-lifetime --Wno-init-self --Wno-inline --Wno-int-in-bool-context --Wno-int-to-pointer-cast --Wno-invalid-memory-model --Wno-invalid-offsetof --Wno-invalid-pch --Wno-literal-suffix --Wno-logical-not-parentheses --Wno-logical-op --Wno-long-long --Wno-lto-type-mismatch --Wno-main --Wno-maybe-uninitialized --Wno-memset-elt-size --Wno-memset-transposed-args --Wno-misleading-indentation --Wno-mismatched-tags --Wno-missing-attributes --Wno-missing-braces --Wno-missing-declarations --Wno-missing-include-dirs --Wno-missing-noreturn --Wno-missing-profile --Wno-multichar --Wno-multiple-inheritance --Wno-multistatement-macros --Wno-namespaces --Wno-narrowing --Wno-noexcept --Wno-noexcept-type --Wno-non-virtual-dtor --Wno-nonnull --Wno-nonnull-compare --Wno-normalized --Wno-null-dereference --Wno-odr --Wno-old-style-cast --Wno-openmp-simd --Wno-overflow --Wno-overlength-strings --Wno-overloaded-virtual --Wno-packed --Wno-packed-bitfield-compat --Wno-packed-not-aligned --Wno-padded --Wno-parentheses --Wno-pedantic --Wno-pessimizing-move --Wno-placement-new --Wno-pmf-conversions --Wno-pointer-arith --Wno-pointer-compare --Wno-pragmas --Wno-prio-ctor-dtor --Wno-psabi --Wno-redundant-decls --Wno-redundant-move --Wno-redundant-tags --Wno-register --Wno-reorder --Wno-restrict --Wno-return-local-addr --Wno-scalar-storage-order --Wno-sequence-point --Wno-shadow --Wno-shadow-compatible-local --Wno-shadow-local --Wno-shift-count-negative --Wno-shift-count-overflow --Wno-shift-negative-value --Wno-shift-overflow --Wno-sign-compare --Wno-sign-conversion --Wno-sign-promo --Wno-sized-deallocation --Wno-sizeof-array-argument --Wno-sizeof-pointer-div --Wno-sizeof-pointer-memaccess --Wno-stack-protector --Wno-strict-aliasing --Wno-strict-null-sentinel --Wno-strict-overflow --Wno-string-compare --Wno-stringop-overflow --Wno-stringop-truncation --Wno-subobject-linkage --Wno-suggest-override --Wno-switch --Wno-switch-bool --Wno-switch-default --Wno-switch-enum --Wno-switch-outside-range --Wno-switch-unreachable --Wno-sync-nand --Wno-synth --Wno-system-headers --Wno-tautological-compare --Wno-templates --Wno-terminate --Wno-trampolines --Wno-trigraphs --Wno-type-limits --Wno-undef --Wno-uninitialized --Wno-unknown-pragmas --Wno-unreachable-code --Wno-unsafe-loop-optimizations --Wno-unused --Wno-unused-but-set-parameter --Wno-unused-but-set-variable --Wno-unused-const-variable --Wno-unused-label --Wno-unused-local-typedefs --Wno-unused-macros --Wno-unused-parameter --Wno-unused-result --Wno-unused-value --Wno-unused-variable --Wno-useless-cast --Wno-varargs --Wno-variadic-macros --Wno-vector-operation-performance --Wno-virtual-inheritance --Wno-virtual-move-assign --Wno-vla --Wno-volatile --Wno-volatile-register-var --Wno-write-strings --Wno-zero-as-null-pointer-constant --Wno-zero-length-bounds diff --git a/tools/no-warnings-g++ b/tools/no-warnings-g++ new file mode 100644 index 0000000000..f9e04728eb --- /dev/null +++ b/tools/no-warnings-g++ @@ -0,0 +1,53 @@ +-Wno-address-of-packed-member +-Wno-aggressive-loop-optimizations +-Wno-analyzer-malloc-leak +-Wno-analyzer-null-argument +-Wno-analyzer-null-dereference +-Wno-analyzer-possible-null-argument +-Wno-analyzer-possible-null-dereference +-Wno-analyzer-stale-setjmp-buffer +-Wno-analyzer-tainted-array-index +-Wno-analyzer-unsafe-call-within-signal-handler +-Wno-attribute-warning +-Wno-attributes +-Wno-builtin-declaration-mismatch +-Wno-builtin-macro-redefined +-Wno-cannot-profile +-Wno-coverage-mismatch +-Wno-cpp +-Wno-deprecated +-Wno-deprecated-declarations +-Wno-div-by-zero +-Wno-endif-labels +-Wno-enum-compare +-Wno-hsa +-Wno-if-not-aligned +-Wno-ignored-attributes +-Wno-int-to-pointer-cast +-Wno-invalid-memory-model +-Wno-long-long +-Wno-lto-type-mismatch +-Wno-main +-Wno-missing-profile +-Wno-narrowing +-Wno-odr +-Wno-overflow +-Wno-packed-bitfield-compat +-Wno-pointer-compare +-Wno-pragmas +-Wno-prio-ctor-dtor +-Wno-psabi +-Wno-return-local-addr +-Wno-return-type +-Wno-shift-count-negative +-Wno-shift-count-overflow +-Wno-shift-negative-value +-Wno-sizeof-array-argument +-Wno-switch-bool +-Wno-switch-outside-range +-Wno-switch-unreachable +-Wno-sync-nand +-Wno-trigraphs +-Wno-unused-result +-Wno-varargs +-Wno-vla diff --git a/tools/no-warnings-gcc b/tools/no-warnings-gcc new file mode 100644 index 0000000000..b3be58197c --- /dev/null +++ b/tools/no-warnings-gcc @@ -0,0 +1,66 @@ +-Wno-address-of-packed-member +-Wno-aggressive-loop-optimizations +-Wno-analyzer-malloc-leak +-Wno-analyzer-null-argument +-Wno-analyzer-null-dereference +-Wno-analyzer-possible-null-argument +-Wno-analyzer-possible-null-dereference +-Wno-analyzer-stale-setjmp-buffer +-Wno-analyzer-tainted-array-index +-Wno-analyzer-unsafe-call-within-signal-handler +-Wno-attribute-warning +-Wno-attributes +-Wno-builtin-declaration-mismatch +-Wno-builtin-macro-redefined +-Wno-c11-c2x-compat +-Wno-c90-c99-compat +-Wno-c99-c11-compat +-Wno-cannot-profile +-Wno-coverage-mismatch +-Wno-cpp +-Wno-declaration-after-statement +-Wno-deprecated +-Wno-deprecated-declarations +-Wno-designated-init +-Wno-discarded-array-qualifiers +-Wno-discarded-qualifiers +-Wno-div-by-zero +-Wno-endif-labels +-Wno-enum-compare +-Wno-hsa +-Wno-if-not-aligned +-Wno-ignored-attributes +-Wno-implicit-int +-Wno-incompatible-pointer-types +-Wno-int-conversion +-Wno-int-to-pointer-cast +-Wno-invalid-memory-model +-Wno-long-long +-Wno-lto-type-mismatch +-Wno-main +-Wno-missing-profile +-Wno-narrowing +-Wno-odr +-Wno-old-style-definition +-Wno-overflow +-Wno-override-init-side-effects +-Wno-packed-bitfield-compat +-Wno-pointer-compare +-Wno-pointer-to-int-cast +-Wno-pragmas +-Wno-prio-ctor-dtor +-Wno-psabi +-Wno-return-local-addr +-Wno-return-type +-Wno-shift-count-negative +-Wno-shift-count-overflow +-Wno-shift-negative-value +-Wno-sizeof-array-argument +-Wno-switch-bool +-Wno-switch-outside-range +-Wno-switch-unreachable +-Wno-sync-nand +-Wno-trigraphs +-Wno-unused-result +-Wno-varargs +-Wno-vla From ee7fb2a8990068c8d115e572a378b5fb4e61c49e Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 1 Mar 2022 12:54:26 -0800 Subject: [PATCH 3/4] Make separate file for each level, add readme The readme now includes the exact commands required to regenerate the none-XXX files, no manual editing needed. --- platform.txt | 16 ++++++++-------- tools/warnings/README.md | 12 ++++++++++++ tools/warnings/default-g++ | 0 tools/warnings/default-gcc | 0 tools/warnings/extra-g++ | 1 + tools/warnings/extra-gcc | 1 + tools/warnings/more-g++ | 1 + tools/warnings/more-gcc | 1 + tools/{no-warnings-g++ => warnings/none-g++} | 1 - tools/{no-warnings-gcc => warnings/none-gcc} | 1 - 10 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 tools/warnings/README.md create mode 100644 tools/warnings/default-g++ create mode 100644 tools/warnings/default-gcc create mode 100644 tools/warnings/extra-g++ create mode 100644 tools/warnings/extra-gcc create mode 100644 tools/warnings/more-g++ create mode 100644 tools/warnings/more-gcc rename tools/{no-warnings-g++ => warnings/none-g++} (98%) rename tools/{no-warnings-gcc => warnings/none-gcc} (98%) diff --git a/platform.txt b/platform.txt index 39414b988b..8c882ac21e 100644 --- a/platform.txt +++ b/platform.txt @@ -21,11 +21,11 @@ runtime.tools.mkdir={runtime.platform.path}/tools/mkdir.py runtime.tools.cp={runtime.platform.path}/tools/cp.py runtime.tools.eboot={runtime.platform.path}/bootloaders/eboot/eboot.elf -compiler.warning_flags=@{runtime.platform.path}/tools/no-warnings- -compiler.warning_flags.none=@{runtime.platform.path}/tools/no-warnings- -compiler.warning_flags.default=-D__COMPILER= -compiler.warning_flags.more=-Wall -D__COMPILER= -compiler.warning_flags.all=-Wall -Wextra -D__COMPILER= +compiler.warning_flags=@{runtime.platform.path}/tools/warnings/none +compiler.warning_flags.none=@{runtime.platform.path}/tools/warnings/none +compiler.warning_flags.default=@{runtime.platform.path}/tools/warnings/default +compiler.warning_flags.more=@{runtime.platform.path}/tools/warnings/more +compiler.warning_flags.all=@{runtime.platform.path}/tools/warnings/extra build.lwip_lib=-llwip_gcc build.lwip_include=lwip/include @@ -68,18 +68,18 @@ compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_S compiler.libraries.ldflags= compiler.c.cmd=xtensa-lx106-elf-gcc -compiler.c.flags=-c {compiler.warning_flags}gcc -std=gnu17 {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} +compiler.c.flags=-c {compiler.warning_flags}-gcc -std=gnu17 {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} compiler.S.cmd=xtensa-lx106-elf-gcc compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls "-I{runtime.tools.xtensa-lx106-elf-gcc.path}/include/" -compiler.c.elf.flags=-g {compiler.warning_flags}gcc -Os -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{build.path}" "-L{compiler.libc.path}/lib" "-Tlocal.eagle.flash.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read +compiler.c.elf.flags=-g {compiler.warning_flags}-gcc -Os -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{build.path}" "-L{compiler.libc.path}/lib" "-Tlocal.eagle.flash.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read compiler.c.elf.cmd=xtensa-lx106-elf-gcc compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -lbearssl -lespnow -lsmartconfig -lairkiss -lwpa2 {build.stdcpp_lib} -lm -lc -lgcc compiler.cpp.cmd=xtensa-lx106-elf-g++ -compiler.cpp.flags=-c {compiler.warning_flags}g++ {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} +compiler.cpp.flags=-c {compiler.warning_flags}-g++ {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} compiler.as.cmd=xtensa-lx106-elf-as diff --git a/tools/warnings/README.md b/tools/warnings/README.md new file mode 100644 index 0000000000..a1addfdc9e --- /dev/null +++ b/tools/warnings/README.md @@ -0,0 +1,12 @@ +These are the warning options for the compiler at different levels. + +Because GCC 10 produces code which crashes when a function is declared +to return a value but doesn't (this is undefined per the C specs), we +cannot warn them if we use "-w" to disable all warnings, and instead have +to delete every warning but "-Wfunction-return" + +Generate the "-none" versions with the following command: +```` +./tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc --help=warnings -Q | grep '\[enabled\]' | grep -v 'return-type' | awk '{print $1}' | sed 's/-W/-Wno-/' | grep -v = | grep -v -- -f > tools/warnings/none-gcc +./tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc --help=warnings -Q | grep '\[enabled\]' | grep -v 'return-type' | awk '{print $1}' | sed 's/-W/-Wno-/' | grep -v = | grep -v -- -f | egrep -v '(c11-c2x-compat|c90-c99-compat|c99-c11-compat|declaration-after-statement|designated-init|discarded-array-qualifiers|discarded-qualifiers|implicit-int|incompatible-pointer-types|int-conversion|old-style-definition|override-init-side-effects|pointer-to-int-cast)' > tools/warnings/none-g++ +```` diff --git a/tools/warnings/default-g++ b/tools/warnings/default-g++ new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tools/warnings/default-gcc b/tools/warnings/default-gcc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tools/warnings/extra-g++ b/tools/warnings/extra-g++ new file mode 100644 index 0000000000..6492588382 --- /dev/null +++ b/tools/warnings/extra-g++ @@ -0,0 +1 @@ +-Wall -Wextra diff --git a/tools/warnings/extra-gcc b/tools/warnings/extra-gcc new file mode 100644 index 0000000000..6492588382 --- /dev/null +++ b/tools/warnings/extra-gcc @@ -0,0 +1 @@ +-Wall -Wextra diff --git a/tools/warnings/more-g++ b/tools/warnings/more-g++ new file mode 100644 index 0000000000..bd866b6966 --- /dev/null +++ b/tools/warnings/more-g++ @@ -0,0 +1 @@ +-Wall diff --git a/tools/warnings/more-gcc b/tools/warnings/more-gcc new file mode 100644 index 0000000000..bd866b6966 --- /dev/null +++ b/tools/warnings/more-gcc @@ -0,0 +1 @@ +-Wall diff --git a/tools/no-warnings-g++ b/tools/warnings/none-g++ similarity index 98% rename from tools/no-warnings-g++ rename to tools/warnings/none-g++ index f9e04728eb..d72f50f2a8 100644 --- a/tools/no-warnings-g++ +++ b/tools/warnings/none-g++ @@ -38,7 +38,6 @@ -Wno-prio-ctor-dtor -Wno-psabi -Wno-return-local-addr --Wno-return-type -Wno-shift-count-negative -Wno-shift-count-overflow -Wno-shift-negative-value diff --git a/tools/no-warnings-gcc b/tools/warnings/none-gcc similarity index 98% rename from tools/no-warnings-gcc rename to tools/warnings/none-gcc index b3be58197c..55a21d5d6d 100644 --- a/tools/no-warnings-gcc +++ b/tools/warnings/none-gcc @@ -51,7 +51,6 @@ -Wno-prio-ctor-dtor -Wno-psabi -Wno-return-local-addr --Wno-return-type -Wno-shift-count-negative -Wno-shift-count-overflow -Wno-shift-negative-value From 5520015d37f107ed2197c0da807678be4a862c8a Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Wed, 2 Mar 2022 20:30:52 -0800 Subject: [PATCH 4/4] Address review comments, only adjusts G++/None --- tools/warnings/README.md | 10 +++--- tools/warnings/none-gcc | 66 +--------------------------------------- 2 files changed, 6 insertions(+), 70 deletions(-) diff --git a/tools/warnings/README.md b/tools/warnings/README.md index a1addfdc9e..5fb33f2bd7 100644 --- a/tools/warnings/README.md +++ b/tools/warnings/README.md @@ -1,12 +1,12 @@ These are the warning options for the compiler at different levels. -Because GCC 10 produces code which crashes when a function is declared -to return a value but doesn't (this is undefined per the C specs), we +Because G++ 10 produces code which crashes when a function is declared +to return a value but doesn't (this is undefined per the C++ specs, but legal +for C11 and above code as long as the [non]returned value is ignored), we cannot warn them if we use "-w" to disable all warnings, and instead have -to delete every warning but "-Wfunction-return" +to delete every warning but "-Wreturn-type" -Generate the "-none" versions with the following command: +Generate the "none-g++" file with the following command: ```` -./tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc --help=warnings -Q | grep '\[enabled\]' | grep -v 'return-type' | awk '{print $1}' | sed 's/-W/-Wno-/' | grep -v = | grep -v -- -f > tools/warnings/none-gcc ./tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc --help=warnings -Q | grep '\[enabled\]' | grep -v 'return-type' | awk '{print $1}' | sed 's/-W/-Wno-/' | grep -v = | grep -v -- -f | egrep -v '(c11-c2x-compat|c90-c99-compat|c99-c11-compat|declaration-after-statement|designated-init|discarded-array-qualifiers|discarded-qualifiers|implicit-int|incompatible-pointer-types|int-conversion|old-style-definition|override-init-side-effects|pointer-to-int-cast)' > tools/warnings/none-g++ ```` diff --git a/tools/warnings/none-gcc b/tools/warnings/none-gcc index 55a21d5d6d..e1350473a1 100644 --- a/tools/warnings/none-gcc +++ b/tools/warnings/none-gcc @@ -1,65 +1 @@ --Wno-address-of-packed-member --Wno-aggressive-loop-optimizations --Wno-analyzer-malloc-leak --Wno-analyzer-null-argument --Wno-analyzer-null-dereference --Wno-analyzer-possible-null-argument --Wno-analyzer-possible-null-dereference --Wno-analyzer-stale-setjmp-buffer --Wno-analyzer-tainted-array-index --Wno-analyzer-unsafe-call-within-signal-handler --Wno-attribute-warning --Wno-attributes --Wno-builtin-declaration-mismatch --Wno-builtin-macro-redefined --Wno-c11-c2x-compat --Wno-c90-c99-compat --Wno-c99-c11-compat --Wno-cannot-profile --Wno-coverage-mismatch --Wno-cpp --Wno-declaration-after-statement --Wno-deprecated --Wno-deprecated-declarations --Wno-designated-init --Wno-discarded-array-qualifiers --Wno-discarded-qualifiers --Wno-div-by-zero --Wno-endif-labels --Wno-enum-compare --Wno-hsa --Wno-if-not-aligned --Wno-ignored-attributes --Wno-implicit-int --Wno-incompatible-pointer-types --Wno-int-conversion --Wno-int-to-pointer-cast --Wno-invalid-memory-model --Wno-long-long --Wno-lto-type-mismatch --Wno-main --Wno-missing-profile --Wno-narrowing --Wno-odr --Wno-old-style-definition --Wno-overflow --Wno-override-init-side-effects --Wno-packed-bitfield-compat --Wno-pointer-compare --Wno-pointer-to-int-cast --Wno-pragmas --Wno-prio-ctor-dtor --Wno-psabi --Wno-return-local-addr --Wno-shift-count-negative --Wno-shift-count-overflow --Wno-shift-negative-value --Wno-sizeof-array-argument --Wno-switch-bool --Wno-switch-outside-range --Wno-switch-unreachable --Wno-sync-nand --Wno-trigraphs --Wno-unused-result --Wno-varargs --Wno-vla +-w