[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ld spurious warning?

From: Peter Johnson
Subject: ld spurious warning?
Date: Sun, 12 Feb 2017 02:08:30 +0000

Hello, someone came into a programming support channel with the classic
cannot find _start defaulting to blah warning, so we assumed the obvious,
but after looking, the .o he's providing as input does infact have a _start
symbol, ld just can't "see" it.

I inspected it with a hex editor, the elf looks fine, I made a quick linker

. = 100000;
.data : { * (.data); }
.text : { * (.text); }

_start has offset 0xA into .text, data is 0x10 long, so _start should be at

This produces the warning: ld: warning: cannot find entry symbol _start;
defaulting to 0000000000100010.

I figured this was ld failing and doing something weird, but readelf on the
produced output is even more weird:
5: 000000000010001a 0 NOTYPE GLOBAL DEFAULT 2 _start

This is the correct address afterall (so why the warning?), but then:
6: 0000000000000000 NOTYPE GLOBAL DEFAULT UND _start

ld injected another broken _start, because of the warning being triggered?

Example elf files:

(I had him move the things around incase ld was exploding from all the 0
fields everywhere).

reply via email to

[Prev in Thread] Current Thread [Next in Thread]