[Bug c/63318] Hello World C program using inline assembly to invoke write(2) on amd64 Linux fails to print Hello World
ryao at gentoo dot org
gcc-bugzilla@gcc.gnu.org
Sat Sep 20 20:15:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63318
--- Comment #6 from Richard Yao <ryao at gentoo dot org> ---
Created attachment 33523
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33523&action=edit
Updated syscall.c
That worked, although I am not sure how given that the string is missing in
assembly output:
$ gcc -S -o - syscall.c -Wall -Wextra -fno-strict-aliasing -fwrapv -O0
.file "syscall.c"
.text
.type syscall_1, @function
syscall_1:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movq %rdx, -24(%rbp)
movq %rcx, -32(%rbp)
movq -8(%rbp), %rax
movq -16(%rbp), %rdi
movq -24(%rbp), %rsi
movq -32(%rbp), %rdx
#APP
# 14 "syscall.c" 1
syscall
# 0 "" 2
#NO_APP
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size syscall_1, .-syscall_1
.globl main
.type main, @function
main:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
pushq %rbx
subq $56, %rsp
.cfi_offset 3, -24
movq %fs:40, %rax
movq %rax, -24(%rbp)
xorl %eax, %eax
movabsq $8022916924116329800, %rax
movq %rax, -48(%rbp)
movl $560229490, -40(%rbp)
movw $10, -36(%rbp)
movq $14, -56(%rbp)
movq -56(%rbp), %rdx
leaq -48(%rbp), %rax
movq %rdx, %rcx
movq %rax, %rdx
movl $1, %esi
movl $1, %edi
call syscall_1
movl $0, %eax
movq -24(%rbp), %rbx
xorq %fs:40, %rbx
je .L5
call __stack_chk_fail
.L5:
addq $56, %rsp
popq %rbx
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size main, .-main
.ident "GCC: (Gentoo 4.8.3 p1.1, pie-0.5.9) 4.8.3"
.section .note.GNU-stack,"",@progbits
$ gcc syscall.c -Wall -Wextra -fno-strict-aliasing -fwrapv -O0
$ ./a.out
Hello World!
More information about the Gcc-bugs
mailing list