* correct problem for -init -fini for scripts

git-svn-id: trunk@14811 -
This commit is contained in:
pierre 2010-01-27 12:19:46 +00:00
parent a8381c8b32
commit fbba2e89f8

View File

@ -556,17 +556,38 @@ begin
WriteResponseFile(true);
{ Create some replacements }
{ initname and fininame may contain $, which can be wrongly interpreted
in a link script, thus we surround them with single quotes
in cs_link_nolink is in globalswitches }
if use_gnu_ld then
begin
InitFiniStr:='-init '+exportlib.initname;
InitFiniStr:='-init ';
if cs_link_nolink in current_settings.globalswitches then
InitFiniStr:=InitFiniStr+''''+exportlib.initname+''''
else
InitFiniStr:=InitFiniStr+exportlib.initname;
if (exportlib.fininame<>'') then
InitFiniStr:=InitFiniStr+' -fini '+exportlib.fininame;
begin
if cs_link_nolink in current_settings.globalswitches then
InitFiniStr:=InitFiniStr+' -fini '''+exportlib.initname+''''
else
InitFiniStr:=InitFiniStr+' -fini '+exportlib.fininame;
end;
end
else
begin
InitFiniStr:='-z initarray='+exportlib.initname;
InitFiniStr:='-z initarray=';
if cs_link_nolink in current_settings.globalswitches then
InitFiniStr:=InitFiniStr+''''+exportlib.initname+''''
else
InitFiniStr:=InitFiniStr+exportlib.initname;
if (exportlib.fininame<>'') then
InitFiniStr:=InitFiniStr+' -z finiarray='+exportlib.fininame;
begin
if cs_link_nolink in current_settings.globalswitches then
InitFiniStr:=InitFiniStr+' -z finiarray='''+exportlib.initname+''''
else
InitFiniStr:=InitFiniStr+' -z finiarray='+exportlib.fininame;
end;
end;
{ Call linker }