This was working fine a couple of weeks ago, the compiler would produce some rip relative code and everything was good.
Now, however, the compiler is issuing gs relative code for some reason, f.e.:
Are you showing the output from objdump applied to an object file? If you use objdump -Cdr on an object file it will show relocations in its disassembly (and demangle) which makes the output more readable. In this case would you have gotten a relocation for thread-local storage?
If you want rip-relative addressing, don't use -Crelocation-model=static. That is for when the address of the executable is fixed at link time. The default -Crelocation-model=pie of the x86_64-unknown-none target should work for using rip-relative addressing.
x86_64 uses %fs for TLS, not %gs. Also unless you use the unstable #[thread_local], on no_std targets no TLS usage is possible at all.