This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Dealing with multiple gas versions


Has there been any discussion of introducing a mechanism that allows users to write code that is for specific version(s) of gas? Not frequently but occasionally there are changes between versions where it would be handy to write conditional code that could be assembled by multiple versions of gas.

A recent example would be the change to separate the security extensions from the base ARM v7-A architecture. E.g. prior to 2.21 gas would accept the smc instruction if the .arch armv7-a was used or -march=armv7-a was specified on the command line. Now it requires either +sec command line option, or the .arch_extension sec inline. Unfortunately the -march=armv7-a+sec option does not override the .arch option set by gcc, so compiling code with inline asm containing the sec extensions with -march=armv7-a -Wa,-march=armv7-a+sec is not possible unless the .arch_extension sec is used. As .arch_extension is a recent addition as well, it means the code needs to be written for the latest version of gas.

When we encounter a situation like this we usually end up encoding the instruction to avoid the problem of having to target multiple versions but it's far from ideal. If there was something like a builtin expression for the version (e.g. something similar to __GNUC__ and __GNUC_MINOR__) we could trigger off, it would be useful.

I apologize if this issue has been previously discussed and shot down but I didn't find any particularly relevant in a quick search of the mailing list.

Regards,

Ryan Mansfield


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]