On 11/21/2015 05:14 PM, Gavin Wraith wrote:
> Back in September, with much kind assistance, I managed to compile
> Lua 5.3.1 with GCC 4.7.4. Now Lua 5.3.2 is out. But, although I
> think my makefile is the same, and there have been no changes
> in filenames, the compilation fails with errors
>
> error: lua.o uses FPA instructions, whereas lua6 does not
> failed to merge target specific data of file lua.o
> --- etc ---
>
> Two queries: 1. Does FPA imply that is not VFP?
> 2. Does GCC retain information from previous compilations?
First of all, it's actually the output of the linker, not the compiler
(aside, 'gcc' is just a front-end for those two). Secondly, this message
means that the linker detects an, in his eyes, incompatible mix of
object files concerning FP use in the object files.
The ELF object file has in its header a set of flags which are used for
storing attribute information, like which ABI it conforms to, whether it
is PIC code, FP type used, etc. It's a bit crude and more detailed
attributes are now stored in specific ELF section .ARM.attributes.
Use readelf -h to read the ELF header details, cfr. the "Flags:" entry.
If you create object files...
- with UnixLib as runtime library & soft-float calling convention + fp
in software (i.e. default compiler options): flags are "0x200, GNU EABI,
software FP"
- with UnixLib as runtime library & soft-float calling convention + fp
via VFP instructions (i.e. -mfpu=vfp): flags are "0x600, GNU EABI,
software FP, VFP"
- with SharedCLibrary (SCL) as runtime library & hard-float calling
convention + fp via FPA instructions (i.e. -mlibscl or -mmodule) : flags
are "0x0"
So I suspect you have a mix of SCL and UnixLib object files and/or
inconsistent -mfpu= option overrule of its default value for the chosen
runtime library.
> [...]
> I was expecting -mfpu=vfp to cause lua.o to have vfp instructions (actually it
> does not use any floating point instructions). And how can GCC tell me that
> lua6 does not have this or that floating point format when lua6 is the target
> and so should presumably have the same fp format as all the files which
> comprise it?
The compiler passes on the soft-float/vfp/... compiler settings to the
assembler as well and the latter distills this info into a single ELF
header flags entry. Whether or not your code used FP instructions, is
not considered.
John.
_______________________________________________
GCCSDK mailing list gcc@gccsdk.riscos.info
Bugzilla: http://www.riscos.info/bugzilla/index.cgi
List Info: http://www.riscos.info/mailman/listinfo/gcc
Main Page: http://www.riscos.info/index.php/GCCSDK
No comments:
Post a Comment