mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-19 00:09:26 +02:00
* Always create a section before emitting data to current_asmdata.asmlists[al_typedconsts]. Without it, such data ends up in sections created elsewhere, creating very non-obvious dependencies on other parts of compiler.
git-svn-id: trunk@17816 -
This commit is contained in:
parent
4e4b494b52
commit
7d99f95c45
@ -171,7 +171,7 @@ implementation
|
|||||||
cg.a_jmp_flags(current_asmdata.CurrAsmList,F_GE,l2);
|
cg.a_jmp_flags(current_asmdata.CurrAsmList,F_GE,l2);
|
||||||
|
|
||||||
hregister:=cg.getfpuregister(current_asmdata.CurrAsmList,OS_F64);
|
hregister:=cg.getfpuregister(current_asmdata.CurrAsmList,OS_F64);
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(tai_align.create(const_align(8)));
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l1.name,const_align(8));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
||||||
{ I got this constant from a test program (FK) }
|
{ I got this constant from a test program (FK) }
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit($41f00000));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit($41f00000));
|
||||||
|
@ -156,7 +156,7 @@ begin
|
|||||||
s64real:
|
s64real:
|
||||||
begin
|
begin
|
||||||
hregister := cg.getfpuregister(current_asmdata.CurrAsmList, OS_F64);
|
hregister := cg.getfpuregister(current_asmdata.CurrAsmList, OS_F64);
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(tai_align.Create(const_align(8)));
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l1.name,const_align(8));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
||||||
|
|
||||||
{ I got this constant from a test program (FK) }
|
{ I got this constant from a test program (FK) }
|
||||||
|
@ -1161,8 +1161,7 @@ implementation
|
|||||||
(pd.visibility=vis_published) then
|
(pd.visibility=vis_published) then
|
||||||
begin
|
begin
|
||||||
current_asmdata.getdatalabel(l);
|
current_asmdata.getdatalabel(l);
|
||||||
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l.name,const_align(sizeof(pint)));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(cai_align.create(const_align(sizeof(pint))));
|
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_8bit(length(tsym(p).realname)));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_8bit(length(tsym(p).realname)));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_string.Create(tsym(p).realname));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_string.Create(tsym(p).realname));
|
||||||
|
@ -167,7 +167,7 @@ implementation
|
|||||||
s64real:
|
s64real:
|
||||||
begin
|
begin
|
||||||
hregister:=cg.getfpuregister(current_asmdata.CurrAsmList,OS_F64);
|
hregister:=cg.getfpuregister(current_asmdata.CurrAsmList,OS_F64);
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(tai_align.create(const_align(8)));
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l1.name,const_align(8));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
||||||
{ I got this constant from a test program (FK) }
|
{ I got this constant from a test program (FK) }
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit($41f00000));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit($41f00000));
|
||||||
|
@ -348,6 +348,7 @@ implementation
|
|||||||
|
|
||||||
current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_FILD,S_IQ,leftref));
|
current_asmdata.CurrAsmList.concat(taicpu.op_ref(A_FILD,S_IQ,leftref));
|
||||||
cg.a_jmp_flags(current_asmdata.CurrAsmList,F_NC,l2);
|
cg.a_jmp_flags(current_asmdata.CurrAsmList,F_NC,l2);
|
||||||
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l1.name,const_align(sizeof(pint)));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
||||||
{ I got this constant from a test program (FK) }
|
{ I got this constant from a test program (FK) }
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit(0));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit(0));
|
||||||
|
@ -164,6 +164,7 @@ interface
|
|||||||
reg:=cg.getmmregister(current_asmdata.CurrAsmList,def_cgsize(resultdef));
|
reg:=cg.getmmregister(current_asmdata.CurrAsmList,def_cgsize(resultdef));
|
||||||
|
|
||||||
current_asmdata.getdatalabel(l1);
|
current_asmdata.getdatalabel(l1);
|
||||||
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l1.name,const_align(sizeof(pint)));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
||||||
case def_cgsize(resultdef) of
|
case def_cgsize(resultdef) of
|
||||||
OS_F32:
|
OS_F32:
|
||||||
|
@ -136,6 +136,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
cg.a_jmp_flags(current_asmdata.CurrAsmList,F_NC,l2);
|
cg.a_jmp_flags(current_asmdata.CurrAsmList,F_NC,l2);
|
||||||
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l1.name,const_align(sizeof(pint)));
|
||||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(l1));
|
||||||
reference_reset_symbol(href,l1,0,4);
|
reference_reset_symbol(href,l1,0,4);
|
||||||
{ simplify for PIC }
|
{ simplify for PIC }
|
||||||
|
Loading…
Reference in New Issue
Block a user