recent as(1) doesn't think that . terminates a macro name, so getuser.l is _not_ treated as invoking getuser with .l as the first argument. Note that this behaviour remains in all recent versions and is unrelated to _another_ binutils problems we used to have for a while (having (%a0)+ parsed as two arguments). This one is there to stay. Patch works by having a macro with name that would be treated differently by new and old rules; if expanded, it adds definition for getuser.b, etc. via getuser. Old as(1) sees definition of gas_fscked with one argument redefinition of gas_fscked (with empty body and ignored argument) invocation of gas_fscked with .x as argument => expands to nothing New as(1) sees definition of gas_fscked.x definition of gas_fscked (independent from gas_fscked.x) invocation of gas_fscked.x => expands to definitions of getuser.l, etc. IOW, the trigger for workaround is precisely the behaviour we need to work around. Incidentally, this description is a couple of times longer than patch itself... Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> --- include/asm-m68k/math-emu.h | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/include/asm-m68k/math-emu.h b/include/asm-m68k/math-emu.h index 7ac6259..d9f15f4 100644 --- a/include/asm-m68k/math-emu.h +++ b/include/asm-m68k/math-emu.h @@ -226,6 +226,20 @@ #define FPS_PC2 (PT_PC+10) .previous .endm +/* work around binutils idiocy */ +.macro gas_fscked.x +.irp m b,w,l +.macro getuser.\m src,dest,label,addr + getuser .\m,"\src","\dest","\label","\addr" +.endm +.macro putuser.\m src,dest,label,addr + putuser .\m,"\src","\dest","\label","\addr" +.endm +.endr +.endm +.macro gas_fscked x=0 +.endm + gas_fscked.x .macro movestack nr,arg1,arg2,arg3,arg4,arg5 .if \nr -- 1.4.2.GIT - To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html