mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 15:19:25 +02:00
* Generate exception filters data on i386-win32 and x86_64-win64 without using global labels.
git-svn-id: trunk@29512 -
This commit is contained in:
parent
a67478e033
commit
ed4e876f4f
@ -535,7 +535,7 @@ procedure ti386tryexceptnode.pass_generate_code;
|
||||
{ start of scope }
|
||||
if assigned(right) then
|
||||
begin
|
||||
current_asmdata.getdatalabel(filterlabel);
|
||||
current_asmdata.getaddrlabel(filterlabel);
|
||||
emit_scope_start(
|
||||
current_asmdata.RefAsmSymbol('__FPC_on_handler'),
|
||||
filterlabel);
|
||||
@ -609,8 +609,7 @@ procedure ti386tryexceptnode.pass_generate_code;
|
||||
begin
|
||||
if hnode.nodetype<>onn then
|
||||
InternalError(2011103101);
|
||||
{ TODO: make it done without using global label }
|
||||
current_asmdata.getglobaljumplabel(onlabel);
|
||||
current_asmdata.getjumplabel(onlabel);
|
||||
hlist.concat(tai_const.create_sym(current_asmdata.RefAsmSymbol(tonnode(hnode).excepttype.vmt_mangledname,AT_DATA)));
|
||||
hlist.concat(tai_const.create_sym(onlabel));
|
||||
cg.a_label(current_asmdata.CurrAsmList,onlabel);
|
||||
@ -626,8 +625,7 @@ procedure ti386tryexceptnode.pass_generate_code;
|
||||
inc(onnodecount.value);
|
||||
end;
|
||||
{ now move filter table to permanent list all at once }
|
||||
maybe_new_object_file(current_asmdata.asmlists[al_typedconsts]);
|
||||
current_asmdata.asmlists[al_typedconsts].concatlist(hlist);
|
||||
current_procinfo.aktlocaldata.concatlist(hlist);
|
||||
hlist.free;
|
||||
end;
|
||||
|
||||
|
@ -448,7 +448,7 @@ procedure tx64tryexceptnode.pass_generate_code;
|
||||
begin
|
||||
{ emit filter table to a temporary asmlist }
|
||||
hlist:=TAsmList.Create;
|
||||
current_asmdata.getdatalabel(filterlabel);
|
||||
current_asmdata.getaddrlabel(filterlabel);
|
||||
new_section(hlist,sec_rodata_norel,filterlabel.name,4);
|
||||
cg.a_label(hlist,filterlabel);
|
||||
onnodecount:=tai_const.create_32bit(0);
|
||||
@ -459,8 +459,7 @@ procedure tx64tryexceptnode.pass_generate_code;
|
||||
begin
|
||||
if hnode.nodetype<>onn then
|
||||
InternalError(2011103101);
|
||||
{ TODO: make it done without using global label }
|
||||
current_asmdata.getglobaljumplabel(onlabel);
|
||||
current_asmdata.getjumplabel(onlabel);
|
||||
hlist.concat(tai_const.create_rva_sym(current_asmdata.RefAsmSymbol(tonnode(hnode).excepttype.vmt_mangledname,AT_DATA)));
|
||||
hlist.concat(tai_const.create_rva_sym(onlabel));
|
||||
cg.a_label(current_asmdata.CurrAsmList,onlabel);
|
||||
@ -476,8 +475,7 @@ procedure tx64tryexceptnode.pass_generate_code;
|
||||
inc(onnodecount.value);
|
||||
end;
|
||||
{ now move filter table to permanent list all at once }
|
||||
maybe_new_object_file(current_asmdata.asmlists[al_typedconsts]);
|
||||
current_asmdata.asmlists[al_typedconsts].concatlist(hlist);
|
||||
current_procinfo.aktlocaldata.concatlist(hlist);
|
||||
hlist.free;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user