Lld link newlib nano show out of range error for _printf_float

Hello, when I compile simple application with newlib nano without -u _printf_float for rv64imac, but it show the following error, the library is compiled with medany.

for this application, I don’t need printf float. It can be a weak symbol as described in https://github.com/riscvarchive/riscv-newlib/blob/riscv-newlib-3.2.0/newlib/libc/stdio/nano-vfprintf.c#L624-L633 and riscv-newlib/README at riscv-newlib-3.2.0 · riscvarchive/riscv-newlib · GitHub

ld.lld: error: /home/hqfang/rvgnutoolchainv7/bin/../lib/gcc/riscv64-unknown-elf/12.2.0/../../../../riscv64-unknown-elf/lib/rv64imac/lp64/libg_nano.a(lib_a-nano-vfprintf.o):(function _vfprintf_r: .text._vfprintf_r+0x236): relocation R_RISCV_PCREL_HI20 out of range: -524290 is not in [-524288, 524287]; references _printf_float
>>> referenced by nano-vfprintf.c
clang-15: error: ld command failed with exit code 1 (use -v to see invocation)

When I changed the linker to ld via -fuse-ld=ld, then the application is linked successfully.

And when I compile this application for rv32imac, it works for both lld and ld.