Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Aug 2016 01:07:39 -0700
From:      "K. Macy" <kmacy@freebsd.org>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        Ryan Stone <rysto32@gmail.com>, FreeBSD Hackers <freebsd-hackers@freebsd.org>,  Samy Bahra <sbahra@backtrace.io>
Subject:   Re: How to get better debugging for the kernel.
Message-ID:  <CAHM0Q_OHE%2Bj1TfnYfJ7w1v7MpbRTcwE7mQnpnyY=GG%2BDHzwETg@mail.gmail.com>
In-Reply-To: <5cc825d5-9ed7-efac-b711-60a8d4b18cc4@FreeBSD.org>
References:  <CACpH0Mcw1oTatUX3d7gJ4ys=dAj_y9C9vF_g110MrHVEup4mjQ@mail.gmail.com> <CAFMmRNwLeEtEetQ-CZkyCC7rL-724GWEL6JF4pWAocTyC1Cu3w@mail.gmail.com> <5cc825d5-9ed7-efac-b711-60a8d4b18cc4@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Aug 3, 2016 at 12:53 PM, Andriy Gapon <avg@freebsd.org> wrote:
> On 03/08/2016 20:14, Ryan Stone wrote:
>> Are you using the kgdb from the base system or from ports(it's a part of
>> devel/gdb)?  The kgdb in ports is significantly better.  If you haven't
>> tried the version from ports already, definitely do that first.
>
> kgdb 7.x from ports is certainly more powerful than the old base kgdb,
> but clang with O2 optimizations seems to be too much even for it.

Samy did a good presentation about this issue. I'm hoping I can get
him to put his slides on line. Evidently clang is much more simplistic
about how it treats callee saved registers. In essence clang will
always err on the side of saying "optimized out" even when it has
sufficient state to know otherwise. Gcc, on the other hand will
sometimes incorrectly infer that a value is valid when it is in fact
not.

I have been building some kernels with clang with dwarf4 enabled (and
thus needed to use kgdb 7.x from ports). Contrary to what I have heard
from some others I have found it to have virtually no added benefit.

There is evidently some mechanism for appending an epilogue to
functions. This would allow us to conditionally force clang to treat
all function argument as being live to the end of the function.

-M



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHM0Q_OHE%2Bj1TfnYfJ7w1v7MpbRTcwE7mQnpnyY=GG%2BDHzwETg>