diff options
author | sergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-01-11 15:31:12 +0000 |
---|---|---|
committer | sergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-01-11 15:31:12 +0000 |
commit | 704f38890b5afbc00364fb827103840edeca434d (patch) | |
tree | 418e214b9c5ac8762cb986e237da5fdaf56eff0a | |
parent | 81128a6210dc7a304186ad3c3f4c5a06584ca12d (diff) | |
download | fpc-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.pas | 20 |
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; |