From 1e5cbfe546555493b7ff115a326b2722e0c5c978 Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 12 Mar 2021 21:59:18 +0000 Subject: [PATCH] * RiscV: if shared libraries are involved, we have to link always against the crt*S.o variants git-svn-id: trunk@48946 - --- compiler/systems/t_linux.pas | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/systems/t_linux.pas b/compiler/systems/t_linux.pas index aab48cbcae..7145003bce 100644 --- a/compiler/systems/t_linux.pas +++ b/compiler/systems/t_linux.pas @@ -538,7 +538,13 @@ begin Message1(exec_w_init_file_not_found,'crti.o'); { then the crtbegin* } - if cs_create_pic in current_settings.moduleswitches then + if (cs_create_pic in current_settings.moduleswitches) +{$ifdef RISCV} + { on RISC-V we need to use always the *S.o variants + if shared libraries are involved } + or (not SharedLibFiles.Empty) +{$endif RISCV} + then begin if librarysearchpath.FindFile('crtbeginS.o',false,s) then AddFileName(s) @@ -649,7 +655,13 @@ begin { objects which must be at the end } if linklibc and (libctype<>uclibc) then begin - if cs_create_pic in current_settings.moduleswitches then + if (cs_create_pic in current_settings.moduleswitches) +{$ifdef RISCV} + { on RISC-V we need to use always the *S.o variants + if shared libraries are involved } + or linksToSharedLibFiles +{$endif RISCV} + then begin found1:=librarysearchpath.FindFile('crtendS.o',false,s1); if not(found1) then