You're using what's known as "embedded assembly". What you write inside the embedded asm functions has pretty much the same rules as a .s file, but armcc will generate some EXPORT/PROC/ENDP directives for you and some IMPORT directives if you're using __cpp(...).It's not using the IMPORT directive per se that is generating the relocation; it's what you do with the imported symbol (DCD or LDR rx,= in my example above). If know the symbols being used by the unwanted relocations and can post the embedded asm lines that mention them; we might be able to suggest what you could do instead.