Your message dated Sat, 13 Feb 2021 13:07:12 +0000 with message-id <[🔎] E1lAudk-0000FN-1x@fasolo.debian.org> and subject line Bug#954831: Removed package(s) from unstable has caused the Debian Bug report #931182, regarding gcc-8: does not issue a warning with -Wall when a named enum value is overridden by a variable with the same name to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 931182: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=931182 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: gcc-8: does not issue a warning with -Wall when a named enum value is overridden by a variable with the same name
- From: Asher Gordon <AsDaGo@posteo.net>
- Date: Thu, 27 Jun 2019 13:04:46 -0400
- Message-id: <87zhm3c635.fsf@posteo.net>
Package: gcc-8 Version: 8.3.0-6 Severity: normal Tags: upstream Dear Maintainer, In a C program, when an enum's value is overridden by a variable with the same name, and it is compiled by gcc with -Wall, no warning is emitted even though it is questionable to override an enum. See the program below:#include <stdio.h> int main(void) { enum {g, h, i} foo[3]; /* Set all elements of `foo' to `i' (2), or so you would think */ for (int i = 0; i < sizeof(foo) / sizeof(*foo); i++) { foo[i] = i; /* <-- this doesn't do what you think */ } /* Now print all the elements (note we use `iterator' instead of `i' to avoid the situation above) */ for (int iterator = 0; iterator < sizeof(foo) / sizeof(*foo); iterator++) { printf("foo[%d] is ", iterator); switch (foo[iterator]) { case g: puts("g"); break; case h: puts("h"); break; case i: puts("i"); break; default: printf("something else: %d\n", foo[iterator]); break; } } return 0; }In line 8, "foo[i] = i;", foo[i] is indexed using the "i" which was declared at the beginning of the loop ("int i = 0;"), as you would expect. However, it is not clear what the second "i" (the one on the right of the assignment) is referring to. It could be referring to the value "2" (since that is the value `i' is assigned to in the enum), or it could also be referring to the "i" which was declared at the beginning of the loop. It is in fact referring to the loop `i' as you can see if you compile and run the program. $ gcc -Wall -o enum-test enum-test.c $ ./enum-test foo[0] is g foo[1] is h foo[2] is i However, note that gcc succeeded with *no output* even though -Wall was passed. Since overriding enum values is unclear and may not do what you think, and it's easily avoidable (just change the variable or enum value name), it should be warned against when -Wall is passed. From the "(gcc) Warning Options" info node, '-Wall' This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. So I think this should definitely be warned against by -Wall. Clang too, does not warn against this: $ clang -Wall -o enum-test enum-test.c $ ./enum-test foo[0] is g foo[1] is h foo[2] is i (As you can see, the runtime behavior of the program is the same as when compiled with gcc, as you would expect.) Curiously, both g++ and clang++ raise an error when an enum is overridden (along with a few warnings since the program was not meant to be compiled as C++). $ g++ -Wall -o enum-test enum-test.c enum-test.c: In function ‘int main()’: enum-test.c:7:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] for (int i = 0; i < sizeof(foo) / sizeof(*foo); i++) { ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ enum-test.c:8:14: error: invalid conversion from ‘int’ to ‘main()::<unnamed enum>’ [-fpermissive] foo[i] = i; /* <-- this doesn't do what you think */ ^ enum-test.c:13:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] for (int iterator = 0; iterator < sizeof(foo) / sizeof(*foo); iterator++) { ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ clang++ -Wall -o enum-test enum-test.c clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated] enum-test.c:8:14: error: assigning to 'enum (anonymous enum at enum-test.c:4:3)' from incompatible type 'int' foo[i] = i; /* <-- this doesn't do what you think */ ^ 1 error generated. I haven't reported a bug against clang since you can only report a bug against one package, but perhaps a bug should be reported against clang referencing this one to alert the clang people about this too. -- System Information: Debian Release: 10.0 APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 4.19.0-5-amd64 (SMP w/2 CPU cores) Kernel taint flags: TAINT_FIRMWARE_WORKAROUND Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages gcc-8 depends on: ii binutils 2.31.1-16 ii cpp-8 8.3.0-6 ii gcc-8-base 8.3.0-6 ii libc6 2.28-10 ii libcc1-0 8.3.0-6 ii libgcc-8-dev 8.3.0-6 ii libgcc1 1:8.3.0-6 ii libgmp10 2:6.1.2+dfsg-4 ii libisl19 0.20-2 ii libmpc3 1.1.0-1 ii libmpfr6 4.0.2-1 ii libstdc++6 8.3.0-6 ii zlib1g 1:1.2.11.dfsg-1 Versions of packages gcc-8 recommends: ii libc6-dev 2.28-10 Versions of packages gcc-8 suggests: pn gcc-8-doc <none> pn gcc-8-locales <none> pn gcc-8-multilib <none> pn libasan5-dbg <none> pn libatomic1-dbg <none> pn libgcc1-dbg <none> pn libgomp1-dbg <none> pn libitm1-dbg <none> pn liblsan0-dbg <none> pn libmpx2-dbg <none> pn libquadmath0-dbg <none> pn libtsan0-dbg <none> pn libubsan1-dbg <none> -- no debconf informationAttachment: signature.asc
Description: PGP signature
--- End Message ---
--- Begin Message ---
- To: 539912-done@bugs.debian.org,735497-done@bugs.debian.org,746426-done@bugs.debian.org,748298-done@bugs.debian.org,823778-done@bugs.debian.org,888951-done@bugs.debian.org,892167-done@bugs.debian.org,892281-done@bugs.debian.org,904018-done@bugs.debian.org,904192-done@bugs.debian.org,911230-done@bugs.debian.org,911599-done@bugs.debian.org,913802-done@bugs.debian.org,914470-done@bugs.debian.org,915405-done@bugs.debian.org,916376-done@bugs.debian.org,917115-done@bugs.debian.org,918923-done@bugs.debian.org,919577-done@bugs.debian.org,920022-done@bugs.debian.org,920582-done@bugs.debian.org,921067-done@bugs.debian.org,929966-done@bugs.debian.org,930012-done@bugs.debian.org,931182-done@bugs.debian.org,932098-done@bugs.debian.org,941911-done@bugs.debian.org,945991-done@bugs.debian.org,961990-done@bugs.debian.org,972820-done@bugs.debian.org,982425-done@bugs.debian.org,
- Cc: gcc-8@packages.debian.org
- Subject: Bug#954831: Removed package(s) from unstable
- From: Debian FTP Masters <ftpmaster@ftp-master.debian.org>
- Date: Sat, 13 Feb 2021 13:07:12 +0000
- Message-id: <[🔎] E1lAudk-0000FN-1x@fasolo.debian.org>
Version: 1:8.4.0-7+rm Dear submitter, as the package gcc-8 has just been removed from the Debian archive unstable we hereby close the associated bug reports. We are sorry that we couldn't deal with your issue properly. For details on the removal, please see https://bugs.debian.org/954831 The version of this package that was in Debian prior to this removal can still be found using http://snapshot.debian.org/. Please note that the changes have been done on the master archive and will not propagate to any mirrors until the next dinstall run at the earliest. This message was generated automatically; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org. Debian distribution maintenance software pp. Joerg Jaspert (the ftpmaster behind the curtain)
--- End Message ---