[RFC] slipping in symbol prefixes automagically via PROVIDE() in linker scripts
Nick Clifton
nickc@redhat.com
Mon Jul 31 10:12:00 GMT 2006
Hi Mike,
> with the new binutils-2.17, it'd be good to switch to using the generic elf.sc
> file ... but this _ prefix is standing in the way
Which symbols in the elf.sc need this prefix and do not already have it
? I looked through the file and it seems that most symbols are provided
in an underscore prefixed version and a non-underscore prefixed version.
Or is it that you want to have *double* underscore prefixed versions
and single underscore prefixed versions ? (If so, are the double
underscore prefixed versions really necessary ?)
... there seems to be two
> ways to deal with this at the moment:
> - copy elf.sc to bfin.sc again and just insert the _ symbols as needed
> - tweak PROVIDE() to automatically insert a configurable prefix
The cleanest way would be to edit elf.sc so that PROVIDEd symbols had an
optional prefix. eg change:
${RELOCATING+${END_SYMBOLS-_end = .; PROVIDE (end = .);}}
to
${RELOCATING+${END_SYMBOLS-_end = .; PROVIDE (${PREFIX}end = .);}}
and in your bfin.sh file define PREFIX as "_".
> from what i can tell after reading the ld docs, PROVIDE is generally for
> setting up automatic symbol values when referenced via higher level code
> (like C) ... so making PROVIDE "smarter" and having it insert the same
> prefixes that higher level language parsers seems like a good idea to me :)
Changing PROVIDE would be a bad idea in my opinion. It would prevent
linker scripts from being able to define symbols outside of the
namespaces of higher level languages, and this might be needed. (eg for
example for defining symbols used by ROM monitors to handle program
start up).
Cheers
Nick
More information about the Binutils
mailing list