I'm trying to learn the very basics of the compile - assemble - link process on FreeBSD. Please don't shoot me.
I've this c code: % cat tmp.c int main() { int a; int b; int c; a = 2; b = 3; c=a*b; } which I compile into assembly language: % gcc -v Using built-in specs. Target: ia64-undermydesk-freebsd Configured with: FreeBSD/ia64 system compiler Thread model: posix gcc version 4.2.1 20070719 [FreeBSD] % gcc -S tmp.c I then assemble the object file: % gcc -o tmp.o -c tmp.s % file tmp.o tmp.o: ELF 64-bit LSB relocatable, IA-64, version 1 (FreeBSD), not stripped Then I try to link the object file into an executable: % ld tmp.o ld: warning: cannot find entry symbol _start; defaulting to 20000000000000f0 Finally, when I try to run the executable, I get segfault: % ./a.out Segmentation fault (core dumped) Looking at the asm listing, there is indeed no _start symbol: .file "tmp.c" .pred.safe_across_calls p1-p5,p16-p63 .text .align 16 .global main# .proc main# main: .prologue 2, 2 .vframe r2 mov r2 = r12 .body ;; adds r15 = 8, r2 addl r14 = 2, r0 ;; st4 [r15] = r14 adds r15 = 4, r2 addl r14 = 3, r0 ;; st4 [r15] = r14 adds r14 = 8, r2 adds r15 = 4, r2 ;; ld4 r16 = [r14] ld4 r14 = [r15] ;; setf.sig f6 = r16 setf.sig f7 = r14 ;; xmpy.l f6 = f6, f7 ;; getf.sig r14 = f6 ;; st4 [r2] = r14 .restore sp mov r12 = r2 br.ret.sptk.many b0 ;; .endp main# .ident "GCC: (GNU) 4.2.1 20070719 [FreeBSD]" What am I missing? I'm happy to be referred to FM. many thanks anton -- Anton Shterenlikht Room 2.6, Queen's Building Mech Eng Dept Bristol University University Walk, Bristol BS8 1TR, UK Tel: +44 (0)117 331 5944 Fax: +44 (0)117 929 4423 _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"