Hi,

there have been submitted these Bugs:
        Drop the gcc dependency
        https://bugzilla.redhat.com/show_bug.cgi?id=1195005
        gdb pulls in devel packages (gcc, kernel-headers, etc.) [former Summary]
        https://bugzilla.redhat.com/show_bug.cgi?id=1306591

due to recent GDBs having new:
        Recommends: gcc-gdb-plugin%{?_isa}
which brings in the whole GCC compiler.  Reasons for this new Recommends are
at the bottom of this mail labeled: Why to use gcc-gdb-plugin

Given that ABRT is installed by default and ABRT
        Requires: gdb
this dependency installs GCC now even on servers and end-user machines (AFAIK,
I haven't tried that but it does make sense).

I believe that from the error message:
        (gdb) compile print EXPRESSION
        Could not load libcc1.so: libcc1.so: cannot open shared object file: No 
such file or directory
a Fedora user does not realize s/he should run:
        # dnf install gcc-gdb-plugin
Which is why I made it Recommends and not Suggests.  Also in the close future
GDB will provide more functional
        (gdb) print EXPRESSION
feature only with gcc-gdb-plugin installed.  Just ABRT does not need
'print EXPRESSION' to use gcc-gdb-plugin but I guess any user running GDB
interatively does use 'print EXPRESSION'.

Unrelated to gcc-gdb-plugin there is already this 'dnf'-suggesting GDB message:
        $ gdb -q true
        Missing separate debuginfos, use: dnf debuginfo-install 
coreutils-8.25-14.fc25.x86_64
        (gdb) _

Therefore I could patch Fedora GDB to also print instead:
        (gdb) compile print EXPRESSION
        Missing compiler, use: dnf install gcc-gdb-plugin

But that debuginfo-install command is already wrong on its own, despite Fedora
GDB prints that for 8 years now (sure with yum before).  One inconvenience is
that one has to copy-paste it, instead of just some YES confirmation to run
that command.  But GUI users probably do not want to run 'dnf' from a shell
- they want to run some GUI package manager instead (I do not know which one).

One can also see that such message does not work for GUI frontends of GDB:
        $ cdtdebug -e true
If you do not have coreutils-debuginfo.rpm installed then Eclipse will print
just:
        No source available for "main() at 0x555555557480" 
without any hint one could run debuginfo-install to fix that.

Another possibility is to change ABRT so that it only Suggests GDB and ABRT
provides some user interface to install gdb.rpm upon demand:
        https://bugzilla.redhat.com/show_bug.cgi?id=1195005#c18
This just moves this problem from GDB to ABRT.

As a summary: Is there a 'sudo dnf install' (and 'sudo dnf debuginfo-install')
like command which does use GUI package manager if $DISPLAY is available?  
GDB could also run some different command if $DISPLAY is available.
Is this the recommended solution?  Or should I submit a FESCo ticket?


Thanks,
Jan

------------------------------------------------------------------------------
Why to use gcc-gdb-plugin:

The primary goal is to support complex expressions needed for C++ debugging.
Unfortunately current GDB does not yet support gcc-gdb-plugin for C++,
currently only C is supported.  Therefore providing a usecase for C below.
More thorough background about C++ can be found at:
        https://sourceware.org/gdb/wiki/GCCCompileAndExecute#History_and_Genesis

gcc-gdb-plugin is now required for
        (gdb) compile print ...
such as:
        echo -e '#include <math.h>\nint main(){return (int)HUGE_VAL;}' >1.c|gcc 
-Wall -g3 1.c;gdb -q ./a.out -ex start 
        Reading symbols from ./a.out...done.
        Temporary breakpoint 1 at 0x4004aa: file 1.c, line 2.
        Starting program: /tmp/a.out 
        Temporary breakpoint 1, main () at 1.c:2
        2       int main(){return (int)HUGE_VAL;}
        (gdb) info macro HUGE_VAL
        Defined at /usr/include/bits/huge_val.h:27
          included at /usr/include/math.h:36
          included at /tmp/1.c:1
        #define HUGE_VAL (__builtin_huge_val())
->
        (gdb) print HUGE_VAL
        No symbol "__builtin_huge_val" in current context.
vs.
        (gdb) compile print HUGE_VAL
        $1 = inf

Without gcc-gdb-plugin GDB would print only:
        (gdb) compile print HUGE_VAL
        Could not load libcc1.so: libcc1.so: cannot open shared object file: No 
such file or directory

Additionally it is expected that future GDB will use
        (gdb) compile print EXPRESSION
for any use of:
        (gdb) compile EXPRESSION
--
devel mailing list
devel@lists.fedoraproject.org
https://lists.fedoraproject.org/admin/lists/devel@lists.fedoraproject.org

Reply via email to