mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 11:29:27 +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);
|
||||
|
||||
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));
|
||||
{ I got this constant from a test program (FK) }
|
||||
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_32bit($41f00000));
|
||||
|
@ -156,7 +156,7 @@ begin
|
||||
s64real:
|
||||
begin
|
||||
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));
|
||||
|
||||
{ I got this constant from a test program (FK) }
|
||||
|
@ -1161,8 +1161,7 @@ implementation
|
||||
(pd.visibility=vis_published) then
|
||||
begin
|
||||
current_asmdata.getdatalabel(l);
|
||||
|
||||
current_asmdata.asmlists[al_typedconsts].concat(cai_align.create(const_align(sizeof(pint))));
|
||||
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,l.name,const_align(sizeof(pint)));
|
||||
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_string.Create(tsym(p).realname));
|
||||
|
@ -167,7 +167,7 @@ implementation
|
||||
s64real:
|
||||
begin
|
||||
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));
|
||||
{ I got this constant from a test program (FK) }
|
||||
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));
|
||||
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));
|
||||
{ I got this constant from a test program (FK) }
|
||||
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));
|
||||
|
||||
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));
|
||||
case def_cgsize(resultdef) of
|
||||
OS_F32:
|
||||
|
@ -136,6 +136,7 @@ implementation
|
||||
end;
|
||||
|
||||
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));
|
||||
reference_reset_symbol(href,l1,0,4);
|
||||
{ simplify for PIC }
|
||||
|
Loading…
Reference in New Issue
Block a user