http://sourceware.org/bugzilla/show_bug.cgi?id=13903
kdiman <kdiman1982 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Target| |x86_64-pc-linux-gnu Host| |x86_64-pc-linux-gnu --- Comment #1 from kdiman <kdiman1982 at gmail dot com> 2012-03-26 18:18:54 UTC --- +++++++++++++++THIS CODE IS OK (32 bit)++++++++++++++++++ #include <stdio.h> // g++ -m32 call32.c -o call32 && ./call32 int main(){ void *p_printf = (void *)&printf; const char *str = "Hello from inline assembler is GNU Assembler\n"; printf("address of printf: %p\n", p_printf); // 0x8048374 asm ("movl %0, %%edx;" /* str into EDX */ "movl %1, %%ecx;" /* PRINTF into ECX */ "pushl %%edx;" /* str into stack */ "call *%%ecx;" /* call "printf" */ "popl %%edx;" /* remove arg from stack */ : /* output */ :"r"(str),"r"(p_printf) /* input */ :"%edx", "%ecx" /* clobbered register */ ); return 0; } +++++++++++++++THIS CODE IS OK (32 bit)++++++++++++++++++ +++++++++++++++FAILS CODE (64 bit)+++++++++++++++ #include <stdio.h> // g++ -m64 call64.c -o call64 && ./call64 int main(){ void *p_printf = (void *)&printf; const char *str = "Hello from inline assembler is GNU Assembler\n"; printf("address of printf: %p\n", p_printf); // 0x400490 asm ("movq %0, %%rdx;" /* str into RDX */ "movq %1, %%rcx;" /* PRINTF into RCX */ "pushq %%rdx;" /* str into stack */ "call *%%rcx;" /* call "printf" */ "popq %%rdx;" /* remove arg from stack */ : /* output */ :"r"(str),"r"(p_printf) /* input */ :"%rdx", "%rcx" /* clobbered register */ ); return 0; } +++++++++++++++FAILS CODE (64 bit)+++++++++++++++ -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils