* 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:
sergei 2011-06-24 02:05:56 +00:00
parent 4e4b494b52
commit 7d99f95c45
7 changed files with 7 additions and 5 deletions

View File

@ -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));

View File

@ -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) }

View File

@ -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));

View File

@ -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));

View File

@ -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));

View File

@ -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:

View File

@ -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 }