From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10242 invoked by alias); 13 Oct 2006 22:56:42 -0000 Received: (qmail 10234 invoked by uid 22791); 13 Oct 2006 22:56:42 -0000 X-Spam-Status: No, hits=-1.4 required=5.0 tests=BAYES_00,DATE_IN_PAST_12_24,SPF_PASS X-Spam-Check-By: sourceware.org Received: from ausmtp04.au.ibm.com (HELO ausmtp04.au.ibm.com) (202.81.18.152) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 13 Oct 2006 22:56:39 +0000 Received: from sd0208e0.au.ibm.com (d23rh904.au.ibm.com [202.81.18.202]) by ausmtp04.au.ibm.com (8.13.8/8.13.5) with ESMTP id k9DN5wVQ262890 for ; Sat, 14 Oct 2006 09:05:58 +1000 Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.250.243]) by sd0208e0.au.ibm.com (8.13.6/8.13.6/NCO v8.1.1) with ESMTP id k9DMxp99213636 for ; Sat, 14 Oct 2006 08:59:51 +1000 Received: from d23av02.au.ibm.com (loopback [127.0.0.1]) by d23av02.au.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id k9DMqNwY010990 for ; Sat, 14 Oct 2006 08:52:24 +1000 Received: from d23ml007.au.ibm.com (d23ml007.au.ibm.com [9.190.250.28]) by d23av02.au.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k9DMqNrS010975; Sat, 14 Oct 2006 08:52:23 +1000 In-Reply-To: <452D00E9.7000702@us.ibm.com> Subject: Re: gcc stop compiling a large stap generated c file To: Vara Prasad Cc: amodra@bigbpond.net.au, guanglei@cn.ibm.com, "systemtap@sourceware.org" X-Mailer: Lotus Notes Release 7.0.1 June 22, 2006 Message-ID: From: Alan Modra Date: Fri, 13 Oct 2006 22:56:00 -0000 X-MIMETrack: Serialize by Router on d23ml007/23/M/IBM(Release 6.5.5HF262 | April 5, 2006) at 14/10/2006 08:56:23 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2006-q4/txt/msg00120.txt.bz2 It is correct that both ppc32 and ppc64 gcc have a limitiation in the size of their toc/got sections. Compiling functions with a large number of static vars will hit the limit. Newer versions of gcc provide -fsection-anchors which can help quite a lot. Vara Prasad wrote on 12/10/2006 00:04:17: > Looking at the gcc bug explanation from Alan looks like there is a > limitation on the power platform hence there may not be an immediate fix > from the compiler/linker side. Alan, please feel free to correct me if i > am wrong. I guess that leaves us with only option to generate better > code on our end. > > Li Guanglei can you open a bug for this in the bugzilla. > > Frank, can we have this bug looked at bit higher than normal priority, I > think we should definitely fix this before RHEL 5. > > Li Guanglei wrote: > > > Hi, > > > > I tried: stap -e 'probe addevent.* {}' -bM -v > > on ppc64/RHEL4u4/gcc-3.4.6, and got a lot of errors of "operand out > > of range". > > > > the generated c file is really big: > > > > root:/tmp/stapRl4mJy> ll -h > > total 7.5M > > -rw-r--r-- 1 root root 128 Oct 9 17:53 Makefile > > -rw-r--r-- 1 root root 6.3M Oct 9 17:53 stap_11644.c > > -rw-r--r-- 1 root root 714K Oct 9 17:53 stap-symbols.h > > -rw-r--r-- 1 root root 527K Oct 9 17:53 symbols.sorted > > > > I searched gcc bugzilla, and found someone reported the same kind of > > error on gcc 4.1: > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28904 > > > > I think it's common for SystemTap to generate a large c file if the > > number of probes and functions turned on is big. I tried on i386 and > > it doesn't have this error. Does anyone know if there is any > > alternative to avoid such error for ppc64? > > > > thanks. > > > > - Guanglei > > > >------------------------------------------------------------------------ > > > >Running grep " [tT] " /proc/kallsyms | sort -k 1,8 -s -o > /tmp/stapRl4mJy/symbols.sorted > >Pass 3: translated to C into "/tmp/stapRl4mJy/stap_11644.c" in > 1180usr/200sys/1614real ms. > >Running make -C "/lib/modules/2.6.17.9/build" M="/tmp/stapRl4mJy" modules V=1 > >make: Entering directory `/usr/src/linux-2.6.17.9' > >mkdir -p /tmp/stapRl4mJy/.tmp_versions > >rm -f /tmp/stapRl4mJy/.tmp_versions/* > >make -f scripts/Makefile.build obj=/tmp/stapRl4mJy > > gcc -m64 -Wp,-MD,/tmp/stapRl4mJy/.stap_11644.o.d -nostdinc - > isystem /usr/lib/gcc/ppc64-redhat-linux/3.4.6/include -D__KERNEL__ - > Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict- > prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os - > fomit-frame-pointer -g -msoft-float -pipe -mminimal-toc - > mtraceback=none -mcall-aixdesc -mtune=power4 -mno-altivec -funit- > at-a-time -mstring -Wa,-maltivec -Wdeclaration-after-statement - > freorder-blocks -Wno-unused -Werror - > I"/usr/local/share/systemtap/runtime" -DMODULE -D"KBUILD_STR(s) > =#s" -D"KBUILD_BASENAME=KBUILD_STR(stap_11644)" - > D"KBUILD_MODNAME=KBUILD_STR(stap_11644)" -c -o /tmp/stapRl4mJy/. > tmp_stap_11644.o /tmp/stapRl4mJy/stap_11644.c > >{standard input}: Assembler messages: > >{standard input}:642879: Error: operand out of range > (0x0000000000008000 is not between 0xffffffffffff8000 and 0x0000000000007fff) > >{standard input}:642895: Error: operand out of range > (0x0000000000008008 is not between 0xffffffffffff8000 and 0x0000000000007fff) > >{standard input}:643196: Error: operand out of range > (0x0000000000008018 is not between 0xffffffffffff8000 and 0x0000000000007fff) > >{standard input}:643197: Error: operand out of range > (0x0000000000008010 is not between 0xffffffffffff8000 and 0x0000000000007fff) > >{standard input}:643284: Error: operand out of range > (0x0000000000008020 is not between 0xffffffffffff8000 and 0x0000000000007fff) > >{standard input}:643300: Error: operand out of range > (0x0000000000008028 is not between 0xffffffffffff8000 and 0x0000000000007fff) > >... > > > > > >