For more information on the dynamic linker names I didn't know:
lp32, ilp32f and ilp32d are the ABI.
i -> integer
l -> long
p -> pointer
f -> float
d -> double
The chars in the beginning indicate what kind of data is sent to 32 bit registers.
The suffix says which ones are sent to floating point registers.
So in ilp32 floating point numbers are sent to integer registers, while in ilp32d double precision numbers are sent to floating point registers.
Not every ABI is compatible with every single RISC-V configuration. RV32I for instance, doesn't support floating point numbers (they are supported in the F extension) so it doesn't provide floating point registers meaning that it's not able to use any ABI that has a `d` or an `f` as suffix.
But RISC-V configurations with floating point modules can actually run the simplest ABI if they want so we probably need to add many entries here :)