I'm way over my head with this, AndrewF. I have almost no experience with 64-bit code. The first three lines are "only" warnings. It "might" work anyway, but probably not. You could try removing the "rel", but that probably won't work either. You might try making the whole thing "default rel". If objconv thinks gcc encoded it as "rel", it probably did. I don't know why Nasm thinks it's a problem.
As you know, symbols starting with a dot are Nasm's idea of how to implement a local label. The scope is from one non-local label to the next. Do you see labels like "?_015", "matrixum", and/or "?_025" anywhere (with or without a ':)'? You might try stuffing such labels in - someplace that looks probable. If ".LC0" etc. are reused, you're going to have to be careful to get 'em in the right place! If they're not reused, removing the dot might work(?).
I think that all addresses would be oword, but I don't see any problem that they point to dword or even byte data. As I said, this is way beyond my experience. Good luck!
Best,
Frank