Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 2011 18:51:47 -0800
From:      Garrett Cooper <yanegomi@gmail.com>
To:        Alexander Best <arundel@freebsd.org>
Cc:        "freebsd-current@freebsd.org" <freebsd-current@freebsd.org>, Dimitry Andric <dim@freebsd.org>, Benjamin Kaduk <kaduk@MIT.EDU>
Subject:   Re: [patch] Cleaning up amd64 kernel optimization options
Message-ID:  <25FBBF23-CDFA-429E-966D-A90409D8F2BD@gmail.com>
In-Reply-To: <20111223005932.GA65042@freebsd.org>
References:  <4EF34E52.2040905@FreeBSD.org> <20111222192549.GA19008@freebsd.org> <alpine.GSO.1.10.1112221948430.882@multics.mit.edu> <20111223005932.GA65042@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Dec 22, 2011, at 4:59 PM, Alexander Best <arundel@freebsd.org> wrote:

> On Thu Dec 22 11, Benjamin Kaduk wrote:
>> On Thu, 22 Dec 2011, Alexander Best wrote:
>> 
>>> On Thu Dec 22 11, Dimitry Andric wrote:
>>>> Hi,
>>>> 
>>>> I would like to ask some feedback on the attached patch, which cleans up
>>>> the kernel optimization options for amd64.  This was touched upon
>>>> earlier by Alexander Best in freebsd-toolchain, here:
>>> 
>>> i've been using such settings for a few months now and haven't noticed any
>>> problems.
>>> 
>>> however bruce evans raised a good point (in a private mail). when you 
>>> compile a
>>> kernel without debugging enabled, -O2 is the default. if you experience 
>>> issues,
>>> and enable debugging, -O0 now becomes the default. in case the problems 
>>> with
>>> the kernel were caused by the -O2 option and aren't present with the -O0
>>> option, the newly built kernel with debugging enabled will not help you 
>>> fix the
>>> problems. in that case you would need to set -O2 explicitly in CFLAGS. his
>>> exact words were:
>>> 
>>> "
>>> I don't like -O2 for anything.  However, if it is only a default, it is
>>> not a problem provided it can be canceled easily.  And for debugging, you
>>> want the default to be the same as without debugging, so that (by default)
>>> you debug the same code that caused the problem.
>>> "
>>> 
>>> however i don't think this is fixable. using -O0 for debuggable and
>>> non-debuggable kernels will cause too much of a slowdown.
>>> 
>>> having -O2 as the default flag for non-debuggable kernels and -O2 -g for
>>> debuggable kernels might cause situations, where debugging isn't possible,
>>> where with -O0 -g it would have been.
>>> 
>>> so i guess although bruces concerns are valid, they are impossible to 
>>> solve.
>> 
>> Where does -O0 come in?  I only see talk of -O (i.e. -O1) versus -O2.
> 
> sorry. of course i meant -O:
> 
> .if defined(DEBUG)
> _MINUS_O=       -O
> CTFFLAGS+=      -g
> .else
> [..]

Back in the 7.x days, I ran into some code that wasn't easily to debug because the compiler optimized things out with -O2 by inlining and otherwise shifting around code, so setting breakpoints in gdb became difficult. So from that point on I've gotten into the habit of doing -O explicitly in make.conf if DEBUG_FLAGS was specified. Just a thought..
-Garrett


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?25FBBF23-CDFA-429E-966D-A90409D8F2BD>