Преглед изворни кода

* 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 -
sergei пре 14 година
родитељ
комит
7d99f95c45

+ 1 - 1
compiler/arm/narmcnv.pas

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

+ 1 - 1
compiler/mips/ncpucnv.pas

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

+ 1 - 2
compiler/nobj.pas

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

+ 1 - 1
compiler/sparc/ncpucnv.pas

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

+ 1 - 0
compiler/x86/nx86cnv.pas

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

+ 1 - 0
compiler/x86/nx86mat.pas

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

+ 1 - 0
compiler/x86_64/nx64cnv.pas

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