My (compiler test) program: int main() { __asm__ volatile(".8byte %0\n\t" : : "i" ("message %s\n")); return 0; } This compiles fine with gcc 4.3.3 MIPS using: gcc -S -fPIC temp.c It fails with gcc 7.3.0 aarch64. Output is: temp.c: In function main : temp.c:4:2: warning: asm operand 0 probably doesn t match constraints __asm__ volatile(".8byte %0\n\t" : : "i" ("message %s\n")); ^~~~~~~ temp.c:4:2: error: impossible constraint in asm Removing the -fPIC it will compile fine. The relevant section of the MIPS generated code looks like this: .rdata .align 2 $LC0: .ascii "message %s\012\000" .text .align 2 .globl main .ent main .type main, @function main: .set nomips16 .frame $fp,8,$31 # vars= 0, regs= 1/0, args= 0, gp= 0 .mask 0x40000000,-4 .fmask 0x00000000,0 addiu $sp,$sp,-8 sw $fp,4($sp) move $fp,$sp #APP # 4 "temp.c" 1 .8byte $LC0 I am unable to code something similar manually using inline asm because the string is a format string containing % characters, which inline asm will of course try to interpret. (Does gcc provide anything to escape % chars in a literal string?) Any suggestions? Joe Buehler