Question for ARM person re asm_fprintf

Kyrill Tkachov kyrylo.tkachov@arm.com
Tue Jul 22 09:18:00 GMT 2014


Hi David,

On 22/07/14 02:46, David Wohlferd wrote:
> I have been looking at asm_fprintf in final.c, and I think there's a
> design flaw.  But since the change affects ARM and since I have no
> access to an ARM system, I need a second opinion.
>
> asm_fprintf allows platforms to add support for new format specifiers by
> using the ASM_FPRINTF_EXTENSIONS macro.  ARM uses this to add support
> for %@ and %r specifiers.  Pretty straight-forward.
>
> However, it isn't enough to add these two items to the case statement in
> asm_fprintf.  Over in c-format.c, there is compile-time checking that is
> done against calls to asm_fprintf to validate the format string.  %@ and
> %r have been added to this checking (see asm_fprintf_char_table), but
> NOT in a platform-specific way.
>
> This means that using %r or %@ will successfully pass the format
> checking on all platforms, but will ICE on non-ARM platforms since there
> are no case statements in asm_fprintf to support them.
>
> Compiling the code in asm_fprintf-1.c (see the patch) with this patch
> correctly reports "unknown conversion type character" for both 'r' and
> '@' in  x86_64-pc-cygwin.  It would be helpful if someone could confirm
> that it still compiles without error under ARM after applying this
> patch.  I'm reluctant to post this to gcc-patches when it has never been
> run.

I've tested the asm_fprintf-1.c test on an arm-none-eabi cross compiler 
with this patch which I think should be enough for this patch's 
purposes, I've confirmed that the assembly generated contains the:
.ascii  "%@%r\000"

string so I'd suggest you go ahead and post it to gcc-patches.
This is, of course, not a full regression suite run and I'm not sure if 
there's anything else in the testsuite that would exercise this bit of 
code, but I can kick off a run for that later if you'd like.

Kyrill
> dw




More information about the Gcc mailing list