Well, it fails to build with LTO, because they're asm names. Doesn't kernelbase.a for instance (or any import library) define them as well with asm wrappers? I'm not 100% sure why it fails but it does.
It sounds like it needs more investigation then. There should be nothing wrong with defining a function that also exists in an import library.