#pragma directives are merely arbitrary compiler directives. The can be
used for anything the author of the compiler wishes.
There is no standardisation on what directives a compiler support, and
the syntax, semantics and naming of any particular directive are
specific to the compiler and should not be expected to be portable.
The required ISO behaviour when a compiler encounters a pragma it does
not recognise is simply to ignore it - so a pragma in your code may in
fact be having no effect whatsoever if it was intended for a different
compiler.
GCC generally eschews using pragma directives altogether and very few
are supported, and then mostly for compatibility with specific compilers
to for architecture specific features. Most uses of #pragma are replaced
with function, type or variable attributes in GCC. This is a compiler
extension, but at least it will fail to compile in another compiler
rather than quietly ignoring it as it would a pragma.
Now if hopefully that is all clear, the answer to your question is in
the GCC manual (supplied with WinARM and also at
http://gcc.gnu.org/onlinedocs/), specifically the section titled
"Pragmas Accepted by GCC", section numbervaries depending on the version
5.50 in 4.2.0, and 5.49 in 4.1.2.
In general I would suggest that in GCC pragmas are not provided for any
of the purposes you have suggested in GCC.
I am not sure why you are so interested in pragmas, by definition, they
are something you only need (or want) to use in vary rare circumstances
and should be avoided wherever possible - especially in GCC.
Clifford