From owner-freebsd-hackers@FreeBSD.ORG Tue May 19 00:29:51 2015 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EA560306 for ; Tue, 19 May 2015 00:29:51 +0000 (UTC) Received: from mail-qg0-x22a.google.com (mail-qg0-x22a.google.com [IPv6:2607:f8b0:400d:c04::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A4C371B15 for ; Tue, 19 May 2015 00:29:51 +0000 (UTC) Received: by qgfa7 with SMTP id a7so43714170qgf.1 for ; Mon, 18 May 2015 17:29:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=J+bn0/Gyg5FXPXLF3IeyE05rbfv/ujWiPSyx7/uwGdI=; b=KzXCE1CFtl8da/OmsFO+HRc260m3tWG9pEqv85JFJeyCEeJL6J3Ed8C1QG6W9ho++Z K+v0hQTWZ52Ekqj4bsf9iL9yT9XNazqlgAx1xg0BCZJ+Easa49BuxwKiM0FIz+2NaJf4 J7igcVplwR9yxPSpzjIj6+Ed1ByadcSKv8GXQJxexiXHtX0S0w2txm8F6LqaaGVxnzM9 dZHoaf66kSug1b5uMe6smMYXqpoF0I6WEbhVsuZJPQxsr3IZcjo1aM+R3aC/Ge/ftf6h 5IROC/DzloLRFZ/3HIIqWAJWLrIjSM1eJF0M3XALwaCWCYnWGDBgAwJv9Q2Mb13grGFj Zorg== MIME-Version: 1.0 X-Received: by 10.55.51.129 with SMTP id z123mr52664475qkz.102.1431995390769; Mon, 18 May 2015 17:29:50 -0700 (PDT) Received: by 10.140.98.73 with HTTP; Mon, 18 May 2015 17:29:50 -0700 (PDT) In-Reply-To: References: <554E41EE.2010202@ignoranthack.me> <554E4BD1.1030802@ignoranthack.me> <406EAA27-D825-408B-985E-DC3FFE746473@frob.org> <554E5263.8010205@ignoranthack.me> <20150509190347.10e1e2c2@kan> Date: Mon, 18 May 2015 17:29:50 -0700 Message-ID: Subject: Re: How to get anything useful out of kgdb? From: NGie Cooper To: Alexander Kabaev Cc: Sean Bruno , "freebsd-hackers@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 May 2015 00:29:52 -0000 On Mon, May 18, 2015 at 3:44 PM, NGie Cooper wrote: ... > This isn't working as advertised. > > While trying to track down issues with clang at $work with variables > that were optimized out, I noticed that it was passing through -O2 > explicitly, even though DEBUG=-g was defined in our KERNCONF, which is > supposed to set _MINUS_O to -O. > > I did some more poking around and it appears to always be the case > with 11-CURRENT as well (see below). > > I'll post a diff for kern.pre.mk that fixes this on Phabricator soon, > because this is breaking our debuggability of clang kernels. > > Thanks, > -NGie > > $ git diff sys/conf/kern.pre.mk > diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk > index 8c3b9c6..2ab0647 100644 > --- a/sys/conf/kern.pre.mk > +++ b/sys/conf/kern.pre.mk > @@ -102,6 +102,8 @@ CFLAGS.gcc+=${CFLAGS_ARCH_PARAMS} > .endif > WERROR?= -Werror > > +.error "CFLAGS: ${CFLAGS}" > + > # XXX LOCORE means "don't declare C stuff" not "for locore.s". > ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} ${ASM_CFLAGS.${.IMPSRC:T}} > > $ script ts make buildkernel KERNCONF=GENERIC > KERNCONFDIR=/sys/amd64/conf/ SRCCONF=/dev/null __MAKE_CONF=/dev/null > -j12 > Script started, output file is ts > --- buildkernel --- > --- buildkernel --- > -------------------------------------------------------------- >>>> Kernel build for GENERIC started on Mon May 18 15:38:04 PDT 2015 > -------------------------------------------------------------- > ===> GENERIC > mkdir -p /usr/obj/usr/src/sys > -------------------------------------------------------------- >>>> stage 1: configuring the kernel > -------------------------------------------------------------- > cd /usr/src/sys/amd64/conf; > PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin > config -d /usr/obj/usr/src/sys/GENERIC -I '/sys/amd64/conf/' > '/sys/amd64/conf//GENERIC' > Kernel build directory is /usr/obj/usr/src/sys/GENERIC > Don't forget to do ``make cleandepend && make depend'' > -------------------------------------------------------------- >>>> stage 2.1: cleaning up the object tree > -------------------------------------------------------------- > cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj > MACHINE_ARCH=amd64 MACHINE=amd64 CPUTYPE= > GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin > GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font > GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac > _SHLIBDIRPREFIX=/usr/obj/usr/src/tmp _LDSCRIPTROOT= VERSION="FreeBSD > 11.0-CURRENT amd64 1100073" INSTALL="sh /usr/src/tools/install.sh" > PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin > CC="cc " CXX="c++ " DEPFLAGS="" CPP="cpp " AS="as" AR="ar" LD="ld" > NM=nm OBJDUMP=objdump OBJCOPY="objcopy" RANLIB=ranlib STRINGS= > SIZE="size" make -j 12 -J 15,16 -m /usr/src/share/mk KERNEL=kernel > cleandir > make[2]: "/usr/src/sys/conf/kern.pre.mk" line 105: "CFLAGS: -O2 -pipe > -fno-strict-aliasing -g -nostdinc -I. -I/usr/src/sys -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h" > > From /usr/obj/usr/src/sys/GENERIC/Makefile: > > 1 KERN_IDENT=GENERIC > 2 MACHINE=amd64 > 3 MACHINE_ARCH=amd64 > 4 WITH_CTF=1 > 5 DEBUG=-g > 6 S=/usr/src/sys As a sidenote, this has been broken for over a decade: https://svnweb.freebsd.org/base?view=revision&revision=127204 :(...