|
@@ -111,7 +111,7 @@ implementation
|
|
|
uses
|
|
|
SysUtils,
|
|
|
globals,verbose,systems,
|
|
|
- node,
|
|
|
+ node,procinfo,
|
|
|
symbase,symtable,symconst,symtype,defcmp,
|
|
|
dbgbase,
|
|
|
ncgrtti,
|
|
@@ -1039,6 +1039,9 @@ 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))));
|
|
@@ -1059,6 +1062,9 @@ 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));
|
|
@@ -1083,6 +1089,9 @@ 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))));
|
|
@@ -1103,6 +1112,9 @@ 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));
|
|
@@ -1124,6 +1136,9 @@ 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))));
|
|
@@ -1385,6 +1400,9 @@ 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;
|
|
|
|
|
|
|