Browse Source

* RiscV: if shared libraries are involved, we have to link always against the crt*S.o variants

git-svn-id: trunk@48946 -
florian 4 years ago
parent
commit
1e5cbfe546
1 changed files with 14 additions and 2 deletions
  1. 14 2
      compiler/systems/t_linux.pas

+ 14 - 2
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