summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-01-11 15:31:12 +0000
committersergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-01-11 15:31:12 +0000
commit704f38890b5afbc00364fb827103840edeca434d (patch)
tree418e214b9c5ac8762cb986e237da5fdaf56eff0a
parent81128a6210dc7a304186ad3c3f4c5a06584ca12d (diff)
downloadfpc-704f38890b5afbc00364fb827103840edeca434d.tar.gz
* Revert part of r22548, correct fix for the issue is provided by r23188.
Only referencing data labels from code should change "GOT is needed" property. Writing data labels or referencing them from data should have no effect on it. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23363 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--compiler/nobj.pas20
1 files changed, 1 insertions, 19 deletions
diff --git a/compiler/nobj.pas b/compiler/nobj.pas
index 7fff27c91f..593b3bde38 100644
--- a/compiler/nobj.pas
+++ b/compiler/nobj.pas
@@ -112,7 +112,7 @@ implementation
uses
SysUtils,
globals,verbose,systems,
- node,procinfo,
+ node,
symbase,symtable,symconst,symtype,defcmp,
cgbase,parabase,paramgr,
dbgbase,
@@ -1049,9 +1049,6 @@ implementation
len : byte;
begin
current_asmdata.getdatalabel(p^.nl);
- if (cs_create_pic in current_settings.moduleswitches) and
- assigned(current_procinfo) then
- include(current_procinfo.flags,pi_needs_got);
if assigned(p^.l) then
writenames(list,p^.l);
list.concat(cai_align.create(const_align(sizeof(pint))));
@@ -1072,9 +1069,6 @@ implementation
if assigned(p^.l) then
writestrentry(list,p^.l);
- if (cs_create_pic in current_settings.moduleswitches) and
- assigned(current_procinfo) then
- include(current_procinfo.flags,pi_needs_got);
{ write name label }
list.concat(cai_align.create(const_align(sizeof(pint))));
list.concat(Tai_const.Create_sym(p^.nl));
@@ -1099,9 +1093,6 @@ implementation
if assigned(root) then
writenames(list,root);
- if (cs_create_pic in current_settings.moduleswitches) and
- assigned(current_procinfo) then
- include(current_procinfo.flags,pi_needs_got);
{ now start writing of the message string table }
current_asmdata.getlabel(result,alt_data);
list.concat(cai_align.create(const_align(sizeof(pint))));
@@ -1122,9 +1113,6 @@ implementation
if assigned(p^.l) then
writeintentry(list,p^.l);
- if (cs_create_pic in current_settings.moduleswitches) and
- assigned(current_procinfo) then
- include(current_procinfo.flags,pi_needs_got);
{ write name label }
list.concat(cai_align.create(const_align(sizeof(longint))));
list.concat(Tai_const.Create_32bit(p^.data.messageinf.i));
@@ -1146,9 +1134,6 @@ implementation
{ insert all message handlers into a tree, sorted by name }
_class.symtable.SymList.ForEachCall(@insertmsgint,@count);
- if (cs_create_pic in current_settings.moduleswitches) and
- assigned(current_procinfo) then
- include(current_procinfo.flags,pi_needs_got);
{ now start writing of the message string table }
current_asmdata.getlabel(r,alt_data);
list.concat(cai_align.create(const_align(sizeof(pint))));
@@ -1410,9 +1395,6 @@ implementation
function TVMTWriter.intf_get_vtbl_name(AImplIntf:TImplementedInterface): string;
begin
result:=make_mangledname('VTBL',_class.owner,_class.objname^+'_$_'+AImplIntf.IntfDef.objname^);
- if (cs_create_pic in current_settings.moduleswitches) and
- assigned(current_procinfo) then
- include(current_procinfo.flags,pi_needs_got);
end;