This is the mail archive of the cygwin mailing list for the Cygwin 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]

Re: Linking Assembly Code - Can't resolve printf


Hallo David,

Some OS's - as cygwin - expand names by underscores. Therefore simply 
write instead of "printf" just "_printf". That should work for this 
unresolved symbol. But the rest does not seems to be ABI compatible for 
cygwin. Additionally the entry-point won't work this way ...

Chears,
 i.A. Kai Tietz




"David Lariviere" <dal2103@columbia.edu> 
Sent by: cygwin-owner@cygwin.com
20.09.2006 09:16

To
<cygwin@cygwin.com>
cc

Subject
Linking Assembly Code - Can't resolve printf






I have a simple assembly program that I am trying to compile, but ld 
cannot
resolve printf. 
------
#movtest3.s - Example using index memory locations
.section .data
output:
                 .asciz "The value is %d\n"
values:
                 .int 10,15,20,25,30,35,40,45,50,55,60
                 .section .text
                 .globl _start
_start:
                 nop
                 movl $0, %edi
loop:
                 movl values(, %edi, 4), %eax
                 pushl %eax
                 pushl $output
                 call printf
                 addl $8, %esp
                 inc %edi
                 cmpl $11, %edi
                 jne loop
                 movl $0, %ebx
                 movl $1, %eax
                 int $0x80
#end of ASM



#Makefile
test:
                 as -o indexedMemory.o indexedMemory.s
                 ld --verbose -o indexedMemory indexedMemory.o -lc
#end of Makefile



Result is always:
....
attempt to open indexedMemory.o succeeded
indexedMemory.o
attempt to open /usr/bin/../lib/libc.dll.a failed
attempt to open /usr/bin/../lib/c.dll.a failed
attempt to open /usr/bin/../lib/libc.a succeeded
indexedMemory.o:fake:(.text+0x14): undefined reference to `printf'
make: *** [test] Error 1
#end of result

-------------

I've tried linking in numerous libraries, hoping one would resolve printf,
and in numerous order of where to include the -lxxx, but I can't get it to
compile. I've also tried it on numerous computers, including those with a
first-time fresh install of cygwin. Compiling a simple helloworld C 
program
works fine. 

I've compiled the same program fine in linux using as/ld. 

What am I doing wrong???

Thank you for any help, 

- David


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]