Browse Source

* mcount for linux fixed
* push/pop edx for mcount

peter 21 years ago
parent
commit
970d84f86d
1 changed files with 11 additions and 4 deletions
  1. 11 4
      compiler/x86/cgx86.pas

+ 11 - 4
compiler/x86/cgx86.pas

@@ -1573,8 +1573,7 @@ unit cgx86;
            system_i386_freebsd,
            system_i386_netbsd,
 //         system_i386_openbsd,
-           system_i386_wdosx,
-           system_i386_linux:
+           system_i386_wdosx :
              begin
                 Case target_info.system Of
                  system_i386_freebsd : mcountprefix:='.';
@@ -1589,11 +1588,15 @@ unit cgx86;
                 list.concat(Tai_label.Create(pl));
                 list.concat(Tai_const.Create_32bit(0));
                 list.concat(Tai_section.Create(sec_code));
+                list.concat(Taicpu.Op_reg(A_PUSH,S_L,NR_EDX));
                 list.concat(Taicpu.Op_sym_ofs_reg(A_MOV,S_L,pl,0,NR_EDX));
                 a_call_name(list,target_info.Cprefix+mcountprefix+'mcount');
-                include(rg[R_INTREGISTER].used_in_proc,RS_EDX);
+                list.concat(Taicpu.Op_reg(A_POP,S_L,NR_EDX));
              end;
 
+           system_i386_linux:
+             a_call_name(list,target_info.Cprefix+'mcount');
+
            system_i386_go32v2,system_i386_watcom:
              begin
                a_call_name(list,'MCOUNT');
@@ -1788,7 +1791,11 @@ unit cgx86;
 end.
 {
   $Log$
-  Revision 1.117  2004-03-06 20:35:20  florian
+  Revision 1.118  2004-03-10 22:52:03  peter
+    * mcount for linux fixed
+    * push/pop edx for mcount
+
+  Revision 1.117  2004/03/06 20:35:20  florian
     * fixed arm compilation
     * cleaned up code generation for exported linux procedures