This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tuesday 08 January 2013 10:01:20 Mike Frysinger wrote: > -#if defined __i386__ > - asm volatile ("pushl %0;" > - ".globl linux_ptrace_test_ret_to_nx_instr;" > - "linux_ptrace_test_ret_to_nx_instr:" > - "ret" > - : : "r" (return_address) : "%esp", "memory"); > -#elif defined __x86_64__ > - asm volatile ("pushq %0;" > + asm volatile ("push %0;" > ".globl linux_ptrace_test_ret_to_nx_instr;" > "linux_ptrace_test_ret_to_nx_instr:" > "ret" > - : : "r" (return_address) : "%rsp", "memory"); > -#else > -# error "!__i386__ && !__x86_64__" > -#endif > + : : "r" (return_address) : "sp", "memory"); hrm, this works for -m32 and -m64, but doesn't actually help with -mx32. this doesn't seem to line up with my expectations. can you suggest something here H.J. Lu ? $ cat test.c main() { asm volatile ("push %0; ret;" : : "r"(main) : "sp", "memory"); } $ gcc -m32 test.c 8: 50 push %eax 9: c3 ret $ gcc -m64 test.c 9: 50 push %rax a: c3 retq $ gcc -mx32 test.c test.c: Assembler messages: test.c:2: Error: operand type mismatch for `push' -mike
Attachment:
signature.asc
Description: This is a digitally signed message part.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |