--- Merging r43485 into '.':

U    compiler/systems/t_bsd.pas
--- Recording mergeinfo for merge of r43485 into '.':
 U   .

git-svn-id: branches/fixes_3_2@44732 -
This commit is contained in:
Jonas Maebe 2020-04-16 17:09:03 +00:00
parent a4758f3560
commit 947f6825c9

View File

@ -586,28 +586,29 @@ begin
HPath:=TCmdStrListItem(HPath.Next); HPath:=TCmdStrListItem(HPath.Next);
end; end;
end; end;
{ force local symbol resolution (i.e., inside the shared }
{ library itself) for all non-exorted symbols, otherwise } { force local symbol resolution (i.e., inside the shared }
{ several RTL symbols of FPC-compiled shared libraries } { library itself) for all non-exorted symbols, otherwise }
{ will be bound to those of a single shared library or } { several RTL symbols of FPC-compiled shared libraries }
{ to the main program } { will be bound to those of a single shared library or }
if (isdll) and (target_info.system in systems_bsd) then { to the main program }
if (isdll) and (target_info.system in systems_bsd) then
begin
LinkRes.add('VERSION');
LinkRes.add('{');
LinkRes.add(' {');
if not texportlibunix(exportlib).exportedsymnames.empty then
begin begin
LinkRes.add('VERSION'); LinkRes.add(' global:');
LinkRes.add('{'); repeat
LinkRes.add(' {'); LinkRes.add(' '+texportlibunix(exportlib).exportedsymnames.getfirst+';');
if not texportlibunix(exportlib).exportedsymnames.empty then until texportlibunix(exportlib).exportedsymnames.empty;
begin
LinkRes.add(' global:');
repeat
LinkRes.add(' '+texportlibunix(exportlib).exportedsymnames.getfirst+';');
until texportlibunix(exportlib).exportedsymnames.empty;
end;
LinkRes.add(' local:');
LinkRes.add(' *;');
LinkRes.add(' };');
LinkRes.add('}');
end; end;
LinkRes.add(' local:');
LinkRes.add(' *;');
LinkRes.add(' };');
LinkRes.add('}');
end;
if not LdSupportsNoResponseFile then if not LdSupportsNoResponseFile then
LinkRes.Add('INPUT('); LinkRes.Add('INPUT(');
@ -638,10 +639,7 @@ begin
{ main objectfiles } { main objectfiles }
{ Generate linkfiles.res file if needed } if (target_info.system in systems_darwin) then
{ Only needed on Windows, due to the limitation of 8196 characters for command line }
if (LdSupportsNoResponseFile) and
(source_info.system in systems_all_windows) then
begin begin
FilesList:=TLinkRes.Create(outputexedir+'linkfiles.res',false); FilesList:=TLinkRes.Create(outputexedir+'linkfiles.res',false);
while not ObjectFiles.Empty do while not ObjectFiles.Empty do
@ -649,11 +647,7 @@ begin
s:=ObjectFiles.GetFirst; s:=ObjectFiles.GetFirst;
if s<>'' then if s<>'' then
begin begin
repeat s:=TargetFixFileName(s);
i:=Pos(source_info.dirsep,s);
if i>0 then
s[i]:=target_info.dirsep;
until i=0;
FilesList.Add(s); FilesList.Add(s);
end; end;
end; end;
@ -874,7 +868,7 @@ begin
Replace(cmdstr,'$MAP',mapstr); Replace(cmdstr,'$MAP',mapstr);
Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName)); Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName));
Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName)); Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
if (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then if (target_info.system in systems_darwin) then
Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res')) Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res'))
else else
Replace(cmdstr,'$FILELIST',''); Replace(cmdstr,'$FILELIST','');
@ -931,12 +925,10 @@ begin
DeleteFile(linkscript.fn); DeleteFile(linkscript.fn);
linkscript.free linkscript.free
end; end;
if target_info.system in systems_darwin then
DeleteFile(outputexedir+'linkfiles.res');
end; end;
{ Remove linkfiles.res }
if (success) and (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then
DeleteFile(outputexedir+'linkfiles.res');
MakeExecutable:=success; { otherwise a recursive call to link method } MakeExecutable:=success; { otherwise a recursive call to link method }
end; end;
@ -1008,7 +1000,7 @@ begin
Replace(cmdstr,'$TARGET',targetstr); Replace(cmdstr,'$TARGET',targetstr);
Replace(cmdstr,'$EMUL',EmulStr); Replace(cmdstr,'$EMUL',EmulStr);
Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName)); Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName));
if (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then if (target_info.system in systems_darwin) then
Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res')) Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res'))
else else
Replace(cmdstr,'$FILELIST',''); Replace(cmdstr,'$FILELIST','');
@ -1090,13 +1082,12 @@ begin
linkscript.free linkscript.free
end; end;
if (target_info.system in systems_darwin) then if (target_info.system in systems_darwin) then
DeleteFile(outputexedir+'linksyms.fpc'); begin
DeleteFile(outputexedir+'linksyms.fpc');
DeleteFile(outputexedir+'linkfiles.res');
end;
end; end;
{ Remove linkfiles.res }
if (success) and (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then
DeleteFile(outputexedir+'linkfiles.res');
MakeSharedLibrary:=success; { otherwise a recursive call to link method } MakeSharedLibrary:=success; { otherwise a recursive call to link method }
end; end;