-z now is not conditional on PIC vs PIE, so it is not necessary to specify it in redhat-hardened-ld. We can put it directly into %_hardening_ldflags. This should improve the injection success for shared objects somewhat, in case a linker invocation is used which strips the -specs= argument.
How would this affect clang?
Clang would recognize -Wl,-z,now as a linker flag and pass it to ld, so it would produce by accident the full set of required linker flags for shared objects after this change. (Keep in mind that clang is not a supported compiler for building RPMs.)
I'm implementing this gradually, first leaving -z now in the GCC specs file in place, and removing that only after rebuilding some of the extension builders.