From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27563 invoked by alias); 30 Nov 2010 22:40:30 -0000 Received: (qmail 27448 invoked by uid 22791); 30 Nov 2010 22:40:28 -0000 X-SWARE-Spam-Status: No, hits=-1.9 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-fx0-f41.google.com (HELO mail-fx0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 30 Nov 2010 22:40:23 +0000 Received: by fxm13 with SMTP id 13so5581237fxm.0 for ; Tue, 30 Nov 2010 14:40:21 -0800 (PST) Received: by 10.223.118.136 with SMTP id v8mr7403733faq.90.1291156820988; Tue, 30 Nov 2010 14:40:20 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.98.202 with HTTP; Tue, 30 Nov 2010 14:40:00 -0800 (PST) In-Reply-To: References: From: =?UTF-8?B?UGV0ciBIbHV6w61u?= Date: Tue, 30 Nov 2010 22:40:00 -0000 Message-ID: Subject: Re: [PATCH] Built kernel without -O2 option To: Arnaud Lacombe Cc: Hui Zhu , linux-kernel@vger.kernel.org, gdb@sourceware.org, hellogcc@freelists.org Content-Type: text/plain; charset=UTF-8 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-11/txt/msg00136.txt.bz2 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 big= 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. =C2=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". =C2=A0It will make kernel be built without -O2. >> > no, it does not, see below .. > >> I built and use it in i386 and x86_64. =C2=A0I will try to make it OK in= other 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 =C2=A0 =C2=A0 =C2=A0 +=3D -O2 >> +CFLAGS_entry_$(BITS).o =C2=A0 =C2=A0 =C2=A0 =C2=A0 +=3D -O2 >> +CFLAGS_traps.o =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = +=3D -O2 >> +CFLAGS_i387.o =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0+=3D -O2 >> +CFLAGS_xsave.o =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = +=3D -O2 >> +CFLAGS_hpet.o =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0+=3D -O2 >> +endif >> >> [...] >> >> --- a/lib/Kconfig.debug >> +++ b/lib/Kconfig.debug >> @@ -136,6 +136,14 @@ config DEBUG_SECTION_MISMATCH >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- Enable verbose reporting from modpos= t to help solving >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0the section mismatches reported. >> >> +config CC_CLOSE_OPTIMIZATION >> + =C2=A0 =C2=A0 =C2=A0 bool "Close GCC optimization" >> + =C2=A0 =C2=A0 =C2=A0 default n >> + =C2=A0 =C2=A0 =C2=A0 help >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 Enabling this option will let gcc build ke= rnel without "-O2". >> + >> + =C2=A0 =C2=A0 =C2=A0 =C2=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 >> ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE >> KBUILD_CFLAGS +=3D -Os >> else >> +ifndef CONFIG_CC_CLOSE_OPTIMIZATION >> KBUILD_CFLAGS +=3D -O2 >> endif >> +endif Hui, The name of the config option is close to meaningless. I suggest: - config CONFIG_CC_CLOSE_OPTIMIZATION - bool "Close GCC optimization" + config CONFIG_CC_NO_OPTIMIZATION + bool "Compile with almost no optimization" default n help - Enabling this option will let gcc build kernel without "-O2". + Enabling this option will let gcc build kernel with no optimization (where possible). + This makes debugging friendlier. --=20 Petr Hluzin