Re: ld dynamic linker x86-64 ?!
- From: "Claudio Daffra" <spamtrap@xxxxxxxxxx>
- Date: 22 Mar 2006 23:42:04 -0800
hi waldek
it's a few time i've starting x86-64 programming.
primo.s in a toy program try link libc
with a simple printf no other.
output you request :
then my toy program :
thx to have reply me
root@Kanotix:~/source# gcc -v primo.o -o txt.
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre
--enable-mpfr --disable-werror --enable-checking=release
x86_64-linux-gnu
Thread model: posix
gcc version 4.0.3 20051201 (prerelease) (Debian 4.0.2-5)
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/collect2 --eh-frame-hdr -m
elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o txt.
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../../../lib64/crt1.o
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/crtbegin.o
-L/usr/lib/gcc/x86_64-linux-gnu/4.0.3
-L/usr/lib/gcc/x86_64-linux-gnu/4.0.3
-L/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../../../lib64
-L/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../.. -L/lib/../lib64
-L/usr/lib/../lib64 primo.o -lgcc --as-needed -lgcc_s --no-as-needed
-lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/crtend.o
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../../../lib64/crtn.o
root@Kanotix:~/source#
my output program :
unsigned char 1/1
signed char 1/-2
unsigned short 2/10
signed short 2/-20
unsigned int 4/100
signed int 4/-200
unsigned long 8/1000
Segmentation fault # with gcc all work good
root@Kanotix:~/source
toy program :
.file "primo.c"
.section .rodata
..LC3:
.string "\n unsigned char %d/%d "
..LC4:
.string "\n signed char %d/%d "
..LC5:
.string "\n unsigned short %d/%d "
..LC6:
.string "\n signed short %d/%d "
..LC7:
.string "\n unsigned int %d/%d "
..LC8:
.string "\n signed int %d/%d "
..LC9:
.string "\n unsigned long %d/%d "
..LC10:
.string "\n signed long %d/%d "
..LC11:
.string "\n float %d/%g "
..LC12:
.string "\n double %d/%g "
..LC13:
.string "\n long double %d/%g \n"
.text
..globl main
.type main, @function
main:
..LFB2:
pushq %rbp
..LCFI0:
movq %rsp, %rbp
..LCFI1:
subq $32, %rsp
..LCFI2:
movb $1, uc(%rip)
movb $1, uc(%rip)
movb $-2, sc(%rip)
movw $10, us(%rip)
movw $-20, ss(%rip)
movb $1, uc(%rip)
movb $1, uc(%rip)
movl $100, ui(%rip)
movl $-200, si(%rip)
movq $1000, ul(%rip)
movq $-2000, sl(%rip)
movl $0x3f99999a, %eax
movl %eax, f(%rip)
movabsq $4614838538166547251, %rax
movq %rax, d(%rip)
movabsq $-5534023222112866304, %rax
movl $16385, %edx
movq %rax, ld(%rip)
movl %edx, ld+8(%rip)
movzbl uc(%rip), %eax
movzbl %al, %edx
movl $1, %esi
movl $.LC3, %edi
movl $0, %eax
call printf
movzbl sc(%rip), %eax
movsbl %al,%edx
movl $1, %esi
movl $.LC4, %edi
movl $0, %eax
call printf
movzwl us(%rip), %eax
movzwl %ax, %edx
movl $2, %esi
movl $.LC5, %edi
movl $0, %eax
call printf
movzwl ss(%rip), %eax
movswl %ax,%edx
movl $2, %esi
movl $.LC6, %edi
movl $0, %eax
call printf
movl ui(%rip), %edx
movl $4, %esi
movl $.LC7, %edi
movl $0, %eax
call printf
movl si(%rip), %edx
movl $4, %esi
movl $.LC8, %edi
movl $0, %eax
call printf
movq ul(%rip), %rdx
movl $8, %esi
movl $.LC9, %edi
movl $0, %eax
call printf
movq sl(%rip), %rdx
movl $8, %esi
movl $.LC10, %edi
movl $0, %eax
call printf
movss f(%rip), %xmm0
cvtss2sd %xmm0, %xmm0
movl $4, %esi
movl $.LC11, %edi
movl $1, %eax
call printf
movq d(%rip), %rax
movq %rax, -8(%rbp)
movlpd -8(%rbp), %xmm0
movl $8, %esi
movl $.LC12, %edi
movl $1, %eax
call printf
movq ld(%rip), %rax
movl ld+8(%rip), %edx
movq %rax, (%rsp)
movl %edx, 8(%rsp)
movl $16, %esi
movl $.LC13, %edi
movl $0, %eax
call printf
movl $0, %eax
leave
ret
..LFE2:
.size main, .-main
.comm uc,1,1
.comm sc,1,1
.comm us,2,2
.comm ss,2,2
.comm ui,4,4
.comm si,4,4
.comm ul,8,8
.comm sl,8,8
.comm f,4,4
.comm d,8,8
.comm ld,16,16
.section .eh_frame,"a",@progbits
..Lframe1:
.long .LECIE1-.LSCIE1
..LSCIE1:
.long 0x0
.byte 0x1
.string ""
.uleb128 0x1
.sleb128 -8
.byte 0x10
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.align 8
..LECIE1:
..LSFDE1:
.long .LEFDE1-.LASFDE1
..LASFDE1:
.long .LASFDE1-.Lframe1
.quad .LFB2
.quad .LFE2-.LFB2
.byte 0x4
.long .LCFI0-.LFB2
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xd
.uleb128 0x6
.align 8
..LEFDE1:
.ident "GCC: (GNU) 4.0.3 20051201 (prerelease) (Debian 4.0.2-5)"
.section .note.GNU-stack,"",@progbits
.
- Follow-Ups:
- Re: ld dynamic linker x86-64 ?!
- From: Claudio Daffra
- Re: ld dynamic linker x86-64 ?!
- References:
- ld dynamic linker x86-64 ?!
- From: Claudio Daffra
- Re: ld dynamic linker x86-64 ?!
- From: Waldek Hebisch
- ld dynamic linker x86-64 ?!
- Prev by Date: Re: Kernel Calling Conventions
- Next by Date: Re: ld dynamic linker x86-64 ?!
- Previous by thread: Re: ld dynamic linker x86-64 ?!
- Next by thread: Re: ld dynamic linker x86-64 ?!
- Index(es):