Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Sep 2010 12:14:55 +0100
From:      Anton Shterenlikht <mexas@bristol.ac.uk>
To:        freebsd-questions@freebsd.org
Subject:   ld(1) cannot find entry symbol _start;
Message-ID:  <20100928111455.GA58901@mech-cluster241.men.bris.ac.uk>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100928111455.GA58901>