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
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils