Browse Source

+ cond FPC_USE_CPREFIX (needs also some RTL changes)
this allows to use unit global vars as DLL exports
(the underline prefix seems needed by dlltool)

pierre 26 years ago
parent
commit
221382d99c
5 changed files with 57 additions and 9 deletions
  1. 11 2
      compiler/cg386inl.pas
  2. 11 2
      compiler/cg68kinl.pas
  3. 11 2
      compiler/cgai386.pas
  4. 13 1
      compiler/options.pas
  5. 11 2
      compiler/symsym.inc

+ 11 - 2
compiler/cg386inl.pas

@@ -189,7 +189,11 @@ implementation
           begin
             new(r);
             reset_reference(r^);
-            r^.symbol:=newasmsymbol('U_'+upper(target_info.system_unit)+io[doread]);
+            r^.symbol:=newasmsymbol(
+{$ifdef FPC_USE_CPREFIX}
+              target_os.Cprefix+
+{$endif FPC_USE_CPREFIX}
+            'U_'+upper(target_info.system_unit)+io[doread]);
             emit_ref_reg(A_LEA,S_L,r,R_EDI)
           end;
 
@@ -1428,7 +1432,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.78  1999-11-09 22:54:45  peter
+  Revision 1.79  1999-11-20 01:22:18  pierre
+    + cond FPC_USE_CPREFIX (needs also some RTL changes)
+      this allows to use unit global vars as DLL exports
+      (the underline prefix seems needed by dlltool)
+
+  Revision 1.78  1999/11/09 22:54:45  peter
     * fixed wrong asm with inc(qword), but not it's not correctly supported
 
   Revision 1.77  1999/11/06 14:34:17  peter

+ 11 - 2
compiler/cg68kinl.pas

@@ -102,7 +102,11 @@ implementation
           begin
             new(r);
             reset_reference(r^);
-            r^.symbol:=stringdup('U_'+upper(target_info.system_unit)+io[byte(doread)]);
+            r^.symbol:=stringdup(
+{$ifdef FPC_USE_CPREFIX}
+              target_os.Cprefix+
+{$endif FPC_USE_CPREFIX}
+            'U_'+upper(target_info.system_unit)+io[byte(doread)]);
             exprasmlist^.concat(new(paicpu,op_ref_reg(A_LEA,S_L,r,R_A0)))
           end;
 
@@ -899,7 +903,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.18  1999-09-16 23:05:51  florian
+  Revision 1.19  1999-11-20 01:22:18  pierre
+    + cond FPC_USE_CPREFIX (needs also some RTL changes)
+      this allows to use unit global vars as DLL exports
+      (the underline prefix seems needed by dlltool)
+
+  Revision 1.18  1999/09/16 23:05:51  florian
     * m68k compiler is again compilable (only gas writer, no assembler reader)
 
   Revision 1.17  1999/08/25 11:59:50  jonas

+ 11 - 2
compiler/cgai386.pas

@@ -2843,7 +2843,11 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
                 begin
                    new(hr);
                    reset_reference(hr^);
-                   hr^.symbol:=newasmsymbol('U_SYSWIN32_ISCONSOLE');
+                   hr^.symbol:=newasmsymbol(
+{$ifdef FPC_USE_CPREFIX}
+              target_os.Cprefix+
+{$endif FPC_USE_CPREFIX}
+                   'U_SYSWIN32_ISCONSOLE');
                    if apptype=at_cui then
                      exprasmlist^.insert(new(paicpu,op_const_ref(A_MOV,S_B,
                        1,hr)))
@@ -3447,7 +3451,12 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
 end.
 {
   $Log$
-  Revision 1.60  1999-11-17 17:04:58  pierre
+  Revision 1.61  1999-11-20 01:22:18  pierre
+    + cond FPC_USE_CPREFIX (needs also some RTL changes)
+      this allows to use unit global vars as DLL exports
+      (the underline prefix seems needed by dlltool)
+
+  Revision 1.60  1999/11/17 17:04:58  pierre
    * Notes/hints changes
 
   Revision 1.59  1999/11/15 14:04:00  pierre

+ 13 - 1
compiler/options.pas

@@ -561,6 +561,9 @@ begin
                      begin
                         { Specific info, which can be used in Makefiles }
                         case More[1] of
+{$ifdef FPC_USE_CPREFIX}
+                          'C' : QuickInfo('use C prefix');
+{$endif FPC_USE_CPREFIX}
                           'S' : begin
                                   case More[2] of
                                    'O' : QuickInfo(source_os.shortname);
@@ -1072,6 +1075,10 @@ begin
   def_symbol('SYSTEMTVARREC');
   def_symbol('INCLUDEOK');
   def_symbol('NEWMM');
+{$ifdef FPC_USE_CPREFIX}
+  { default on next round }
+  def_symbol('FPC_USE_CPREFIX');
+{$endif FPC_USE_CPREFIX}
 
 { some stuff for TP compatibility }
 {$ifdef i386}
@@ -1269,7 +1276,12 @@ end;
 end.
 {
   $Log$
-  Revision 1.36  1999-11-15 17:42:40  pierre
+  Revision 1.37  1999-11-20 01:22:19  pierre
+    + cond FPC_USE_CPREFIX (needs also some RTL changes)
+      this allows to use unit global vars as DLL exports
+      (the underline prefix seems needed by dlltool)
+
+  Revision 1.36  1999/11/15 17:42:40  pierre
    * -g disables reloc section for win32
 
   Revision 1.35  1999/11/12 11:03:50  peter

+ 11 - 2
compiler/symsym.inc

@@ -1147,7 +1147,11 @@
                prefix:='_';
            unitsymtable,
            globalsymtable :
-             prefix:='U_'+owner^.name^+'_';
+             prefix:=
+{$ifdef FPC_USE_CPREFIX}
+              target_os.Cprefix+
+{$endif FPC_USE_CPREFIX}
+              'U_'+owner^.name^+'_';
            else
              Message(sym_e_invalid_call_tvarsymmangledname);
          end;
@@ -2188,7 +2192,12 @@
 
 {
   $Log$
-  Revision 1.127  1999-11-17 17:05:04  pierre
+  Revision 1.128  1999-11-20 01:22:20  pierre
+    + cond FPC_USE_CPREFIX (needs also some RTL changes)
+      this allows to use unit global vars as DLL exports
+      (the underline prefix seems needed by dlltool)
+
+  Revision 1.127  1999/11/17 17:05:04  pierre
    * Notes/hints changes
 
   Revision 1.126  1999/11/15 22:00:48  peter