Your message dated Sun, 28 Jul 2024 15:27:28 +0000
with message-id <e1sy5o0-00ezyc...@fasolo.debian.org>
and subject line Bug#1076502: Removed package(s) from unstable
has caused the Debian Bug report #954806,
regarding gcc-9: Optimizes away something it shouldn't
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 ow...@bugs.debian.org
immediately.)


-- 
954806: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=954806
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: gcc-9
Version: 9.3.0-3
Severity: normal

Dear Maintainer,

I am writing a general purpose convenience library called Mu (for
Miscellaneous Utilities). It includes an option parsing module intended
to be a replacement for getopt_long().

Options are defined in structures which include various information,
including an optional callback which will be called when the option is
found. The parse_opts() function has a flag `OPT_HELP' (or
`OPT_HELP_SHORT' or `OPT_HELP_LONG') which makes it automatically add a
'-h' and/or a '--help' option which calls a callback to print a usage
message.

The problem is, when the test program (test.c) is compiled with
optimization, the data fields (set at options.c:127-131) passed to the
callback are optimized out. This causes a segmentation fault and/or
error message when './test' is passed '-h' or '--help'. Note that when
the program is compiled without optimization, no memory errors are
reported when run under Valgrind (although memory errors *are* reported
when the program is compiled with optimization).

I thought that the problem may have been that I was casting the data
pointer to (void *), but I tried creating a test program to test that,
and that didn't seem to be the problem.

To compile the program with optimization, I ran:

    $ make CC=gcc-9 CFLAGS='-Wall -O1' clean all

And without optimization:

    $ make CC=gcc-9 CFLAGS='-Wall -O0' clean all

Note that the problem can be reproduced with GCC 10 also
(CC=gcc-10). Also note that no warnings are reported with -Wall, not
even with -O3. Three warnings are reported with -Werror, but I don't
think they are serious or relevant. Here they are, just in case
(compiled with -O3 to catch warnings it might not otherwise):

    $ make CC=gcc-9 CFLAGS='-Wall -Wextra -O3' clean all
    rm -f *.o test
    gcc-9 -Wall -Wextra -O3   -c -o test.o test.c
    gcc-9 -Wall -Wextra -O3   -c -o compat.o compat.c
    gcc-9 -Wall -Wextra -O3   -c -o format.o format.c
    format.c: In function ‘format_list’:
    format.c:277:36: warning: comparison of integer expressions of different 
signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
      277 |     if (width && size + char_width > width - *col) {
          |                                    ^
    In file included from format.c:34:
    format.c:303:27: warning: comparison of integer expressions of different 
signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
      303 |  assert(index + tab_width > width - *col);
          |                           ^
    format.c:314:19: warning: comparison of integer expressions of different 
signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
      314 |  assert(index + 1 > width - *col);
          |                   ^
    gcc-9 -Wall -Wextra -O3   -c -o io.o io.c
    gcc-9 -Wall -Wextra -O3   -c -o options.o options.c
    gcc-9 -Wall -Wextra -O3   -c -o safe.o safe.c
    gcc-9   test.o compat.o format.o io.o options.o safe.o   -o test

Also note that when compiled with Clang (CC=clang), even with -O3, the
program works as expected and no memory errors are reported by Valgrind.

Note that only the -O* and all the -O* options trigger the bug. I tried
manually passing all the -f* options which (according to the
documentation) are enabled by the various -O* options. However,
strangely, I could not reproduce the bug that way.

The following patch adds a nop() function to options.c that is used to
prevent the data fields from being optimized out. When this patch is
applied, the issue is no longer present, even when compiled with -O3
(with gcc-9 or gcc-10).
--- options.c~	2020-03-23 14:23:08.625333110 -0400
+++ options.c	2020-03-23 14:23:17.841369826 -0400
@@ -81,6 +81,13 @@
 static int free_opts(const char *, const OPTION *);
 static int format_help_callback(void *, char *);
 
+static void nop(const void *data, ...) {
+  /* We have to do this so GCC doesn't optimize calls to us away. */
+  va_list ap;
+  va_start(ap, data);
+  va_end(ap);
+}
+
 /*
  * Parse options. Returns zero on success or nonzero on error, in
  * which case an error message will be printed to `stderr'. The last
@@ -137,6 +144,7 @@
     opt->callback_none	= format_help_callback;
     opt->data		= &data;
     opt->help		= "print this help and exit";
+    nop(data.prog_name, data.usage, data.desc, data.notes, data.options);
   }
   else {
     /* This is slightly evil (casting it to a non-const), but we know
Since I was not able write a simpler program that triggers the bug, I
have attached the source tarball (mu.tar.gz). README.Bugs says that I
should provide the *.i files, so I have included them in the
tarball. Different .i files are produced under optimization, so I have
included the ones produced with '-O0 --save-temps'. I have also attached
a patch (nop_preprocessed.patch) that adds the nop() function to the
preprocessed options.i.

Here is the output of 'gcc-9 -v' and 'gcc-10 -v':

    $ gcc-9 -v
    Using built-in specs.
    COLLECT_GCC=gcc-9
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
    OFFLOAD_TARGET_NAMES=nvptx-none:hsa
    OFFLOAD_TARGET_DEFAULT=1
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Debian 9.3.0-3' 
--with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs 
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr 
--with-gcc-major-version-only --program-suffix=-9 
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id 
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix 
--libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu 
--enable-libstdcxx-debug --enable-libstdcxx-time=yes 
--with-default-libstdcxx-abi=new --enable-gnu-unique-object 
--disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib 
--with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch 
--disable-werror --with-arch-32=i686 --with-abi=m64 
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic 
--enable-offload-targets=nvptx-none,hsa --without-cuda-driver 
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu 
--target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean 
--enable-link-mutex
    Thread model: posix
    gcc version 9.3.0 (Debian 9.3.0-3) 

    $ gcc-10 -v
    Using built-in specs.
    COLLECT_GCC=gcc-10
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
    OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
    OFFLOAD_TARGET_DEFAULT=1
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Debian 
10-20200312-2' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs 
--enable-languages=c,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr 
--with-gcc-major-version-only --program-suffix=-10 
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id 
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix 
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug 
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new 
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin 
--enable-default-pie --with-system-zlib --with-target-system-zlib=auto 
--enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib 
--with-tune=generic --enable-offload-targets=nvptx-none,amdgcn-amdhsa,hsa 
--without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu 
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    Supported LTO compression algorithms: zlib zstd
    gcc version 10.0.1 20200312 (experimental) [master revision 
c56871dd15a:7ba6e7f0f21:daf2852b883762d921361462dad1f99320faca2a] (Debian 
10-20200312-2) 

I think this may be an upstream bug, but I'm not sure and README.Bugs
says "If in doubt, report the bug to the Debian BTS."

Thanks,
Asher

-- 
He was part of my dream, of course -- but then I was part of his dream too.
                -- Lewis Carroll
                               --------
I prefer to send and receive mail encrypted. Please send me your
public key, and if you do not have my public key, please let me
know. Thanks.

GPG fingerprint: 38F3 975C D173 4037 B397  8095 D4C9 C4FC 5460 8E68


-- System Information:
Debian Release: bullseye/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 5.4.0-4-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-9 depends on:
ii  binutils      2.34-5
ii  cpp-9         9.3.0-3
ii  gcc-9-base    9.3.0-3
ii  libc6         2.30-2
ii  libcc1-0      10-20200312-2
ii  libgcc-9-dev  9.3.0-3
ii  libgcc-s1     10-20200312-2
ii  libgmp10      2:6.2.0+dfsg-4
ii  libisl22      0.22.1-1
ii  libmpc3       1.1.0-1
ii  libmpfr6      4.0.2-1
ii  libstdc++6    10-20200312-2
ii  zlib1g        1:1.2.11.dfsg-2

Versions of packages gcc-9 recommends:
ii  libc6-dev  2.30-2

Versions of packages gcc-9 suggests:
ii  gcc-9-doc       9.2.0-1
pn  gcc-9-locales   <none>
pn  gcc-9-multilib  <none>

-- no debconf information

Attachment: mu.tar.gz
Description: Mu source tarball

--- options.i~	2020-03-23 14:56:38.434556710 -0400
+++ options.i	2020-03-23 14:56:47.334654330 -0400
@@ -2487,6 +2487,33 @@
 static int free_opts(const char *, const OPTION *);
 static int format_help_callback(void *, char *);
 
+static void nop(const void *data, ...) {
+
+  va_list ap;
+  
+# 87 "options.c" 3 4
+ __builtin_va_start(
+# 87 "options.c"
+ ap
+# 87 "options.c" 3 4
+ ,
+# 87 "options.c"
+ data
+# 87 "options.c" 3 4
+ )
+# 87 "options.c"
+                   ;
+  
+# 88 "options.c" 3 4
+ __builtin_va_end(
+# 88 "options.c"
+ ap
+# 88 "options.c" 3 4
+ )
+# 88 "options.c"
+           ;
+}
+
 
 
 
@@ -2513,51 +2540,51 @@
 
 
     for (n_opts = 0; !((options + n_opts)->short_opt == '\0' && (options + n_opts)->long_opt == 
-# 109 "options.c" 3 4
+# 116 "options.c" 3 4
                      ((void *)0)
-# 109 "options.c"
+# 116 "options.c"
                      ); n_opts++) {
       const OPTION *opt = options + n_opts;
       if (flags & 0b00001000)
  
-# 112 "options.c" 3 4
+# 119 "options.c" 3 4
 ((void) sizeof ((
-# 112 "options.c"
+# 119 "options.c"
 opt->short_opt != 'h'
-# 112 "options.c" 3 4
+# 119 "options.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
-# 112 "options.c"
+# 119 "options.c"
 opt->short_opt != 'h'
-# 112 "options.c" 3 4
+# 119 "options.c" 3 4
 ) ; else __assert_fail (
-# 112 "options.c"
+# 119 "options.c"
 "opt->short_opt != 'h'"
-# 112 "options.c" 3 4
-, "options.c", 112, __extension__ __PRETTY_FUNCTION__); }))
-# 112 "options.c"
+# 119 "options.c" 3 4
+, "options.c", 119, __extension__ __PRETTY_FUNCTION__); }))
+# 119 "options.c"
                              ;
       if (flags & 0b00010000)
  
-# 114 "options.c" 3 4
+# 121 "options.c" 3 4
 ((void) sizeof ((
-# 114 "options.c"
+# 121 "options.c"
 !opt->long_opt || strcmp(opt->long_opt, "help")
-# 114 "options.c" 3 4
+# 121 "options.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
-# 114 "options.c"
+# 121 "options.c"
 !opt->long_opt || strcmp(opt->long_opt, "help")
-# 114 "options.c" 3 4
+# 121 "options.c" 3 4
 ) ; else __assert_fail (
-# 114 "options.c"
+# 121 "options.c"
 "!opt->long_opt || strcmp(opt->long_opt, \"help\")"
-# 114 "options.c" 3 4
-, "options.c", 114, __extension__ __PRETTY_FUNCTION__); }))
-# 114 "options.c"
+# 121 "options.c" 3 4
+, "options.c", 121, __extension__ __PRETTY_FUNCTION__); }))
+# 121 "options.c"
                                                        ;
     }
 
 
-    actual_opts = _xmalloc_line("options.c", 118, __func__, sizeof(*actual_opts) * (n_opts + 2));
+    actual_opts = _xmalloc_line("options.c", 125, __func__, sizeof(*actual_opts) * (n_opts + 2));
     memcpy(actual_opts, options, sizeof(*actual_opts) * n_opts);
 
     opt = actual_opts + n_opts;
@@ -2579,6 +2606,7 @@
     opt->callback_none = format_help_callback;
     opt->data = &data;
     opt->help = "print this help and exit";
+    nop(data.prog_name, data.usage, data.desc, data.notes, data.options);
   }
   else {
 
@@ -2589,9 +2617,9 @@
 
 
   for (const OPTION *opt = actual_opts; !((opt)->short_opt == '\0' && (opt)->long_opt == 
-# 149 "options.c" 3 4
+# 157 "options.c" 3 4
                                         ((void *)0)
-# 149 "options.c"
+# 157 "options.c"
                                         ); opt++) {
     if (opt->found_opt)
       *(opt->found_opt) = 0;
@@ -2614,51 +2642,51 @@
    break;
  case OPT_STRING:
    arg->arg_string = 
-# 170 "options.c" 3 4
+# 178 "options.c" 3 4
                     ((void *)0)
-# 170 "options.c"
+# 178 "options.c"
                         ;
    break;
  case OPT_FILE:
    arg->arg_file = 
-# 173 "options.c" 3 4
+# 181 "options.c" 3 4
                   ((void *)0)
-# 173 "options.c"
+# 181 "options.c"
                       ;
    break;
  case OPT_DIRECTORY:
    arg->arg_directory = 
-# 176 "options.c" 3 4
+# 184 "options.c" 3 4
                        ((void *)0)
-# 176 "options.c"
+# 184 "options.c"
                            ;
    break;
  default:
    
-# 179 "options.c" 3 4
+# 187 "options.c" 3 4
   ((void) sizeof ((
-# 179 "options.c"
+# 187 "options.c"
   !"Invalid option type"
-# 179 "options.c" 3 4
+# 187 "options.c" 3 4
   ) ? 1 : 0), __extension__ ({ if (
-# 179 "options.c"
+# 187 "options.c"
   !"Invalid option type"
-# 179 "options.c" 3 4
+# 187 "options.c" 3 4
   ) ; else __assert_fail (
-# 179 "options.c"
+# 187 "options.c"
   "!\"Invalid option type\""
-# 179 "options.c" 3 4
-  , "options.c", 179, __extension__ __PRETTY_FUNCTION__); }))
-# 179 "options.c"
+# 187 "options.c" 3 4
+  , "options.c", 187, __extension__ __PRETTY_FUNCTION__); }))
+# 187 "options.c"
                                 ;
  }
       }
 
       if (opt->argstr)
  *(opt->argstr) = 
-# 184 "options.c" 3 4
+# 192 "options.c" 3 4
                  ((void *)0)
-# 184 "options.c"
+# 192 "options.c"
                      ;
     }
   }
@@ -2666,9 +2694,9 @@
   for (int i = 1; i < argc; i++) {
     char *optstr = argv[i];
     const char *arg = (i + 1 < argc) ? argv[i+1] : 
-# 190 "options.c" 3 4
+# 198 "options.c" 3 4
                                                   ((void *)0)
-# 190 "options.c"
+# 198 "options.c"
                                                       ;
 
 
@@ -2702,21 +2730,21 @@
 
     if (flags & 0b00000001) {
       
-# 222 "options.c" 3 4
+# 230 "options.c" 3 4
      ((void) sizeof ((
-# 222 "options.c"
+# 230 "options.c"
      !(flags & 0b00000010)
-# 222 "options.c" 3 4
+# 230 "options.c" 3 4
      ) ? 1 : 0), __extension__ ({ if (
-# 222 "options.c"
+# 230 "options.c"
      !(flags & 0b00000010)
-# 222 "options.c" 3 4
+# 230 "options.c" 3 4
      ) ; else __assert_fail (
-# 222 "options.c"
+# 230 "options.c"
      "!(flags & OPT_STOP_AFTER_ARG)"
-# 222 "options.c" 3 4
-     , "options.c", 222, __extension__ __PRETTY_FUNCTION__); }))
-# 222 "options.c"
+# 230 "options.c" 3 4
+     , "options.c", 230, __extension__ __PRETTY_FUNCTION__); }))
+# 230 "options.c"
                                           ;
       argv[(*p_argc)++] = optstr;
     }
@@ -2731,9 +2759,9 @@
 
   if (*p_argc < argc)
     argv[*p_argc] = 
-# 235 "options.c" 3 4
+# 243 "options.c" 3 4
                    ((void *)0)
-# 235 "options.c"
+# 243 "options.c"
                        ;
 
   return ret == -1;
@@ -2753,9 +2781,9 @@
 
   struct winsize ws;
   if (ioctl(fileno(file), 
-# 253 "options.c" 3 4
+# 261 "options.c" 3 4
                          0x5413
-# 253 "options.c"
+# 261 "options.c"
                                    , &ws) >= 0)
     width = ws.ws_col;
   else
@@ -2768,9 +2796,9 @@
 
   if (format(file, width, &cur_col, 0, 0, "Usage: %s %s\n%s\n%s",
       prog_name, usage, desc, ((options)->short_opt == '\0' && (options)->long_opt == 
-# 264 "options.c" 3 4
+# 272 "options.c" 3 4
                              ((void *)0)
-# 264 "options.c"
+# 272 "options.c"
                              ) ? "" : "\n"))
     return 1;
 
@@ -2781,9 +2809,9 @@
 
   long_required_arg = short_opts = 0;
   for (const OPTION *opt = options; !((opt)->short_opt == '\0' && (opt)->long_opt == 
-# 273 "options.c" 3 4
+# 281 "options.c" 3 4
                                     ((void *)0)
-# 273 "options.c"
+# 281 "options.c"
                                     ); opt++) {
     if (opt->short_opt) {
       short_opts = 1;
@@ -2801,9 +2829,9 @@
 
 
   for (const OPTION *opt = options; !((opt)->short_opt == '\0' && (opt)->long_opt == 
-# 289 "options.c" 3 4
+# 297 "options.c" 3 4
                                     ((void *)0)
-# 289 "options.c"
+# 297 "options.c"
                                     ); opt++) {
     if (opt->short_opt) {
       if (format(file, width, &cur_col, 0, 0, "  -%c", opt->short_opt))
@@ -2832,7 +2860,7 @@
 
   return 0;
 }
-# 328 "options.c"
+# 336 "options.c"
 static int parse_short_opt(const char *prog_name, const char *optstr,
       const char *argument, const OPTION *options,
       int flags) {
@@ -2844,30 +2872,30 @@
   for (char c = *optstr; (c = *optstr); optstr++) {
     const OPTION *opt;
     const char *argstr = 
-# 338 "options.c" 3 4
+# 346 "options.c" 3 4
                         ((void *)0)
-# 338 "options.c"
+# 346 "options.c"
                             ;
 
 
     for (opt = options; !((opt)->short_opt == '\0' && (opt)->long_opt == 
-# 341 "options.c" 3 4
+# 349 "options.c" 3 4
                         ((void *)0)
-# 341 "options.c"
+# 349 "options.c"
                         ); opt++) {
       if (opt->short_opt == c)
  break;
     }
 
     if (((opt)->short_opt == '\0' && (opt)->long_opt == 
-# 346 "options.c" 3 4
+# 354 "options.c" 3 4
        ((void *)0)
-# 346 "options.c"
+# 354 "options.c"
        )) {
       fprintf(
-# 347 "options.c" 3 4
+# 355 "options.c" 3 4
              stderr
-# 347 "options.c"
+# 355 "options.c"
                    , "%s: '%c': invalid option\n", prog_name, c);
       return -1;
     }
@@ -2922,9 +2950,9 @@
 
   if (*optstr == '=') {
     fprintf(
-# 400 "options.c" 3 4
+# 408 "options.c" 3 4
            stderr
-# 400 "options.c"
+# 408 "options.c"
                  , "%s: %s: invalid option\n", prog_name, optstr);
     return -1;
   }
@@ -2933,9 +2961,9 @@
   index = find_unambiguously(options, optstr);
   if (index < 0) {
     fprintf(
-# 407 "options.c" 3 4
+# 415 "options.c" 3 4
            stderr
-# 407 "options.c"
+# 415 "options.c"
                  , "%s: %s: invalid option\n", prog_name, optstr);
     return -1;
   }
@@ -2977,9 +3005,9 @@
       optstr = opt->long_opt;
 
     fprintf(
-# 447 "options.c" 3 4
+# 455 "options.c" 3 4
            stderr
-# 447 "options.c"
+# 455 "options.c"
                  , "%s: '%s': option requires argument\n", prog_name, optstr);
 
     return 1;
@@ -2992,16 +3020,16 @@
     if (opt->has_arg == OPT_NONE) {
       if (is_short)
  fprintf(
-# 458 "options.c" 3 4
+# 466 "options.c" 3 4
         stderr
-# 458 "options.c"
+# 466 "options.c"
               , "%s: '%c': option does not take argument\n",
   prog_name, opt->short_opt);
       else
  fprintf(
-# 461 "options.c" 3 4
+# 469 "options.c" 3 4
         stderr
-# 461 "options.c"
+# 469 "options.c"
               , "%s: %s: option does not take argument\n",
   prog_name, opt->long_opt);
 
@@ -3034,17 +3062,17 @@
 
     case OPT_INT:
       
-# 492 "options.c" 3 4
+# 500 "options.c" 3 4
      (*__errno_location ()) 
-# 492 "options.c"
+# 500 "options.c"
            = 0;
       arg_int = strtol(argstr, &endptr, 0);
 
       if (*endptr) {
  fprintf(
-# 496 "options.c" 3 4
+# 504 "options.c" 3 4
         stderr
-# 496 "options.c"
+# 504 "options.c"
               , "%s: %s: not a%s\n", prog_name, argstr,
   (opt->type == OPT_BOOL) ? " yes or no value" : "n integer");
  return 1;
@@ -3052,34 +3080,34 @@
 
       if (opt->type == OPT_INT) {
  if (!
-# 502 "options.c" 3 4
+# 510 "options.c" 3 4
      (*__errno_location ()) 
-# 502 "options.c"
+# 510 "options.c"
            && (arg_int < opt->ibound.lower ||
          arg_int > opt->ibound.upper))
    
-# 504 "options.c" 3 4
+# 512 "options.c" 3 4
   (*__errno_location ()) 
-# 504 "options.c"
+# 512 "options.c"
         = 
-# 504 "options.c" 3 4
+# 512 "options.c" 3 4
           34
-# 504 "options.c"
+# 512 "options.c"
                 ;
 
  if (
-# 506 "options.c" 3 4
+# 514 "options.c" 3 4
     (*__errno_location ())
-# 506 "options.c"
+# 514 "options.c"
          ) {
    fprintf(
-# 507 "options.c" 3 4
+# 515 "options.c" 3 4
           stderr
-# 507 "options.c"
+# 515 "options.c"
                 , "%s: %s: %s\n", prog_name, argstr, strerror(
-# 507 "options.c" 3 4
+# 515 "options.c" 3 4
                                                               (*__errno_location ())
-# 507 "options.c"
+# 515 "options.c"
                                                                    ));
    return 1;
  }
@@ -3094,51 +3122,51 @@
 
     case OPT_FLOAT:
       
-# 520 "options.c" 3 4
+# 528 "options.c" 3 4
      (*__errno_location ()) 
-# 520 "options.c"
+# 528 "options.c"
            = 0;
       p_arg->arg_float = strtod(argstr, &endptr);
 
       if (*endptr) {
  fprintf(
-# 524 "options.c" 3 4
+# 532 "options.c" 3 4
         stderr
-# 524 "options.c"
+# 532 "options.c"
               , "%s: %s: not a floating-point number\n",
   prog_name, argstr);
  return 1;
       }
 
       if (!
-# 529 "options.c" 3 4
+# 537 "options.c" 3 4
           (*__errno_location ()) 
-# 529 "options.c"
+# 537 "options.c"
                 && (p_arg->arg_float < opt->fbound.lower ||
        p_arg->arg_float > opt->fbound.upper))
  
-# 531 "options.c" 3 4
+# 539 "options.c" 3 4
 (*__errno_location ()) 
-# 531 "options.c"
+# 539 "options.c"
       = 
-# 531 "options.c" 3 4
+# 539 "options.c" 3 4
         34
-# 531 "options.c"
+# 539 "options.c"
               ;
 
       if (
-# 533 "options.c" 3 4
+# 541 "options.c" 3 4
          (*__errno_location ())
-# 533 "options.c"
+# 541 "options.c"
               ) {
  fprintf(
-# 534 "options.c" 3 4
+# 542 "options.c" 3 4
         stderr
-# 534 "options.c"
+# 542 "options.c"
               , "%s: %s: %s\n", prog_name, argstr, strerror(
-# 534 "options.c" 3 4
+# 542 "options.c" 3 4
                                                             (*__errno_location ())
-# 534 "options.c"
+# 542 "options.c"
                                                                  ));
  return 1;
       }
@@ -3153,28 +3181,28 @@
       p_arg->arg_file = file_open(argstr, opt->file_mode);
       if (!p_arg->arg_file) {
  fprintf(
-# 547 "options.c" 3 4
+# 555 "options.c" 3 4
         stderr
-# 547 "options.c"
+# 555 "options.c"
               , "%s: cannot open %s: %s\n",
   prog_name, argstr, strerror(
-# 548 "options.c" 3 4
+# 556 "options.c" 3 4
                              (*__errno_location ())
-# 548 "options.c"
+# 556 "options.c"
                                   ));
  return 1;
       }
 
       if (p_arg->arg_file == 
-# 552 "options.c" 3 4
+# 560 "options.c" 3 4
                             stdin
-# 552 "options.c"
+# 560 "options.c"
                                  )
  argstr = "<stdin>";
       else if (p_arg->arg_file == 
-# 554 "options.c" 3 4
+# 562 "options.c" 3 4
                                  stdout
-# 554 "options.c"
+# 562 "options.c"
                                        )
  argstr = "<stdout>";
 
@@ -3184,14 +3212,14 @@
       p_arg->arg_directory = opendir(argstr);
       if (!p_arg->arg_directory) {
  fprintf(
-# 562 "options.c" 3 4
+# 570 "options.c" 3 4
         stderr
-# 562 "options.c"
+# 570 "options.c"
               , "%s: cannot open directory %s: %s\n",
   prog_name, argstr, strerror(
-# 563 "options.c" 3 4
+# 571 "options.c" 3 4
                              (*__errno_location ())
-# 563 "options.c"
+# 571 "options.c"
                                   ));
  return 1;
       }
@@ -3200,21 +3228,21 @@
 
     default:
       
-# 570 "options.c" 3 4
+# 578 "options.c" 3 4
      ((void) sizeof ((
-# 570 "options.c"
+# 578 "options.c"
      !"Invalid option type"
-# 570 "options.c" 3 4
+# 578 "options.c" 3 4
      ) ? 1 : 0), __extension__ ({ if (
-# 570 "options.c"
+# 578 "options.c"
      !"Invalid option type"
-# 570 "options.c" 3 4
+# 578 "options.c" 3 4
      ) ; else __assert_fail (
-# 570 "options.c"
+# 578 "options.c"
      "!\"Invalid option type\""
-# 570 "options.c" 3 4
-     , "options.c", 570, __extension__ __PRETTY_FUNCTION__); }))
-# 570 "options.c"
+# 578 "options.c" 3 4
+     , "options.c", 578, __extension__ __PRETTY_FUNCTION__); }))
+# 578 "options.c"
                                    ;
     }
   }
@@ -3263,30 +3291,30 @@
  break;
       default:
  
-# 617 "options.c" 3 4
+# 625 "options.c" 3 4
 ((void) sizeof ((
-# 617 "options.c"
+# 625 "options.c"
 !"Invalid option type"
-# 617 "options.c" 3 4
+# 625 "options.c" 3 4
 ) ? 1 : 0), __extension__ ({ if (
-# 617 "options.c"
+# 625 "options.c"
 !"Invalid option type"
-# 617 "options.c" 3 4
+# 625 "options.c" 3 4
 ) ; else __assert_fail (
-# 617 "options.c"
+# 625 "options.c"
 "!\"Invalid option type\""
-# 617 "options.c" 3 4
-, "options.c", 617, __extension__ __PRETTY_FUNCTION__); }))
-# 617 "options.c"
+# 625 "options.c" 3 4
+, "options.c", 625, __extension__ __PRETTY_FUNCTION__); }))
+# 625 "options.c"
                               ;
       }
     }
 
     if (ret)
       fprintf(
-# 622 "options.c" 3 4
+# 630 "options.c" 3 4
              stderr
-# 622 "options.c"
+# 630 "options.c"
                    , "%s: %s\n", prog_name, err);
   }
 
@@ -3299,14 +3327,14 @@
     case OPT_FILE:
       if (file_close(p_arg->arg_file)) {
  fprintf(
-# 633 "options.c" 3 4
+# 641 "options.c" 3 4
         stderr
-# 633 "options.c"
+# 641 "options.c"
               , "%s: cannot close %s: %s\n",
   prog_name, argstr, strerror(
-# 634 "options.c" 3 4
+# 642 "options.c" 3 4
                              (*__errno_location ())
-# 634 "options.c"
+# 642 "options.c"
                                   ));
  return 1;
       }
@@ -3315,14 +3343,14 @@
     case OPT_DIRECTORY:
       if (closedir(p_arg->arg_directory)) {
  fprintf(
-# 641 "options.c" 3 4
+# 649 "options.c" 3 4
         stderr
-# 641 "options.c"
+# 649 "options.c"
               , "%s: cannot close directory %s: %s\n",
   prog_name, argstr, strerror(
-# 642 "options.c" 3 4
+# 650 "options.c" 3 4
                              (*__errno_location ())
-# 642 "options.c"
+# 650 "options.c"
                                   ));
  return 1;
       }
@@ -3356,36 +3384,36 @@
 
   n_matches = 0;
   for (n_haystack = 0; !((haystack + n_haystack)->short_opt == '\0' && (haystack + n_haystack)->long_opt == 
-# 674 "options.c" 3 4
+# 682 "options.c" 3 4
                        ((void *)0)
-# 674 "options.c"
+# 682 "options.c"
                        ); n_haystack++) {
     if (haystack[n_haystack].long_opt)
       n_matches++;
   }
 
 
-  matches = _xmalloc_line("options.c", 680, __func__, sizeof(*matches) * n_matches);
+  matches = _xmalloc_line("options.c", 688, __func__, sizeof(*matches) * n_matches);
   index = 0;
   for (int i = 0; i < n_haystack; i++) {
     const char *str = haystack[i].long_opt;
     if (str) {
       
-# 685 "options.c" 3 4
+# 693 "options.c" 3 4
      ((void) sizeof ((
-# 685 "options.c"
+# 693 "options.c"
      index < n_matches
-# 685 "options.c" 3 4
+# 693 "options.c" 3 4
      ) ? 1 : 0), __extension__ ({ if (
-# 685 "options.c"
+# 693 "options.c"
      index < n_matches
-# 685 "options.c" 3 4
+# 693 "options.c" 3 4
      ) ; else __assert_fail (
-# 685 "options.c"
+# 693 "options.c"
      "index < n_matches"
-# 685 "options.c" 3 4
-     , "options.c", 685, __extension__ __PRETTY_FUNCTION__); }))
-# 685 "options.c"
+# 693 "options.c" 3 4
+     , "options.c", 693, __extension__ __PRETTY_FUNCTION__); }))
+# 693 "options.c"
                               ;
       matches[index].match = str;
       matches[index].index = i;
@@ -3393,21 +3421,21 @@
     }
   }
   
-# 691 "options.c" 3 4
+# 699 "options.c" 3 4
  ((void) sizeof ((
-# 691 "options.c"
+# 699 "options.c"
  index == n_matches
-# 691 "options.c" 3 4
+# 699 "options.c" 3 4
  ) ? 1 : 0), __extension__ ({ if (
-# 691 "options.c"
+# 699 "options.c"
  index == n_matches
-# 691 "options.c" 3 4
+# 699 "options.c" 3 4
  ) ; else __assert_fail (
-# 691 "options.c"
+# 699 "options.c"
  "index == n_matches"
-# 691 "options.c" 3 4
- , "options.c", 691, __extension__ __PRETTY_FUNCTION__); }))
-# 691 "options.c"
+# 699 "options.c" 3 4
+ , "options.c", 699, __extension__ __PRETTY_FUNCTION__); }))
+# 699 "options.c"
                            ;
 
 
@@ -3463,9 +3491,9 @@
     break;
   case OPT_STRING:
     arg->arg_string = 
-# 745 "options.c" 3 4
+# 753 "options.c" 3 4
                      ((void *)0)
-# 745 "options.c"
+# 753 "options.c"
                          ;
     break;
 
@@ -3473,21 +3501,21 @@
     if (arg->arg_file) {
       if (file_close(arg->arg_file)) {
  fprintf(
-# 751 "options.c" 3 4
+# 759 "options.c" 3 4
         stderr
-# 751 "options.c"
+# 759 "options.c"
               , "%s: cannot close %s: %s\n", prog_name,
   opt->argstr ? *(opt->argstr) : "file", strerror(
-# 752 "options.c" 3 4
+# 760 "options.c" 3 4
                                                  (*__errno_location ())
-# 752 "options.c"
+# 760 "options.c"
                                                       ));
  return 1;
       }
       arg->arg_file = 
-# 755 "options.c" 3 4
+# 763 "options.c" 3 4
                      ((void *)0)
-# 755 "options.c"
+# 763 "options.c"
                          ;
     }
     break;
@@ -3496,22 +3524,22 @@
     if (arg->arg_directory) {
       if (closedir(arg->arg_directory)) {
  fprintf(
-# 762 "options.c" 3 4
+# 770 "options.c" 3 4
         stderr
-# 762 "options.c"
+# 770 "options.c"
               , "%s: cannot close directory%s%s: %s\n", prog_name,
   opt->argstr ? " " : "", opt->argstr ? *(opt->argstr) : "",
   strerror(
-# 764 "options.c" 3 4
+# 772 "options.c" 3 4
           (*__errno_location ())
-# 764 "options.c"
+# 772 "options.c"
                ));
  return 1;
       }
       arg->arg_directory = 
-# 767 "options.c" 3 4
+# 775 "options.c" 3 4
                           ((void *)0)
-# 767 "options.c"
+# 775 "options.c"
                               ;
     }
 
@@ -3519,29 +3547,29 @@
 
   default:
     
-# 773 "options.c" 3 4
+# 781 "options.c" 3 4
    ((void) sizeof ((
-# 773 "options.c"
+# 781 "options.c"
    !"Invalid option type"
-# 773 "options.c" 3 4
+# 781 "options.c" 3 4
    ) ? 1 : 0), __extension__ ({ if (
-# 773 "options.c"
+# 781 "options.c"
    !"Invalid option type"
-# 773 "options.c" 3 4
+# 781 "options.c" 3 4
    ) ; else __assert_fail (
-# 773 "options.c"
+# 781 "options.c"
    "!\"Invalid option type\""
-# 773 "options.c" 3 4
-   , "options.c", 773, __extension__ __PRETTY_FUNCTION__); }))
-# 773 "options.c"
+# 781 "options.c" 3 4
+   , "options.c", 781, __extension__ __PRETTY_FUNCTION__); }))
+# 781 "options.c"
                                  ;
   }
 
   if (opt->argstr)
     *(opt->argstr) = 
-# 777 "options.c" 3 4
+# 785 "options.c" 3 4
                     ((void *)0)
-# 777 "options.c"
+# 785 "options.c"
                         ;
 
   return 0;
@@ -3555,9 +3583,9 @@
   int ret = 0;
 
   for (const OPTION *opt = options; !((opt)->short_opt == '\0' && (opt)->long_opt == 
-# 789 "options.c" 3 4
+# 797 "options.c" 3 4
                                     ((void *)0)
-# 789 "options.c"
+# 797 "options.c"
                                     ); opt++)
     ret += free_opt(prog_name, opt);
 
@@ -3571,9 +3599,9 @@
 static int format_help_callback(void *data, char *err) {
   struct help_callback_data *d = data;
   int ret = format_help(
-# 801 "options.c" 3 4
+# 809 "options.c" 3 4
                        stdout
-# 801 "options.c"
+# 809 "options.c"
                              , d->prog_name, d->usage,
    d->desc, d->notes, d->options);
 
@@ -3581,15 +3609,15 @@
 
 
     fflush(
-# 807 "options.c" 3 4
+# 815 "options.c" 3 4
           stdout
-# 807 "options.c"
+# 815 "options.c"
                 );
     snprintf(err, 256, "cannot print help message: %s",
       strerror(
-# 809 "options.c" 3 4
+# 817 "options.c" 3 4
               (*__errno_location ())
-# 809 "options.c"
+# 817 "options.c"
                    ));
     return ret;
   }

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Version: 9.5.0-6+rm

Dear submitter,

as the package gcc-9 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/1076502

The version of this package that was in Debian prior to this removal
can still be found using https://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
ftpmas...@ftp-master.debian.org.

Debian distribution maintenance software
pp.
Scott Kitterman (the ftpmaster behind the curtain)

--- End Message ---

Reply via email to