From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4901 invoked by alias); 19 Jun 2010 16:13:15 -0000 Received: (qmail 4891 invoked by uid 22791); 19 Jun 2010 16:13:12 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,TW_AV X-Spam-Check-By: sourceware.org Received: from mail-px0-f169.google.com (HELO mail-px0-f169.google.com) (209.85.212.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 19 Jun 2010 16:13:02 +0000 Received: by pxi14 with SMTP id 14so2264854pxi.0 for ; Sat, 19 Jun 2010 09:13:01 -0700 (PDT) Received: by 10.142.66.35 with SMTP id o35mr1790856wfa.300.1276963981193; Sat, 19 Jun 2010 09:13:01 -0700 (PDT) MIME-Version: 1.0 Received: by 10.143.32.8 with HTTP; Sat, 19 Jun 2010 09:12:41 -0700 (PDT) In-Reply-To: <4C1A6362.3020306@vmware.com> References: <201006071700.28706.pedro@codesourcery.com> <4C19222C.2000208@codesourcery.com> <201006162016.18181.pedro@codesourcery.com> <4C19265B.7090502@codesourcery.com> <4C1A6362.3020306@vmware.com> From: Hui Zhu Date: Sat, 19 Jun 2010 16:13:00 -0000 Message-ID: Subject: Re: [NEWS/RFA] Re: [gdbserver] x86 agent expression bytecode compiler (speed up conditional tracepoints) To: Pedro Alves Cc: Stan Shebs , Doug Evans , "gdb-patches@sourceware.org" , Eli Zaretskii , "tromey@redhat.com" , Michael Snyder Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-06/txt/msg00427.txt.bz2 lubuntu 10.04: make[4]: ?????? `/home/teawater/gdb/bgdball/gdb/gdbserver' rm -f gdbserver gcc -Wall -g -O2 -I. -I../../../src/gdb/gdbserver -I../../../src/gdb/gdbserver/../common -I../../../src/gdb/gdbserver/../regformats -I../../../src/gdb/gdbserver/../../include -Wl,--dynamic-list=3D../../../src/gdb/gdbserver/proc-service.list -o gdbserver inferiors.o regcache.o remote-utils.o server.o signals.o target.o utils.o version.o mem-break.o hostio.o event-loop.o tracepoint.o xml-builtin.o i386-linux.o i386-avx-linux.o i386-mmx-linux.o linux-low.o linux-x86-low.o i386-low.o i387-fp.o hostio-errno.o thread-db.o proc-service.o \ -ldl linux-x86-low.o: In function `i386_emit_void_call_2': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2426: undefined reference to `end_i386_void_call_2_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2426: undefined reference to `start_i386_void_call_2_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2426: undefined reference to `start_i386_void_call_2_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2447: undefined reference to `end_i386_void_call_2_b' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2447: undefined reference to `start_i386_void_call_2_b' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2447: undefined reference to `start_i386_void_call_2_b' linux-x86-low.o: In function `i386_emit_int_call_1': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2398: undefined reference to `end_i386_int_call_1_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2398: undefined reference to `start_i386_int_call_1_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2398: undefined reference to `start_i386_int_call_1_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2412: undefined reference to `end_i386_int_call_1_c' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2412: undefined reference to `start_i386_int_call_1_c' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2412: undefined reference to `start_i386_int_call_1_c' linux-x86-low.o: In function `i386_emit_swap': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2364: undefined reference to `end_i386_swap' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2364: undefined reference to `start_i386_swap' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2364: undefined reference to `start_i386_swap' linux-x86-low.o: In function `i386_emit_zero_ext': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2343: undefined reference to `end_i386_zero_ext_8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2343: undefined reference to `start_i386_zero_ext_8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2343: undefined reference to `start_i386_zero_ext_8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2353: undefined reference to `end_i386_zero_ext_32' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2353: undefined reference to `start_i386_zero_ext_32' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2353: undefined reference to `start_i386_zero_ext_32' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2348: undefined reference to `end_i386_zero_ext_16' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2348: undefined reference to `start_i386_zero_ext_16' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2348: undefined reference to `start_i386_zero_ext_16' linux-x86-low.o: In function `i386_emit_stack_flush': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2332: undefined reference to `end_i386_stack_flush' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2332: undefined reference to `start_i386_stack_flush' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2332: undefined reference to `start_i386_stack_flush' linux-x86-low.o: In function `i386_emit_pop': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2324: undefined reference to `end_i386_pop' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2324: undefined reference to `start_i386_pop' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2324: undefined reference to `start_i386_pop' linux-x86-low.o: In function `i386_emit_goto': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2227: undefined reference to `end_i386_goto' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2227: undefined reference to `start_i386_goto' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2227: undefined reference to `start_i386_goto' linux-x86-low.o: In function `i386_emit_if_goto': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2209: undefined reference to `end_i386_if_goto' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2209: undefined reference to `start_i386_if_goto' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2209: undefined reference to `start_i386_if_goto' linux-x86-low.o: In function `i386_emit_ref': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2187: undefined reference to `end_i386_ref1' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2187: undefined reference to `start_i386_ref1' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2187: undefined reference to `start_i386_ref1' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2199: undefined reference to `end_i386_ref8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2199: undefined reference to `start_i386_ref8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2199: undefined reference to `start_i386_ref8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2191: undefined reference to `end_i386_ref2' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2191: undefined reference to `start_i386_ref2' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2191: undefined reference to `start_i386_ref2' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2195: undefined reference to `end_i386_ref4' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2195: undefined reference to `start_i386_ref4' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2195: undefined reference to `start_i386_ref4' linux-x86-low.o: In function `i386_emit_less_unsigned': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2165: undefined reference to `end_i386_less_unsigned' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2165: undefined reference to `start_i386_less_unsigned' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2165: undefined reference to `start_i386_less_unsigned' linux-x86-low.o: In function `i386_emit_less_signed': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2146: undefined reference to `end_i386_less_signed' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2146: undefined reference to `start_i386_less_signed' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2146: undefined reference to `start_i386_less_signed' linux-x86-low.o: In function `i386_emit_equal': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2128: undefined reference to `end_i386_equal' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2128: undefined reference to `start_i386_equal' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2128: undefined reference to `start_i386_equal' linux-x86-low.o: In function `i386_emit_bit_not': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2120: undefined reference to `end_i386_bit_not' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2120: undefined reference to `start_i386_bit_not' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2120: undefined reference to `start_i386_bit_not' linux-x86-low.o: In function `i386_emit_bit_xor': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2111: undefined reference to `end_i386_xor' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2111: undefined reference to `start_i386_xor' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2111: undefined reference to `start_i386_xor' linux-x86-low.o: In function `i386_emit_bit_or': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2102: undefined reference to `end_i386_or' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2102: undefined reference to `start_i386_or' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2102: undefined reference to `start_i386_or' linux-x86-low.o: In function `i386_emit_bit_and': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2093: undefined reference to `end_i386_and' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2093: undefined reference to `start_i386_and' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2093: undefined reference to `start_i386_and' linux-x86-low.o: In function `i386_emit_log_not': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2082: undefined reference to `end_i386_log_not' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2082: undefined reference to `start_i386_log_not' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2082: undefined reference to `start_i386_log_not' linux-x86-low.o: In function `i386_emit_ext': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2057: undefined reference to `end_i386_ext_8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2057: undefined reference to `start_i386_ext_8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2057: undefined reference to `start_i386_ext_8' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2070: undefined reference to `end_i386_ext_32' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2070: undefined reference to `start_i386_ext_32' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2070: undefined reference to `start_i386_ext_32' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2064: undefined reference to `end_i386_ext_16' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2064: undefined reference to `start_i386_ext_16' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2064: undefined reference to `start_i386_ext_16' linux-x86-low.o: In function `i386_emit_sub': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2020: undefined reference to `end_i386_sub' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2020: undefined reference to `start_i386_sub' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2020: undefined reference to `start_i386_sub' linux-x86-low.o: In function `i386_emit_add': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2011: undefined reference to `end_i386_add' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2011: undefined reference to `start_i386_add' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2011: undefined reference to `start_i386_add' linux-x86-low.o: In function `i386_emit_epilogue': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:1999: undefined reference to `end_i386_epilogue' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:1999: undefined reference to `start_i386_epilogue' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:1999: undefined reference to `start_i386_epilogue' linux-x86-low.o: In function `i386_emit_prologue': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:1989: undefined reference to `end_i386_prologue' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:1989: undefined reference to `start_i386_prologue' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:1989: undefined reference to `start_i386_prologue' linux-x86-low.o: In function `i386_emit_reg': /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2302: undefined reference to `end_i386_reg_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2302: undefined reference to `start_i386_reg_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2302: undefined reference to `start_i386_reg_a' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2311: undefined reference to `end_i386_reg_b' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2311: undefined reference to `start_i386_reg_b' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2311: undefined reference to `start_i386_reg_b' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2316: undefined reference to `end_i386_reg_c' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2316: undefined reference to `start_i386_reg_c' /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x= 86-low.c:2316: undefined reference to `start_i386_reg_c' collect2: ld returned 1 exit status make[4]: *** [gdbserver] ?? 1 make[4]:?????? `/home/teawater/gdb/bgdball/gdb/gdbserver' make[3]: *** [subdir_do] ?? 1 make[3]:?????? `/home/teawater/gdb/bgdball/gdb' make[2]: *** [all] ?? 2 make[2]:?????? `/home/teawater/gdb/bgdball/gdb' make[1]: *** [all-gdb] ?? 2 make[1]:?????? `/home/teawater/gdb/bgdball' On Fri, Jun 18, 2010 at 02:03, Michael Snyder wrote: > Stan Shebs wrote: >> >> Pedro Alves wrote: >>> >>> On Wednesday 16 June 2010 20:12:44, Stan Shebs wrote: >>> >>>> >>>> Doug Evans wrote: >>>> >>>>> >>>>> On Mon, Jun 14, 2010 at 3:19 PM, Pedro Alves >>>>> wrote: >>>>> >>>>>> >>>>>> Thanks. =A0I've checked the whole thing in. >>>>>> >>>>> >>>>> I'm getting build failures that go away when compiling linux-x86-low.c >>>>> with -g. >>>>> >>>>> gcc is optimizing out the skipped over stuff I believe. >>>>> >>>> >>>> Hmm, this particular trickery was my idea, but it always seemed >>>> vulnerable to ever-smarter optimization. =A0Does anybody have any bett= er >>>> strategy? =A0Declaring the asm volatile didn't work, because the compi= ler was >>>> whacking everything around it. >>>> >>>> The other approach is to build up instructions from bitfields, which is >>>> reliable but needs a lot of setup and helper routines. >>>> >>> >>> Quick thought: can we stick a couple of __attribute__((used))'s in the >>> macro, so the compiler doesn optimized things away, thinking they're >>> unused (given the uses are behind asm)? >>> >> >> The compiler is discarding the code with the definitions of the labels, >> because it's thinking they are maybe somewhere else in the program (the >> error is at link time). =A0Moving the labels into C code would fix that I >> think, but then it's hard to guarantee that the compiler won't sneak in a >> bit of code between label and asm sequence. > > Hurrr. =A0Code that depends on such deep knowledge of the compiler's > behavior is wrong code, IMO. > >