Set defdynlinker depending on selected ABI for riscv32 and riscv64

This commit is contained in:
Pierre Muller 2023-05-11 16:21:05 +00:00
parent 0efa4cbc67
commit 7c64bce04e

View File

@ -267,11 +267,20 @@ const defdynlinker='/lib/ld-linux-aarch64.so.1';
{$endif sparc64} {$endif sparc64}
{$ifdef riscv32} {$ifdef riscv32}
const defdynlinker='/lib32/ld.so.1'; const defdynlinker_generic='/lib32/ld.so.1';
const defdynlinker_soft_float='/lib/ld-linux-riscv32-ilp32.so.1';
const defdynlinker_single_float='/lib/ld-linux-riscv32-ilp32f.so.1';
const defdynlinker_double_float='/lib/ld-linux-riscv32-ilp32d.so.1';
{ const defdynlinker_quad_float='/lib/ld-linux-riscv32-ilp32q.so.1'; not yet in ABI list }
var defdynlinker : string;
{$endif riscv32} {$endif riscv32}
{$ifdef riscv64} {$ifdef riscv64}
const defdynlinker='/lib/ld-linux-riscv64-lp64d.so.1'; const defdynlinker_soft_float='/lib/ld-linux-riscv64-lp64.so.1';
const defdynlinker_single_float='/lib/ld-linux-riscv64-lp64f.so.1';
const defdynlinker_double_float='/lib/ld-linux-riscv64-lp64d.so.1';
{ const defdynlinker_quad_float='/lib/ld-linux-riscv64-lp64q.so.1'; not yet in ABI list }
var defdynlinker : string;
{$endif riscv64} {$endif riscv64}
{$ifdef xtensa} {$ifdef xtensa}
@ -291,6 +300,38 @@ begin
else else
defdynlinker:=defdynlinkerv2; defdynlinker:=defdynlinkerv2;
{$endif powerpc64} {$endif powerpc64}
{$ifdef riscv32}
if defdynlinker='' then
begin
case target_info.abi of
abi_riscv_ilp32:
defdynlinker:=defdynlinker_soft_float;
abi_riscv_ilp32f:
defdynlinker:=defdynlinker_single_float;
abi_riscv_hf,
abi_riscv_ilp32d:
defdynlinker:=defdynlinker_double_float;
else
defdynlinker:=defdynlinker_generic;
end;
end;
{$endif riscv32}
{$ifdef riscv64}
if defdynlinker='' then
begin
case target_info.abi of
abi_riscv_lp64:
defdynlinker:=defdynlinker_soft_float;
abi_riscv_lp64f:
defdynlinker:=defdynlinker_single_float;
abi_riscv_hf,
abi_riscv_lp64d:
defdynlinker:=defdynlinker_double_float;
else
defdynlinker:=defdynlinker_double_float;
end;
end;
{$endif riscv64}
{ {
Search order: Search order:
glibc 2.1+ glibc 2.1+