On Mon, 2010-07-12 at 22:03 +0200, Loïc Minier wrote:
On Mon, Jul 12, 2010, Dave Martin wrote:
- Use ABI tagging (high effort, involving modifications to affected
projects - permits hardvfp ABI for explicitly selected functions)
This is the first time I hear this suggested, and it's quite a nice option
I don't understand how much effort it implies, nor what kind of adverse side effects in might have: size of binaries, compilation time perhaps?
This sounds like it will require a new attribute, modification of the code generating function prologues and epilogues, possibly changes in the way static functions are handled based on earlier mails in this thread. It sounds like a lot of work, and possibly a maintenance headache. Is the code this affects changed often or will it be something we modify, test, fix and forget about for the most part?
Is the idea to select some functions to be built for each ABI, or rather build a while piece of software (with some toolchain flags) turning on the generation of the two ABIs with relevant tags on all functions taking floats as arguments? Will the toolchain be involved in taking the decision of which functions to provide for the two ABIs?
I think the idea was to tag a function with __attribute(hardfp)__ or the like to force the hardfp abi on that function. Suitable static functions would also automatically use the hardfp abi since all its callers can theoretically be identified. This assumption breaks if a function pointer to the static function is passed out. Not sure if that can be automatically detected and handled.
Scott