From: Vivek Goyal <vgoyal@in.ibm.com>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb@sources.redhat.com, dan@debian.org, fastboot@lists.osdl.org,
linux-kernel@vger.kernel.org, akpm@osdl.org, bunk@stusta.de,
alexn@dsv.su.se
Subject: Re: [Fastboot] Re: [-mm patch] i386: enable REGPARM by default
Date: Wed, 29 Jun 2005 17:17:02 +0530 [thread overview]
Message-ID: <20050629114702.GD3771@in.ibm.com> (raw)
In-Reply-To: <8824.192.87.1.200.1120039619.squirrel@192.87.1.200>
> > In this case I am building linux kernel with debug info (-g) and -mregparm
> > is not specified. So parameters should be passed on stack. Following
> > is the effective command line to build kernel/sysfs.c. I am not sure if
> > any of the below mentioned options are going to affect the gdb results.
> >
> > gcc -m32 -Wp,-MD,kernel/.ksysfs.o.d -nostdinc -isystem
> > /usr/lib/gcc/i386-redhat-linux/3.4.3/include -D__KERNEL__ -Iinclude
> > -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing
> > -fno-common -ffreestanding -O2 -fomit-frame-pointer -g -pipe
> > -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time
> > -march=i686 -mtune=pentium4 -Iinclude/asm-i386/mach-default
> > -Wdeclaration-after-statement -DKBUILD_BASENAME=ksysfs
> > -DKBUILD_MODNAME=ksysfs -c -o kernel/ksysfs.o kernel/ksysfs.c
>
> -O2 will have some effect. The compiler might optimize away variables
> (including function arguments) and doesn't always record that fact in
> the debug information.
>
> But the real killer here is probably -fomit-frame-pointer. Last time I
> looked GCC didn't generate the correct debug information in that case.
> I didn't really look into this, but it seemed as if GCC blindly produces
> location descriptions relative to the frame pointer even though there no
> longer is a frame pointer. GCC 4.0 or 4.1 might have this fixed.
>
> >
> >> Repeating what Daniel said before, by using "regparm", function
> >> arguments are now passed in registers instead of on the stack. It's
> >> extremely unlikely that these function arguments will stay in those
> >> registers for ever, especially since you've only got a handfull of
> >> them on the i386.
> >
> > Sorry for the confusion. In the last mail all the results were reported
> > with REGPARM disabled. I wanted to make sure that first normal case works
> > fine and then discuss the REGPARM case later.
>
> If you're prepared to do some more tests, you might want to check out
> what happens if you leave out -O2 and -fomit-frame-pointer, and then add
> back only -O2
I built another kernel with -fno-omit-frame-pointer and output seems to
have worsen a lot now. I am not able to build a kernel without -02. There
seems to be some dependencies which I am sorting out.
With frame pointer support, following is the command line.
gcc -m32 -Wp,-MD,kernel/.ksysfs.o.d -nostdinc -isystem /usr/lib/gcc/i386-redhat-linux/3.4.3/include -D__KERNEL__ -Iinclude -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement -DKBUILD_BASENAME=ksysfs -DKBUILD_MODNAME=ksysfs -c -o kernel/ksysfs.o kernel/ksysfs.c
And the gdb trace has worsened. Trace is not even showing all the calls
as it was showing when kernel was built with -fomit-frame-pointer.
#0 crash_get_current_regs (regs=0xec3b5e34) at arch/i386/kernel/crash.c:103
#1 0xc0114077 in crash_save_self (saved_regs=0xec3b5e34)
at arch/i386/kernel/crash.c:134
#2 0xec3b5f04 in ?? ()
#3 0x00000014 in ?? ()
#4 0xec3b5e98 in ?? ()
#5 0xc013d7e6 in crash_kexec (regs=0x2) at kernel/kexec.c:1059
#6 0xecb29c80 in ?? ()
#7 0xecb29c80 in ?? ()
#8 0x00000000 in ?? ()
Thanks
Vivek
next prev parent reply other threads:[~2005-06-29 11:47 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-24 20:09 [-mm patch] i386: enable REGPARM by default Adrian Bunk
2005-06-24 20:28 ` Andrew Morton
2005-06-24 23:08 ` [Fastboot] " Alexander Nyberg
2005-06-27 13:29 ` Vivek Goyal
2005-06-27 14:00 ` Daniel Jacobowitz
2005-06-28 4:51 ` Vivek Goyal
2005-06-28 11:24 ` Vivek Goyal
2005-06-28 19:59 ` Mark Kettenis
2005-06-29 8:34 ` Vivek Goyal
2005-06-29 10:06 ` Mark Kettenis
2005-06-29 11:47 ` Vivek Goyal [this message]
2005-06-25 7:46 ` Denis Vlasenko
2005-06-28 12:16 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050629114702.GD3771@in.ibm.com \
--to=vgoyal@in.ibm.com \
--cc=akpm@osdl.org \
--cc=alexn@dsv.su.se \
--cc=bunk@stusta.de \
--cc=dan@debian.org \
--cc=fastboot@lists.osdl.org \
--cc=gdb@sources.redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.kettenis@xs4all.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.