Re: Extended doubt regarding the bug 93432

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks,
I also tried by cloning,but that error persists,I did not try changing the
./gdbinit.
 "add-auto-load-safe-path /absolute/path/to/build/gcc" is what I tried
putting it in .gdbinit ,that's it.
To give an update about uninitialized variable bugs, I am going through the
passes of RTL,tree and seeing their PHI nodes, hashtable and other pass
details.
I am preparing a test case for that and going forward with it.
Thanks a lot!
Krishna Narayanan


On Thu, Feb 17, 2022 at 2:57 AM Martin Sebor <msebor@xxxxxxxxx> wrote:

> On 2/15/22 05:10, Krishna Narayanan wrote:
> > Thank you Sir,
> > I got the warnings and did try the test-bug.c with different
> > optimizations and got the expected warnings.I am now familiar with how
> > the warnings work with respect to the optimizations we use, my intention
> > was to step through the gcc source code which gives a warning for
> > uninitialized variable and understand it that's why I did the uninit.c
> > in the previous steps.
> > And for the above steps Step 3: It says Function
> > "pass_late_warn_uninitialized::execute" not defined.I referred this
> > (https://splichal.eu/lcov/gcc/tree-ssa-uninit.c.gcov.html
> > <https://splichal.eu/lcov/gcc/tree-ssa-uninit.c.gcov.html>) for the
> code.
>
> Accessing the official GCC source code repository is described here:
>    https://gcc.gnu.org/git.html
>
> > When I invoke the cc1 there is an error,
> >   gdb.error: No enum type named tree_code.
> > .gdbinit:15: Error in sourced command file:
> > Error while executing Python code.
>
> These look like GDB errors coming out of your .gdbinit file.
>
> > When I set any other breakpoint it goes for an exit.c ,I didn't get this
> > behaviour, Is it because of some mistake in the prior steps of
> > configuration and building?
>
> It's hard for me to say since I'm not sure what you did.  I recommend
> cloning the GCC Git repository as described on the page above.  Then
> configure the compiler as I described below.  You can find more details
> on configuring GCC here:
>    https://gcc.gnu.org/install/configure.html
>
> Then build GCC as I described.  Refer to the online instructions for
> details:
>    https://gcc.gnu.org/install/build.html
>
> Then you should be able to start GCC in GDB as I described below.
>
> Martin
>
>
> > Thanks and Regards,
> > Krishna Narayanan.
> >
> > On Tue, Feb 15, 2022 at 1:52 AM Martin Sebor <msebor@xxxxxxxxx
> > <mailto:msebor@xxxxxxxxx>> wrote:
> >
> >     On 2/14/22 09:59, Krishna Narayanan wrote:
> >      > Yes I tried this but still it shows the same error,
> >      > # 1 "tree-ssa-uninit.c"
> >      > # 1 "<built-in>"
> >      > # 1 "<command-line>"
> >      > # 31 "<command-line>"
> >      > # 1 "/usr/include/stdc-predef.h" 1 3 4
> >      > # 32 "<command-line>" 2
> >      > # 1 "tree-ssa-uninit.c"
> >      > tree-ssa-uninit.c:21:10: fatal error: config.h: No such file or
> >     directory
> >      >     21 | #include "config.h"
> >      >        |          ^~~~~~~~~~
> >      > I have also given "make CFLAGS='-g3'  all " in the configuration.
> >      > I have attached a screenshot of the terminal, I don't know what
> >     is going
> >      > wrong on my end.
> >      > Can you please help me out with this?
> >
> >     I was trying to explain is that given a source file, say
> >     test-bug-93432.c, with the test case from bug 93432 but that also
> >     #includes a bunch of standard headers (such as <stdio.h> that's
> >     missing from the test case), to see what goes on in GCC as it
> >     compiles the test case, I follow these steps:
> >
> >         1) Create a prpeprocessing translation unit:
> >            $ /build/gcc-master/gcc/xgcc -B /build/gcc-master/gcc -E
> >     $CPPFLAGS
> >     test-bug-93432.c > test-bug-93432.i
> >
> >            CPPFLAGS above is [a variable that expands to] the options
> that
> >            affect the preprocessor, most commonly -D and -I.  (For the
> test
> >            case in bug 93432 CPPFLAGS can be empty since gcc knows about
> >            headers in /usr/include).
> >
> >         2) Debug GCC with the translation unit without specifying
> CPPFLAGS:
> >            $ /build/gcc-master/gcc/xgcc -B /build/gcc-master/gcc
> >     test-bug-93432.i -wrapper gdb,--arg
> >
> >     But you seem to be compiling tree-ssa-uninit.c, the GCC source file
> >     that implements the uninitialized warnings, rather than the test case
> >     for the warning.  I don't think you want to do that if what you're
> >     trying to understand is how the warning works.
> >
> >     What you want to do is something along the lines below (starting with
> >     building the debugging version of GCC itself):
> >
> >         1) build GCC with debugging information and no optimization,
> e.g.,
> >              $ mkdir -p /build/gcc-master
> >              $ (cd /build/gcc-master && /src/gcc/configure
> >     --enable-stage1-languages=c,c++)
> >              $ make -C /build/gcc-master -j16 -l12 stage1-bubble
> >     CFLAGS='-O0
> >     -g3' CXXFLAGS='-O0 -g3' STAGE1_CFLAGS='-O0 -g3' STAGE1_CXXFLAGS='-O0
> >     -g3'
> >            You should adjust the arguments to the -j and -l options to
> >            the machine you're building on (the number of CPUs and cores
> >            and interactive jobs/users running on it).
> >
> >         2) start GDB with the GCC you built in (1)
> >              $ /build/gcc-master/gcc/xgcc -B /build/gcc-master/gcc
> >     test-bug-93432.i -wrapper gdb,--arg
> >
> >         3) set breakpoints in the main entry points in
> tree-ssa-uninit.cc,
> >            e.g.,
> >              (gdb) break pass_late_warn_uninitialized::execute
> >              (gdb) break execute_early_warn_uninitialized
> >
> >         4) run GCC with -O2 -Wall as command line options and
> >     test-bug-93432.i
> >            as the command line argument within GDB:
> >              (gdb) run -O2 -Wall -quiet test-bug-93432.i
> >
> >     I'd expect there to be a page somewhere under
> >     https://gcc.gnu.org/wiki <https://gcc.gnu.org/wiki>
> >     that describes this and more, but all I found was the page below:
> >
> https://gcc.gnu.org/wiki/Top-Level_Bootstrap?highlight=%28stage1-bubble%29
> >     <
> https://gcc.gnu.org/wiki/Top-Level_Bootstrap?highlight=%28stage1-bubble%29
> >
> >
> >     It might help others get started to update it with the steps that
> work
> >     for you (after checking with someone here that they make sense.)
> >
> >     Martin
> >
> >      > Thanks,
> >      > Krishna Narayanan
> >      >
> >      > On Mon, Feb 14, 2022 at 8:54 PM Martin Sebor <msebor@xxxxxxxxx
> >     <mailto:msebor@xxxxxxxxx>
> >      > <mailto:msebor@xxxxxxxxx <mailto:msebor@xxxxxxxxx>>> wrote:
> >      >
> >      >     On 2/11/22 11:10, Krishna Narayanan wrote:
> >      >      > Hello,
> >      >      > I tried to run the gcc in the debugger but I am getting a
> >     repetitive
> >      >      > error for header files,I tried using -I followed by the
> >     path of the
> >      >      > header file (-I/home/krishna/objdir/gcc) in the command
> >     but still
> >      >     the
> >      >      > error is persistent.
> >      >      > Error:
> >      >      > In file included from *tree-ssa-uninit.c:22*:
> >      >      > *system.h:209:10*: fatal error: safe-ctype.h: No such file
> or
> >      >     directory
> >      >      >    209 | #include "safe-ctype.h"
> >      >      >        |          ^~~~~~~~~~~~~~
> >      >      > compilation terminated.
> >      >      > How do I resolve this?Can you please help me out with this
> and
> >      >     where did
> >      >      > I go wrong?
> >      >
> >      >     I usually create a translation unit (a .i file for a C source
> and
> >      >     a .ii file for a C++ source) by compiling the .c or .C file
> with
> >      >     the -E option and then start GCC the debugger on that file.
> For
> >      >     example, with an unoptimized GCC stage1 build with -g3
> enabled in
> >      >     /build/gcc-master, I invoke it in GDB like so:
> >      >
> >      >         $ /build/gcc-master/gcc/xgcc -B /build/gcc-master/gcc
> >     tu.i -wrapper
> >      >     gdb,--arg
> >      >
> >      >     (In Emacs, I use gdb,-i=mi,--arg as the trailing pieces.)
> >     This lets
> >      >     me avoid many of the -I command line options that the GCC
> driver
> >      >     otherwise passes to to th compiler implicitly.
> >      >
> >      >     Martin
> >      >
> >      >      > Thanks and regards,
> >      >      > Krishna Narayanan.
> >      >      >
> >      >      >
> >      >      > On Wed, Feb 9, 2022 at 3:20 AM Martin Sebor
> >     <msebor@xxxxxxxxx <mailto:msebor@xxxxxxxxx>
> >      >     <mailto:msebor@xxxxxxxxx <mailto:msebor@xxxxxxxxx>>
> >      >      > <mailto:msebor@xxxxxxxxx <mailto:msebor@xxxxxxxxx>
> >     <mailto:msebor@xxxxxxxxx <mailto:msebor@xxxxxxxxx>>>> wrote:
> >      >      >
> >      >      >     On 2/8/22 10:37, Jonathan Wakely via Gcc-help wrote:
> >      >      >      > On Tue, 8 Feb 2022 at 17:18, Krishna Narayanan <
> >      >      >      > krishnanarayanan132002@xxxxxxxxx
> >     <mailto:krishnanarayanan132002@xxxxxxxxx>
> >      >     <mailto:krishnanarayanan132002@xxxxxxxxx
> >     <mailto:krishnanarayanan132002@xxxxxxxxx>>
> >      >      >     <mailto:krishnanarayanan132002@xxxxxxxxx
> >     <mailto:krishnanarayanan132002@xxxxxxxxx>
> >      >     <mailto:krishnanarayanan132002@xxxxxxxxx
> >     <mailto:krishnanarayanan132002@xxxxxxxxx>>>> wrote:
> >      >      >      >
> >      >      >      >> Thanks for your response,Could you please clarify
> >     if this
> >      >     is a bug?
> >      >      >      >>
> >      >      >      >
> >      >      >      > It warns with -O1, which is the documented
> behaviour:
> >      >      >      >
> >      >      >      >        The effectiveness of some warnings depends on
> >      >      >     optimizations also
> >      >      >      > being enabled. For example -Wsuggest-final-types is
> >     more
> >      >      >      >        effective with link-time optimization and
> >      >      >     -Wmaybe-uninitialized does
> >      >      >      > not warn at all unless optimization is enabled.
> >      >      >
> >      >      >     Yes, although the latter sentence is no longer
> completely
> >      >     accurate.
> >      >      >     Since GCC 11 -Wmaybe-uninitialized doesn't need
> >     optimization
> >      >     to trigger
> >      >      >     for code that passes an uninitialized object to a
> function
> >      >     that takes
> >      >      >     a const reference.  Let me update the manual with that.
> >      >      >
> >      >      >      > So no, I don't think it' a bug. GCC is behaving as
> >     designed.
> >      >      >     Ideally it
> >      >      >      > would be better at warning without optimization,
> >     but changing
> >      >      >     that would be
> >      >      >      > hard.
> >      >      >
> >      >      >     It might be tricky to handle this case without causing
> >     false
> >      >     positives
> >      >      >     in others.
> >      >      >
> >      >      >     Krishna, to understand why some of these cases are
> >     diagnosed
> >      >     and others
> >      >      >     aren't, you need to look at either the dump from the
> >     uninit pass
> >      >      >     (-fdump-tree-uninit) with -O1 and above, or at some
> early
> >      >     dump (e.g.,
> >      >      >     -fdump-tree-ssa) at -O0.  Here's a link to the former
> on
> >      >     Godbolt for
> >      >      >     your example:
> >      >      >
> >      >      > https://gcc.godbolt.org/z/89c4s7o6E
> >     <https://gcc.godbolt.org/z/89c4s7o6E>
> >      >     <https://gcc.godbolt.org/z/89c4s7o6E
> >     <https://gcc.godbolt.org/z/89c4s7o6E>>
> >      >      >     <https://gcc.godbolt.org/z/89c4s7o6E
> >     <https://gcc.godbolt.org/z/89c4s7o6E>
> >      >     <https://gcc.godbolt.org/z/89c4s7o6E
> >     <https://gcc.godbolt.org/z/89c4s7o6E>>>
> >      >      >
> >      >      >     The best way is of course to step through GCC in a
> >     debugger (for
> >      >      >     the uninitialized warnings the code is in
> >      >     gcc/tree-ssa-uninit.cc).
> >      >      >
> >      >      >     Martin
> >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >> Regards,
> >      >      >      >> Krishna Narayanan.
> >      >      >      >>
> >      >      >      >> On Tue, Feb 8, 2022 at 10:28 PM Jonathan Wakely
> >      >      >     <jwakely.gcc@xxxxxxxxx <mailto:jwakely.gcc@xxxxxxxxx>
> >     <mailto:jwakely.gcc@xxxxxxxxx <mailto:jwakely.gcc@xxxxxxxxx>>
> >      >     <mailto:jwakely.gcc@xxxxxxxxx <mailto:jwakely.gcc@xxxxxxxxx>
> >     <mailto:jwakely.gcc@xxxxxxxxx <mailto:jwakely.gcc@xxxxxxxxx>>>>
> >      >      >      >> wrote:
> >      >      >      >>
> >      >      >      >>>
> >      >      >      >>>
> >      >      >      >>> On Tue, 8 Feb 2022 at 16:25, Krishna Narayanan via
> >      >     Gcc-help <
> >      >      >      >>> gcc-help@xxxxxxxxxxx
> >     <mailto:gcc-help@xxxxxxxxxxx> <mailto:gcc-help@xxxxxxxxxxx
> >     <mailto:gcc-help@xxxxxxxxxxx>>
> >      >     <mailto:gcc-help@xxxxxxxxxxx <mailto:gcc-help@xxxxxxxxxxx>
> >     <mailto:gcc-help@xxxxxxxxxxx <mailto:gcc-help@xxxxxxxxxxx>>>> wrote:
> >      >      >      >>>
> >      >      >      >>>> Hello,
> >      >      >      >>>> As an extension to the bug 93432
> >      >      >      >>>>
> >     (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432
> >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432>
> >      >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432
> >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432>>
> >      >      >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432
> >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432>
> >      >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432
> >     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93432>>>), I would
> like to
> >      >      >      >>>> add a few more points,here in the given code
> >      >      >      >>>> (https://godbolt.org/z/sYjqjqh3d
> >     <https://godbolt.org/z/sYjqjqh3d>
> >      >     <https://godbolt.org/z/sYjqjqh3d
> >     <https://godbolt.org/z/sYjqjqh3d>>
> >      >      >     <https://godbolt.org/z/sYjqjqh3d
> >     <https://godbolt.org/z/sYjqjqh3d>
> >      >     <https://godbolt.org/z/sYjqjqh3d
> >     <https://godbolt.org/z/sYjqjqh3d>>>) there is a warning averted but
> >     there
> >      >      >      >>>> is no warning shown for this code
> >      >      >      >>>> (https://gcc.godbolt.org/z/oo5sf4oec
> >     <https://gcc.godbolt.org/z/oo5sf4oec>
> >      >     <https://gcc.godbolt.org/z/oo5sf4oec
> >     <https://gcc.godbolt.org/z/oo5sf4oec>>
> >      >      >     <https://gcc.godbolt.org/z/oo5sf4oec
> >     <https://gcc.godbolt.org/z/oo5sf4oec>
> >      >     <https://gcc.godbolt.org/z/oo5sf4oec
> >     <https://gcc.godbolt.org/z/oo5sf4oec>>>) .
> >      >      >      >>>> I tried it with "-fno-strict-aliasing -fwrapv
> >      >      >      >>>> -fno-aggressive-loop-optimizations" and
> >      >      >     "fsanitize=undefined".There
> >      >      >      >>>> are no errors for gcc but clang has runtime
> >     errors,the
> >      >     error for
> >      >      >      >>>> clang: https://gcc.godbolt.org/z/1hq8x1o8E
> >     <https://gcc.godbolt.org/z/1hq8x1o8E>
> >      >     <https://gcc.godbolt.org/z/1hq8x1o8E
> >     <https://gcc.godbolt.org/z/1hq8x1o8E>>
> >      >      >     <https://gcc.godbolt.org/z/1hq8x1o8E
> >     <https://gcc.godbolt.org/z/1hq8x1o8E>
> >      >     <https://gcc.godbolt.org/z/1hq8x1o8E
> >     <https://gcc.godbolt.org/z/1hq8x1o8E>>> .
> >      >      >      >>>>
> >      >      >      >>>> Can we have a warning in the second case as
> well? It
> >      >     will be
> >      >      >     much more
> >      >      >      >>>> convenient as there is a lapse of initialization.
> >      >      >      >>>>
> >      >      >      >>>
> >      >      >      >>> Yes, ideally it would warn.
> >      >      >      >>>
> >      >      >      >>>
> >      >      >      >>>
> >      >      >      >>
> >      >      >
> >      >
> >
>
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux