They are actually compliant.
gcc Arm tool chain does not compile for cortex-M4, and cortex-M2. (However code for Cortex-M3 is suitable for Cortex-M4)
And it gives only ELF output.
I'm currently working at the software able to transform ELF into HEX suitable for at least some programmers. It must be some commercial software, which make sense for free gcc, and openosd apart but not together.
Also it are no available even basic libraries for STM-32. I plan to develop them too. But I plan to do it step by step for each task. (Many years ago I codded for PIC without any libraries, simply giving defining every resource I need. I may share my next job with step by step growing libraries. But it may take some while.)