From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 324 invoked by alias); 1 Dec 2010 13:42:51 -0000 Received: (qmail 32666 invoked by uid 22791); 1 Dec 2010 13:42:49 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_KG X-Spam-Check-By: sourceware.org Received: from mail-ew0-f41.google.com (HELO mail-ew0-f41.google.com) (209.85.215.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 01 Dec 2010 13:42:41 +0000 Received: by ewy27 with SMTP id 27so17128412ewy.0 for ; Wed, 01 Dec 2010 05:42:39 -0800 (PST) Received: by 10.216.7.210 with SMTP id 60mr6716246wep.97.1291210958684; Wed, 01 Dec 2010 05:42:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.186.148 with HTTP; Wed, 1 Dec 2010 05:42:18 -0800 (PST) In-Reply-To: References: From: Hui Zhu Date: Wed, 01 Dec 2010 13:42:00 -0000 Message-ID: Subject: Re: [PATCH] Built kernel without -O2 option To: =?ISO-8859-1?Q?Petr_Hluz=EDn?= Cc: Arnaud Lacombe , linux-kernel@vger.kernel.org, gdb@sourceware.org, hellogcc@freelists.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2010-12/txt/msg00009.txt.bz2 On Wed, Dec 1, 2010 at 06:40, Petr Hluz=EDn wrote: > On 29 November 2010 22:07, Arnaud Lacombe wrote: >> Hi, >> >> On Sun, Nov 28, 2010 at 10:56 PM, Hui Zhu wrote: >>> Hi, >>> >>> Now, there are a lot of ways to debug the Linux kernel with GDB, like >>> qemu, kgtp or kgdb and so on. >>> But the developer more like add a printk. It have a lot of reason, a bi= g one is: >>> (gdb) p ret >>> $3 =3D >>> And the code execution order is not right. >>> >>> This is becuase the Kernel is bult with gcc -O2. =A0Gcc will not >>> generate enough debug message with file with -O2. >>> So GDB cannot work very well with Linux kernel. >>> >>> So I make a patch that add a option in "Kernel hacking" called "Close >>> GCC optimization". =A0It will make kernel be built without -O2. >>> >> no, it does not, see below .. >> >>> I built and use it in i386 and x86_64. =A0I will try to make it OK in o= ther arch. >>> >>> And I will put new patch in here and >>> http://code.google.com/p/kgtp/downloads/list >>> >>> Thanks, >>> Hui >>> >>> Signed-off-by: Hui Zhu >>> --- >>> [...] >>> +ifdef CONFIG_CC_CLOSE_OPTIMIZATION >>> +CFLAGS_process_$(BITS).o =A0 =A0 =A0 +=3D -O2 >>> +CFLAGS_entry_$(BITS).o =A0 =A0 =A0 =A0 +=3D -O2 >>> +CFLAGS_traps.o =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 +=3D -O2 >>> +CFLAGS_i387.o =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0+=3D -O2 >>> +CFLAGS_xsave.o =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 +=3D -O2 >>> +CFLAGS_hpet.o =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0+=3D -O2 >>> +endif >>> >>> [...] >>> >>> --- a/lib/Kconfig.debug >>> +++ b/lib/Kconfig.debug >>> @@ -136,6 +136,14 @@ config DEBUG_SECTION_MISMATCH >>> =A0 =A0 =A0 =A0 =A0- Enable verbose reporting from modpost to help solv= ing >>> =A0 =A0 =A0 =A0 =A0 =A0the section mismatches reported. >>> >>> +config CC_CLOSE_OPTIMIZATION >>> + =A0 =A0 =A0 bool "Close GCC optimization" >>> + =A0 =A0 =A0 default n >>> + =A0 =A0 =A0 help >>> + =A0 =A0 =A0 =A0 Enabling this option will let gcc build kernel withou= t "-O2". >>> + >>> + =A0 =A0 =A0 =A0 If unsure, say N. >>> + >> You are not consistent with yourself, you add an option saying "do not >> build the kernel with -O2" and yet, you add "-O2" flags for unknown >> reason all over the tree... > > The patch removes -O2 compilation flag from all files (see the > fragment below) and adds the flag to the few files that actually need > the flag. Unfortunately the patch does not explain that and the noise > of adding the flag obscures the main thing. > >>> +++ b/Makefile >>> @@ -540,8 +540,10 @@ all: vmlinux >>> =A0ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE >>> =A0KBUILD_CFLAGS =A0+=3D -Os >>> =A0else >>> +ifndef CONFIG_CC_CLOSE_OPTIMIZATION >>> =A0KBUILD_CFLAGS =A0+=3D -O2 >>> =A0endif >>> +endif > > Hui, The name of the config option is close to meaningless. I suggest: > > - config CONFIG_CC_CLOSE_OPTIMIZATION > - =A0 =A0 =A0 bool "Close GCC optimization" > + config CONFIG_CC_NO_OPTIMIZATION > + =A0 =A0 =A0 bool "Compile with almost no optimization" > =A0 =A0 =A0 =A0default n > =A0 =A0 =A0 =A0help > - =A0 =A0 =A0 =A0 =A0Enabling this option will let gcc build kernel witho= ut "-O2". > + =A0 =A0 =A0 =A0 =A0Enabling this option will let gcc build kernel with = no > optimization (where possible). > + =A0 =A0 =A0 =A0 =A0 This makes debugging friendlier. > > > -- > Petr Hluzin > Thanks Petr. I will fix them add try add some comments. Thanks, Hui