From: Doug Evans <dje@google.com>
To: Hui Zhu <teawater@gmail.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
Pedro Alves <pedro@codesourcery.com>,
Stan Shebs <stan@codesourcery.com>,
Eli Zaretskii <eliz@gnu.org>,
"tromey@redhat.com" <tromey@redhat.com>,
Michael Snyder <msnyder@vmware.com>
Subject: Re: [NEWS/RFA] Re: [gdbserver] x86 agent expression bytecode compiler (speed up conditional tracepoints)
Date: Sat, 19 Jun 2010 17:26:00 -0000 [thread overview]
Message-ID: <AANLkTikfpnDiFzT5yxW3hu1sR0PfFKgd87qMeqTZZzlF@mail.gmail.com> (raw)
In-Reply-To: <AANLkTinCjwvO1SL2APjn7dPyL26A91giD08TjcMWktx9@mail.gmail.com>
The fix to the compilation problem (for now) should be as trivial as
applying Ian's suggested change.
gcc doesn't optimize *inside* the asm statement.
Now we just have to avoid things like mao. :-)
[mao is a post-gcc assembly level optimizer, transmeta had another
called caligula ...]
On Sat, Jun 19, 2010 at 10:13 AM, Hui Zhu <teawater@gmail.com> wrote:
> Hi guys,
>
> I say something about bytecode compiler .
>
> I did some code work like it in skyeye dbct (dynamic binary code
> translation) in before (some introduce
> http://www.skyeye.org/wiki/SkyeyeDBCTen).
>
> In dbct, I get the binary code like what you do in this patch.
> define a functon, get binary code from this function, and use it for
> other thing.
>
> But I want say, to maintain is not very easy. At least, we need give up -O2.
>
> Because Gcc's optimization will compile the function that support the
> code to some asm code that we don't want it to be.
>
> Any other trouble is , different user will use different version gcc,
> different version gcc's optimization is different.
> Actually, after gcc4, this issue is very different to handle.
>
> And old version QEMU use this idea too. And it has this issue too.
> So a long time, compile qemu need gcc3.
> Now, qemu handle this issue because it give up the old way and use TCC
> to get the code.
>
> Hope it can help a little better.
>
> Thanks,
> Hui
>
> On Sun, Jun 20, 2010 at 00:16, Doug Evans <dje@google.com> wrote:
>> Yeah.
>> Until it gets fixed a workaround is to compile linux-x86-low.c with -O0.
>>
>>
>> On Sat, Jun 19, 2010 at 9:12 AM, Hui Zhu <teawater@gmail.com> wrote:
>>> 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=../../../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-x86-low.c:2426:
>>> undefined reference to `end_i386_void_call_2_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2426:
>>> undefined reference to `start_i386_void_call_2_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2426:
>>> undefined reference to `start_i386_void_call_2_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2447:
>>> undefined reference to `end_i386_void_call_2_b'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2447:
>>> undefined reference to `start_i386_void_call_2_b'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2398:
>>> undefined reference to `end_i386_int_call_1_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2398:
>>> undefined reference to `start_i386_int_call_1_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2398:
>>> undefined reference to `start_i386_int_call_1_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2412:
>>> undefined reference to `end_i386_int_call_1_c'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2412:
>>> undefined reference to `start_i386_int_call_1_c'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2364:
>>> undefined reference to `end_i386_swap'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2364:
>>> undefined reference to `start_i386_swap'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2343:
>>> undefined reference to `end_i386_zero_ext_8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2343:
>>> undefined reference to `start_i386_zero_ext_8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2343:
>>> undefined reference to `start_i386_zero_ext_8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2353:
>>> undefined reference to `end_i386_zero_ext_32'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2353:
>>> undefined reference to `start_i386_zero_ext_32'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2353:
>>> undefined reference to `start_i386_zero_ext_32'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2348:
>>> undefined reference to `end_i386_zero_ext_16'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2348:
>>> undefined reference to `start_i386_zero_ext_16'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2332:
>>> undefined reference to `end_i386_stack_flush'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2332:
>>> undefined reference to `start_i386_stack_flush'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2324:
>>> undefined reference to `end_i386_pop'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2324:
>>> undefined reference to `start_i386_pop'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2227:
>>> undefined reference to `end_i386_goto'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2227:
>>> undefined reference to `start_i386_goto'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2209:
>>> undefined reference to `end_i386_if_goto'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2209:
>>> undefined reference to `start_i386_if_goto'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2187:
>>> undefined reference to `end_i386_ref1'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2187:
>>> undefined reference to `start_i386_ref1'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2187:
>>> undefined reference to `start_i386_ref1'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2199:
>>> undefined reference to `end_i386_ref8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2199:
>>> undefined reference to `start_i386_ref8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2199:
>>> undefined reference to `start_i386_ref8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2191:
>>> undefined reference to `end_i386_ref2'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2191:
>>> undefined reference to `start_i386_ref2'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2191:
>>> undefined reference to `start_i386_ref2'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2195:
>>> undefined reference to `end_i386_ref4'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2195:
>>> undefined reference to `start_i386_ref4'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2165:
>>> undefined reference to `end_i386_less_unsigned'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2165:
>>> undefined reference to `start_i386_less_unsigned'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2146:
>>> undefined reference to `end_i386_less_signed'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2146:
>>> undefined reference to `start_i386_less_signed'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2128:
>>> undefined reference to `end_i386_equal'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2128:
>>> undefined reference to `start_i386_equal'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2120:
>>> undefined reference to `end_i386_bit_not'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2120:
>>> undefined reference to `start_i386_bit_not'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2111:
>>> undefined reference to `end_i386_xor'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2111:
>>> undefined reference to `start_i386_xor'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2102:
>>> undefined reference to `end_i386_or'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2102:
>>> undefined reference to `start_i386_or'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2093:
>>> undefined reference to `end_i386_and'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2093:
>>> undefined reference to `start_i386_and'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2082:
>>> undefined reference to `end_i386_log_not'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2082:
>>> undefined reference to `start_i386_log_not'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2057:
>>> undefined reference to `end_i386_ext_8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2057:
>>> undefined reference to `start_i386_ext_8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2057:
>>> undefined reference to `start_i386_ext_8'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2070:
>>> undefined reference to `end_i386_ext_32'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2070:
>>> undefined reference to `start_i386_ext_32'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2070:
>>> undefined reference to `start_i386_ext_32'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2064:
>>> undefined reference to `end_i386_ext_16'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2064:
>>> undefined reference to `start_i386_ext_16'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2020:
>>> undefined reference to `end_i386_sub'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2020:
>>> undefined reference to `start_i386_sub'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2011:
>>> undefined reference to `end_i386_add'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2011:
>>> undefined reference to `start_i386_add'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:1999:
>>> undefined reference to `end_i386_epilogue'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:1999:
>>> undefined reference to `start_i386_epilogue'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:1989:
>>> undefined reference to `end_i386_prologue'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:1989:
>>> undefined reference to `start_i386_prologue'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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-x86-low.c:2302:
>>> undefined reference to `end_i386_reg_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2302:
>>> undefined reference to `start_i386_reg_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2302:
>>> undefined reference to `start_i386_reg_a'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2311:
>>> undefined reference to `end_i386_reg_b'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2311:
>>> undefined reference to `start_i386_reg_b'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2311:
>>> undefined reference to `start_i386_reg_b'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2316:
>>> undefined reference to `end_i386_reg_c'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-low.c:2316:
>>> undefined reference to `start_i386_reg_c'
>>> /home/teawater/gdb/bgdball/gdb/gdbserver/../../../src/gdb/gdbserver/linux-x86-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 <msnyder@vmware.com> 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 <pedro@codesourcery.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks. I'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. Does anybody have any better
>>>>>>> strategy? Declaring the asm volatile didn't work, because the compiler 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). Moving 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. Code that depends on such deep knowledge of the compiler's
>>>> behavior is wrong code, IMO.
>>>>
>>>>
>>>
>>
>
next prev parent reply other threads:[~2010-06-19 17:26 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-07 16:00 Pedro Alves
2010-06-07 16:04 ` Michael Snyder
2010-06-07 16:35 ` Joel Brobecker
2010-06-10 17:28 ` Tom Tromey
2010-06-10 17:36 ` Pedro Alves
2010-06-10 18:43 ` Tom Tromey
2010-06-14 11:15 ` [NEWS/RFA] " Pedro Alves
2010-06-14 17:29 ` Eli Zaretskii
2010-06-14 22:19 ` Pedro Alves
2010-06-16 18:57 ` Doug Evans
2010-06-16 19:13 ` Stan Shebs
2010-06-16 19:16 ` Pedro Alves
2010-06-16 19:21 ` Doug Evans
2010-06-16 23:58 ` Ian Lance Taylor
2010-06-20 22:27 ` Pedro Alves
2010-06-16 19:31 ` Stan Shebs
2010-06-17 18:03 ` Michael Snyder
2010-06-19 16:13 ` Hui Zhu
2010-06-19 16:16 ` Doug Evans
2010-06-19 17:13 ` Hui Zhu
2010-06-19 17:26 ` Doug Evans [this message]
2010-06-20 9:30 ` [RFA-new version][gdbserver] " Pierre Muller
[not found] ` <-3945058798826177264@unknownmsgid>
2010-06-20 15:30 ` Doug Evans
2010-06-20 17:02 ` Pierre Muller
[not found] ` <-1673004315710326113@unknownmsgid>
2010-06-20 17:11 ` Doug Evans
2010-06-20 18:41 ` Tom Tromey
2010-06-20 20:36 ` Pierre Muller
2010-06-20 21:07 ` Pierre Muller
2010-06-21 1:47 ` Tom Tromey
2010-06-21 6:31 ` Pierre Muller
2010-06-20 18:31 ` [NEWS/RFA] Re: [gdbserver] " Tom Tromey
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=AANLkTikfpnDiFzT5yxW3hu1sR0PfFKgd87qMeqTZZzlF@mail.gmail.com \
--to=dje@google.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=msnyder@vmware.com \
--cc=pedro@codesourcery.com \
--cc=stan@codesourcery.com \
--cc=teawater@gmail.com \
--cc=tromey@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox