[PATCH] ld/ldlang.c: fatal error on architecture mismatch

Nick Clifton nickc@redhat.com
Fri May 4 11:19:00 GMT 2007


Hi Guys,

 > Richard Sandiford wrote:
> The default linker scripts already have "ENTRY(_start);" (or a target-
> specific equivalent).  The angle I was coming from -- and I think Dan
> was coming from -- is that that's a good thing.  You should get an error
> if you use the default linker script and don't provide a definition of
> its designated entry point.  You should also get an error if your
> custom linker script has "ENTRY (foo)" and you don't define foo.
> It sounds like you're OK with that.  (This is the bit that Ian says
> will break existing builds though.  The user has blindly copied the
> ENTRY statement from the default linker script, hasn't defined the
> symbol, and is currently ignoring what is only a warning.)

Right.  So we could two things:

   1. Leave things the way they are.  People who feel that the current
      linker behaviour is wrong could add --fatal-warnings to the linker
      command line, although this might cause them more problems if there
      are other warnings they currently do want to ignore.

   2. Change the linker so that if the script specifies an ENTRY symbol
      and that symbol is not defined then an error occurs.  Presumably
      we would also provide a new command line option to change this
      error back to a warning for compatibility with the old behaviour.
      (The user of the linker may not have the option of fixing the
      linker script, so without this new option they would be stuck).

I can see the benefits of approach 2 but also the hassle it might cause 
for already existing projects.  Maybe the default behaviour could be 
controlled by a configure time option, so that toolchain builders could 
choose whether the linker will default to generating an error or a 
warning and there could be a command line switch to override this default ?

> In other words, if you use a custom linker script with no ENTRY,
> you already (silently) get an entry point of 0.  Does that make
> the warning->error change OK with you?

Are you saying here that any linker script that does not define an ENTRY 
point will result in an error ?  Or just that if the script does not 
define an ENTRY point then we do not issue a warning or error, so it 
would be OK to issue an error if the script does define an ENTRY point, 
but that symbol is not defined ?

Cheers
   Nick





More information about the Binutils mailing list