Ver Fonte

* fix stabs generation for implicit initfinal

peter há 22 anos atrás
pai
commit
dfd469b7a3
1 ficheiros alterados com 15 adições e 22 exclusões
  1. 15 22
      compiler/pmodules.pas

+ 15 - 22
compiler/pmodules.pas

@@ -49,6 +49,15 @@ implementation
 {$endif GDB}
        scanner,pbase,pexpr,psystem,psub;
 
+    procedure fixseg(p:TAAsmoutput;sec:TSection);
+      begin
+        p.insert(Tai_section.Create(sec));
+        if (cs_create_smart in aktmoduleswitches) then
+         p.insert(Tai_cut.Create);
+        p.concat(Tai_section.Create(sec_none));
+      end;
+
+
     procedure create_objectfile;
       var
         DLLScanner      : TDLLScanner;
@@ -130,15 +139,6 @@ implementation
 
 
     procedure insertsegment;
-
-        procedure fixseg(p:TAAsmoutput;sec:TSection);
-        begin
-          p.insert(Tai_section.Create(sec));
-          if (cs_create_smart in aktmoduleswitches) then
-           p.insert(Tai_cut.Create);
-          p.concat(Tai_section.Create(sec_none));
-        end;
-
       begin
       { Insert Ident of the compiler }
         if (not (cs_create_smart in aktmoduleswitches))
@@ -734,8 +734,9 @@ implementation
         symtablestack:=stt;
         { set procdef options }
         pd.proctypeoption:=potype;
-        pd.setmangledname(target_info.cprefix+name);
         pd.forwarddef:=false;
+        pd.setmangledname(target_info.cprefix+name);
+        pd.aliasnames.insert(pd.mangledname);
         { We don't need is a local symtable. Change it into the static
           symtable }
         pd.localst.free;
@@ -776,22 +777,17 @@ implementation
       begin
         { update module flags }
         current_module.flags:=current_module.flags or flag;
-        { now we can insert a cut }
-        if (cs_create_smart in aktmoduleswitches) then
-          codeSegment.concat(Tai_cut.Create);
         { create procdef }
         case flag of
           uf_init :
             begin
               pd:=create_main_proc(current_module.modulename^+'_init_implicit',potype_unitinit,st);
               pd.aliasnames.insert('INIT$$'+current_module.modulename^);
-              pd.aliasnames.insert(target_info.cprefix+current_module.modulename^+'_init');
             end;
           uf_finalize :
             begin
               pd:=create_main_proc(current_module.modulename^+'_finalize_implicit',potype_unitfinalize,st);
               pd.aliasnames.insert('FINALIZE$$'+current_module.modulename^);
-              pd.aliasnames.insert(target_info.cprefix+current_module.modulename^+'_finalize');
             end;
           else
             internalerror(200304253);
@@ -1045,7 +1041,6 @@ implementation
          { Compile the unit }
          pd:=create_main_proc(current_module.modulename^+'_init',potype_unitinit,st);
          pd.aliasnames.insert('INIT$$'+current_module.modulename^);
-         pd.aliasnames.insert(target_info.cprefix+current_module.modulename^+'_init');
          compile_proc_body(pd,true,false);
          release_main_proc(pd);
 
@@ -1070,7 +1065,6 @@ implementation
               { Compile the finalize }
               pd:=create_main_proc(current_module.modulename^+'_finalize',potype_unitfinalize,st);
               pd.aliasnames.insert('FINALIZE$$'+current_module.modulename^);
-              pd.aliasnames.insert(target_info.cprefix+current_module.modulename^+'_finalize');
               compile_proc_body(pd,true,false);
               release_main_proc(pd);
            end
@@ -1341,7 +1335,6 @@ implementation
          if islibrary then
           begin
             pd:=create_main_proc(current_module.modulename^+'_main',potype_proginit,st);
-            pd.aliasnames.insert(target_info.cprefix+current_module.modulename^+'_main');
             { Win32 startup code needs a single name }
 //            if (target_info.system in [system_i386_win32,system_i386_wdosx]) then
             pd.aliasnames.insert('PASCALMAIN');
@@ -1352,9 +1345,7 @@ implementation
          else
           begin
             pd:=create_main_proc('main',potype_proginit,st);
-            pd.aliasnames.insert('program_init');
             pd.aliasnames.insert('PASCALMAIN');
-            pd.aliasnames.insert(target_info.cprefix+'main');
           end;
 {$IFDEF SPARC}
          current_procinfo.After_Header;
@@ -1400,7 +1391,6 @@ So, all parameters are passerd into registers in sparc architecture.}
               { Compile the finalize }
               pd:=create_main_proc(current_module.modulename^+'_finalize',potype_unitfinalize,st);
               pd.aliasnames.insert('FINALIZE$$'+current_module.modulename^);
-              pd.aliasnames.insert(target_info.cprefix+current_module.modulename^+'_finalize');
               compile_proc_body(pd,true,false);
               release_main_proc(pd);
            end;
@@ -1493,7 +1483,10 @@ So, all parameters are passerd into registers in sparc architecture.}
 end.
 {
   $Log$
-  Revision 1.103  2003-04-27 11:21:34  peter
+  Revision 1.104  2003-04-28 21:19:02  peter
+    * fix stabs generation for implicit initfinal
+
+  Revision 1.103  2003/04/27 11:21:34  peter
     * aktprocdef renamed to current_procdef
     * procinfo renamed to current_procinfo
     * procinfo will now be stored in current_module so it can be