Inspired by spirit_t0aster's work, I started looking into reverse engineering the remaining bits of the Psy-Q library format. At some point I realized that the format is similar enough to ELF, and could in fact be converted with minimal workarounds.
The Psy-Q library format supports arbitrary length expressions for relocations, which would be horrible to hack around with the ELF format. Luckily only a handful of the expression types are actually used in the library object files, and they can be expressed with ELF symbol offsets and relocations.
So I created a set of tools called psyq2elf that can convert Psy-Q libraries to ELF libraries. The converted libraries can be used to build PSX executables with modern GCC. So far, all Psy-Q SDK examples and test projects that I've tried have worked.
As has been said before, the Psy-Q SDK is copyrighted, and of poor quality. It would be better to focus on using and developing open source PSX SDKs.
But anyway, I hope the tools can be useful to someone, for PSX development or maybe even reverse engineering purposes.
psyq2elf source code and examples:
https://gitlab.com/jype/psyq2elf

The example project also shows how to build PSX executables with only a linker script and objcopy (without elf2exe).
Projects that the work is based on:
spirit t0aster's worklog
armips
REDasm
PSn00bSDK (toolchain guide, EXE header)