Browse Source

* big transformation of Tai_[const_]Symbol.Create[data]name*

olle 21 years ago
parent
commit
4fecc1a56f

+ 8 - 37
compiler/aasmbase.pas

@@ -190,9 +190,7 @@ interface
          procedure Freeasmsymbolidx;
          procedure DerefAsmsymbol(var s:tasmsymbol);
          { asmsymbol }
-         function  newasmsymbol(const s : string) : tasmsymbol;
-         function  newasmsymboldata(const s : string) : tasmsymbol;
-         function  newasmsymboltype(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
+         function  newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
          function  getasmsymbol(const s : string) : tasmsymbol;
          function  renameasmsymbol(const sold, snew : string):tasmsymbol;
          function  newasmlabel(nr:longint;is_addr,is_data:boolean) : tasmlabel;
@@ -702,37 +700,7 @@ implementation
       end;
 
 
-    function TAsmLibraryData.newasmsymbol(const s : string) : tasmsymbol;
-      var
-        hp : tasmsymbol;
-      begin
-        hp:=tasmsymbol(symbolsearch.search(s));
-        if not assigned(hp) then
-         begin
-           { Not found, insert it as an External }
-           hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_FUNCTION);
-           symbolsearch.insert(hp);
-         end;
-        newasmsymbol:=hp;
-      end;
-
-
-    function TAsmLibraryData.newasmsymboldata(const s : string) : tasmsymbol;
-      var
-        hp : tasmsymbol;
-      begin
-        hp:=tasmsymbol(symbolsearch.search(s));
-        if not assigned(hp) then
-         begin
-           { Not found, insert it as an External }
-           hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_DATA);
-           symbolsearch.insert(hp);
-         end;
-        newasmsymboldata:=hp;
-      end;
-
-
-    function TAsmLibraryData.newasmsymboltype(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
+    function TAsmLibraryData.newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
       var
         hp : tasmsymbol;
       begin
@@ -744,11 +712,11 @@ implementation
          end
         else
          begin
-           { Not found, insert it as an External }
+           { Not found, insert it. }
            hp:=tasmsymbol.create(s,_bind,_typ);
            symbolsearch.insert(hp);
          end;
-        newasmsymboltype:=hp;
+        newasmsymbol:=hp;
       end;
 
 
@@ -905,7 +873,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.15  2003-05-23 14:27:35  peter
+  Revision 1.16  2004-03-02 00:36:32  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.15  2003/05/23 14:27:35  peter
     * remove some unit dependencies
     * current_procinfo changes to store more info
 

+ 18 - 60
compiler/aasmtai.pas

@@ -269,10 +269,8 @@ interface
           size      : longint;
           constructor Create(_sym:tasmsymbol;siz:longint);
           constructor Create_Global(_sym:tasmsymbol;siz:longint);
-          constructor Createname(const _name : string;siz:longint);
-          constructor Createname_global(const _name : string;siz:longint);
-          constructor Createdataname(const _name : string;siz:longint);
-          constructor Createdataname_global(const _name : string;siz:longint);
+          constructor Createname(const _name : string;_symtyp:Tasmsymtype;siz:longint);
+          constructor Createname_global(const _name : string;_symtyp:Tasmsymtype;siz:longint);
           constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure derefimpl;override;
@@ -358,10 +356,8 @@ interface
           constructor Create(_sym:tasmsymbol);
           constructor Create_offset(_sym:tasmsymbol;ofs:longint);
           constructor Create_rva(_sym:tasmsymbol);
-          constructor Createname(const name:string);
-          constructor Createname_offset(const name:string;ofs:longint);
+          constructor Createname(const name:string;_symtyp:Tasmsymtype;ofs:longint);
           constructor Createname_rva(const name:string);
-          constructor Createdataname(const name:string);
           constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure derefimpl;override;
@@ -718,7 +714,7 @@ implementation
       begin
          inherited Create;
          typ:=ait_datablock;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_DATA);
+         sym:=objectlibrary.newasmsymbol(_name,AB_LOCAL,AT_DATA);
          { keep things aligned }
          if _size<=0 then
            _size:=4;
@@ -731,7 +727,7 @@ implementation
       begin
          inherited Create;
          typ:=ait_datablock;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_DATA);
+         sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,AT_DATA);
          { keep things aligned }
          if _size<=0 then
            _size:=4;
@@ -788,43 +784,24 @@ implementation
          is_global:=true;
       end;
 
-    constructor tai_symbol.Createname(const _name : string;siz:longint);
+    constructor tai_symbol.Createname(const _name : string;_symtyp:Tasmsymtype;siz:longint);
       begin
          inherited Create;
          typ:=ait_symbol;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_FUNCTION);
+         sym:=objectlibrary.newasmsymbol(_name,AB_LOCAL,_symtyp);
          size:=siz;
          is_global:=false;
       end;
 
-    constructor tai_symbol.Createname_global(const _name : string;siz:longint);
+    constructor tai_symbol.Createname_global(const _name : string;_symtyp:Tasmsymtype;siz:longint);
       begin
          inherited Create;
          typ:=ait_symbol;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_FUNCTION);
+         sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,_symtyp);
          size:=siz;
          is_global:=true;
       end;
 
-    constructor tai_symbol.Createdataname(const _name : string;siz:longint);
-      begin
-         inherited Create;
-         typ:=ait_symbol;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_DATA);
-         size:=siz;
-         is_global:=false;
-      end;
-
-    constructor tai_symbol.Createdataname_global(const _name : string;siz:longint);
-      begin
-         inherited Create;
-         typ:=ait_symbol;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_DATA);
-         size:=siz;
-         is_global:=true;
-      end;
-
-
     constructor tai_symbol.ppuload(t:taitype;ppufile:tcompilerppufile);
       begin
         inherited ppuload(t,ppufile);
@@ -850,7 +827,7 @@ implementation
 
 
 {****************************************************************************
-                               TAI_SYMBOL
+                               TAI_SYMBOL_END
  ****************************************************************************}
 
     constructor tai_symbol_end.Create(_sym:tasmsymbol);
@@ -864,7 +841,7 @@ implementation
       begin
          inherited Create;
          typ:=ait_symbol_end;
-         sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_NONE);
+         sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,AT_NONE);
       end;
 
     constructor tai_symbol_end.ppuload(t:taitype;ppufile:tcompilerppufile);
@@ -981,21 +958,11 @@ implementation
          sym.increfs;
       end;
 
-    constructor tai_const_symbol.Createname(const name:string);
+    constructor tai_const_symbol.Createname(const name:string;_symtyp:Tasmsymtype;ofs:longint);
       begin
          inherited Create;
          typ:=ait_const_symbol;
-         sym:=objectlibrary.newasmsymbol(name);
-         offset:=0;
-         { update sym info }
-         sym.increfs;
-      end;
-
-    constructor tai_const_symbol.Createname_offset(const name:string;ofs:longint);
-      begin
-         inherited Create;
-         typ:=ait_const_symbol;
-         sym:=objectlibrary.newasmsymbol(name);
+         sym:=objectlibrary.newasmsymbol(name,AB_EXTERNAL,_symtyp);
          offset:=ofs;
          { update sym info }
          sym.increfs;
@@ -1005,24 +972,12 @@ implementation
       begin
          inherited Create;
          typ:=ait_const_rva;
-         sym:=objectlibrary.newasmsymbol(name);
+         sym:=objectlibrary.newasmsymbol(name,AB_EXTERNAL,AT_FUNCTION);
          offset:=0;
          { update sym info }
          sym.increfs;
       end;
 
-
-    constructor tai_const_symbol.Createdataname(const name:string);
-      begin
-         inherited Create;
-         typ:=ait_const_symbol;
-         sym:=objectlibrary.newasmsymboltype(name,AB_EXTERNAL,AT_DATA);
-         offset:=0;
-         { update sym info }
-         sym.increfs;
-      end;
-
-
     constructor tai_const_symbol.ppuload(t:taitype;ppufile:tcompilerppufile);
       begin
         inherited ppuload(t,ppufile);
@@ -2005,7 +1960,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.74  2004-02-27 12:13:15  daniel
+  Revision 1.75  2004-03-02 00:36:32  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.74  2004/02/27 12:13:15  daniel
     - Removed troublesome writeln statement
 
   Revision 1.73  2004/02/27 10:21:04  florian

+ 5 - 2
compiler/alpha/cgcpu.pas

@@ -85,7 +85,7 @@ end;
 procedure tcgalpha.a_call_name(list : taasmoutput;const s : string);
 
   begin
-     { list^.concat(taicpu,op_sym(A_CALL,S_NO,newasmsymbol(s)))); }
+     { list^.concat(taicpu,op_sym(A_CALL,S_NO,newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)))); }
      {!!!!!!!!!1 offset is ignored }
      abstract;
   end;
@@ -161,7 +161,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.3  2002-09-29 23:42:45  florian
+  Revision 1.4  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.3  2002/09/29 23:42:45  florian
     * several fixes to get forward with alpha compilation
 
   Revision 1.2  2002/09/07 15:25:10  peter

+ 6 - 3
compiler/arm/cgcpu.pas

@@ -249,7 +249,7 @@ unit cgcpu;
 
     procedure tcgarm.a_call_name(list : taasmoutput;const s : string);
       begin
-         list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s)));
+         list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
          if not(pi_do_call in current_procinfo.flags) then
            internalerror(2003060703);
       end;
@@ -800,7 +800,7 @@ unit cgcpu;
 
     procedure tcgarm.a_jmp_always(list : taasmoutput;l: tasmlabel);
       begin
-        list.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(l.name)));
+        list.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
       end;
 
 
@@ -1273,7 +1273,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.44  2004-02-04 22:01:13  peter
+  Revision 1.45  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.44  2004/02/04 22:01:13  peter
     * first try to get cpupara working for x86_64
 
   Revision 1.43  2004/01/29 17:09:32  florian

+ 5 - 2
compiler/arm/raarmgas.pas

@@ -438,7 +438,7 @@ Unit raarmgas;
                                   { not found, finally ... add it anyways ... }
                                   Message1(asmr_w_id_supposed_external,expr);
                                   oper.InitRef;
-                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
+                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
                                 end;
                              end
                           else
@@ -748,7 +748,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.7  2004-01-20 21:02:56  florian
+  Revision 1.8  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.7  2004/01/20 21:02:56  florian
     * fixed symbol type writing for arm-linux
     * fixed assembler generation for abs
 

+ 7 - 4
compiler/assemble.pas

@@ -750,7 +750,7 @@ Implementation
                 { the symbol can be external
                   so we must use newasmsymbol and
                   not getasmsymbol !! PM }
-                ps:=objectlibrary.newasmsymbol(copy(s,1,j-1));
+                ps:=objectlibrary.newasmsymbol(copy(s,1,j-1),AB_EXTERNAL,AT_FUNCTION);
                 if not assigned(ps) then
                   internalerror(33006)
                 else
@@ -860,7 +860,7 @@ Implementation
               else
                curr_n:=n_includefile;
               { get symbol for this includefile }
-              hp:=objectlibrary.newasmsymboltype('Ltext'+ToStr(IncludeCount),AB_LOCAL,AT_FUNCTION);
+              hp:=objectlibrary.newasmsymbol('Ltext'+ToStr(IncludeCount),AB_LOCAL,AT_FUNCTION);
               if currpass=1 then
                 begin
                   hp.setaddress(currpass,objectalloc.currsec,objectalloc.sectionsize,0);
@@ -912,7 +912,7 @@ Implementation
            exit;
         store_sec:=objectalloc.currsec;
         objectalloc.seTSection(sec_code);
-        hp:=objectlibrary.newasmsymboltype('Letext',AB_LOCAL,AT_FUNCTION);
+        hp:=objectlibrary.newasmsymbol('Letext',AB_LOCAL,AT_FUNCTION);
         if currpass=1 then
           begin
             hp.setaddress(currpass,objectalloc.currsec,objectalloc.sectionsize,0);
@@ -1659,7 +1659,10 @@ Implementation
 end.
 {
   $Log$
-  Revision 1.62  2004-02-27 10:21:05  florian
+  Revision 1.63  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.62  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/cgobj.pas

@@ -1878,7 +1878,7 @@ implementation
         paraloc2:=paramanager.getintparaloc(pocall_default,2);
         if (cs_check_object in aktlocalswitches) then
          begin
-           reference_reset_symbol(hrefvmt,objectlibrary.newasmsymboldata(objdef.vmt_mangledname),0);
+           reference_reset_symbol(hrefvmt,objectlibrary.newasmsymbol(objdef.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
            paramanager.allocparaloc(list,paraloc2);
            a_paramaddr_ref(list,hrefvmt,paraloc2);
            paramanager.allocparaloc(list,paraloc1);
@@ -2109,7 +2109,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.159  2004-02-27 10:21:05  florian
+  Revision 1.160  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.159  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/cresstr.pas

@@ -196,7 +196,7 @@ begin
   if not(assigned(resourcestringlist)) then
     resourcestringlist:=taasmoutput.create;
   resourcestringlist.insert(tai_const.create_32bit(resstrcount));
-  resourcestringlist.insert(tai_symbol.createdataname_global(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),0));
+  resourcestringlist.insert(tai_symbol.createname_global(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),AT_DATA,0));
   resourcestringlist.insert(tai_align.Create(const_align(pointer_size)));
   R:=TResourceStringItem(List.First);
   While assigned(R) do
@@ -300,7 +300,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.21  2004-02-26 16:16:38  peter
+  Revision 1.22  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.21  2004/02/26 16:16:38  peter
     * tai_const.create_ptr added
 
   Revision 1.20  2003/12/29 19:31:20  florian

+ 5 - 2
compiler/fppu.pas

@@ -809,7 +809,7 @@ uses
               typ:=tasmsymtype(ppufile.getbyte);
               case asmsymtype of
                 1 :
-                 librarydata.asmsymbolidx^[i-1]:=librarydata.newasmsymboltype(name,bind,typ);
+                 librarydata.asmsymbolidx^[i-1]:=librarydata.newasmsymbol(name,bind,typ);
                 2 :
                  librarydata.asmsymbolidx^[i-1]:=librarydata.newasmlabel(labelnr,false,false);
                 3 :
@@ -1514,7 +1514,10 @@ uses
 end.
 {
   $Log$
-  Revision 1.52  2004-02-03 16:14:13  peter
+  Revision 1.53  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.52  2004/02/03 16:14:13  peter
     * fix remembering path of main source file
 
   Revision 1.51  2004/01/26 16:12:27  daniel

+ 7 - 4
compiler/i386/n386obj.pas

@@ -168,9 +168,9 @@ begin
     make_global:=true;
 
   if make_global then
-   exprasmList.concat(Tai_symbol.Createname_global(labelname,0))
+   exprasmList.concat(Tai_symbol.Createname_global(labelname,AT_FUNCTION,0))
   else
-   exprasmList.concat(Tai_symbol.Createname(labelname,0));
+   exprasmList.concat(Tai_symbol.Createname(labelname,AT_FUNCTION,0));
 
   { set param1 interface to self  }
   adjustselfvalue(procdef,ioffset);
@@ -223,7 +223,7 @@ begin
   { case 0 }
   else
     begin
-      lab:=objectlibrary.newasmsymbol(procdef.mangledname);
+      lab:=objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
       emit_sym(A_JMP,S_NO,lab);
     end;
 
@@ -238,7 +238,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.31  2004-02-27 13:42:52  olle
+  Revision 1.32  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.31  2004/02/27 13:42:52  olle
     + added Tai_symbol_end
 
   Revision 1.30  2004/02/27 10:21:05  florian

+ 5 - 2
compiler/i386/ra386int.pas

@@ -1378,7 +1378,7 @@ Unit Ra386int;
          begin
            oper.opr.typ:=OPR_SYMBOL;
            oper.opr.symofs:=l;
-           oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr);
+           oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
          end
         else
          begin
@@ -1977,7 +1977,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.69  2004-01-14 23:39:05  florian
+  Revision 1.70  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.69  2004/01/14 23:39:05  florian
     * another bunch of x86-64 fixes mainly calling convention and
       assembler reader related
 

+ 5 - 2
compiler/m68k/cgcpu.pas

@@ -211,7 +211,7 @@ unit cgcpu;
     procedure tcg68k.a_call_name(list : taasmoutput;const s : string);
 
       begin
-        list.concat(taicpu.op_sym(A_JSR,S_NO,objectlibrary.newasmsymbol(s)));
+        list.concat(taicpu.op_sym(A_JSR,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
       end;
 
 
@@ -1271,7 +1271,10 @@ end.
 
 {
   $Log$
-  Revision 1.21  2004-01-30 12:17:18  florian
+  Revision 1.22  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.21  2004/01/30 12:17:18  florian
     * fixed some m68k compilation problems
 
   Revision 1.20  2003/04/27 11:21:36  peter

+ 6 - 3
compiler/m68k/rasm.pas

@@ -1448,7 +1448,7 @@ type
                           l:=opr.val;
                           opr.typ := OPR_SYMBOL;
                           opr.symofs := l;
-                          opr.symbol := objectlibrary.newasmsymbol(tempstr);
+                          opr.symbol := objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
                         end;
                  end;
    { // Constant memory offset .              // }
@@ -1523,7 +1523,7 @@ type
                             Begin
                               { not found, finally ... add it anyways ... }
                               Message1(asmr_w_id_supposed_external,expr);
-                              opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
+                              opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
                             end;
                         end
                        else
@@ -2269,7 +2269,10 @@ Begin
 end.
 {
   $Log$
-  Revision 1.13  2003-02-19 22:00:16  daniel
+  Revision 1.14  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.13  2003/02/19 22:00:16  daniel
     * Code generator converted to new register notation
     - Horribily outdated todo.txt removed
 

+ 2 - 2
compiler/msg/errore.msg

@@ -2140,10 +2140,10 @@ option_help_pages=11025_[
 **2Sp_same as -Mgpc
 **2Ss_constructor name must be init (destructor must be done)
 **2St_allow static keyword in objects
-**1s_don't call assembler and linker (only with -a)
+**1s_don't call assembler and linker
 **2sh_Generate script to link on host
-**2sr_Skip register allocation phase (optimizations will be disabled)
 **2st_Generate script to link on target
+**2sr_Skip register allocation phase (optimizations will be disabled)
 **1u<x>_undefines the symbol <x>
 **1U_unit options:
 **2Un_don't check the unit name

+ 1 - 1
compiler/msgidx.inc

@@ -633,7 +633,7 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 36001;
+  MsgTxtSize = 35986;
 
   MsgIdxMax : array[1..20] of longint=(
     17,63,197,53,57,44,99,20,35,60,

+ 29 - 29
compiler/msgtxt.inc

@@ -1,7 +1,7 @@
 {$ifdef Delphi}
-const msgtxt : array[0..000150] of string[240]=(
+const msgtxt : array[0..000149] of string[240]=(
 {$else Delphi}
-const msgtxt : array[0..000150,1..240] of char=(
+const msgtxt : array[0..000149,1..240] of char=(
 {$endif Delphi}
   '01000_T_Compiler: $1'#000+
   '01001_D_Compiler OS: $1'#000+
@@ -773,100 +773,100 @@ const msgtxt : array[0..000150,1..240] of char=(
   '**','2Sp_same as -Mgpc'#010+
   '**2Ss_constructor name must be init (destructor must be done)'#010+
   '**2St_allow static keyword in objects'#010+
-  '**1s_don'#039't call assembler and linker (only with -a)'#010+
+  '**1s_don'#039't call assembler and linker'#010+
   '**2sh_Generate script to link on host'#010+
-  '**2sr_Skip register allocation p','hase (optimizations will be disabled'+
-  ')'#010+
   '**2st_Generate script to link on target'#010+
+  '**2sr_S','kip register allocation phase (optimizations will be disabled'+
+  ')'#010+
   '**1u<x>_undefines the symbol <x>'#010+
   '**1U_unit options:'#010+
   '**2Un_don'#039't check the unit name'#010+
   '**2Ur_generate release unit files'#010+
   '**2Us_compile a system unit'#010+
-  '**1v<x>_Be verbo','se. <x> is a combination of the following letters:'#010+
+  '**1v<x>_Be verbose. <x> is a co','mbination of the following letters:'#010+
   '**2*_e : Show errors (default)       d : Show debug info'#010+
   '**2*_w : Show warnings               u : Show unit info'#010+
   '**2*_n : Show notes                  t : Show tried/used files'#010+
-  '**2*_h : Show',' hints                  m : Show defined macros'#010+
+  '**2*_h : Show hints         ','         m : Show defined macros'#010+
   '**2*_i : Show general info           p : Show compiled procedures'#010+
   '**2*_l : Show linenumbers            c : Show conditionals'#010+
-  '**2*_a : Show everything             0 : Show nothing (except error','s'+
-  ')'#010+
-  '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#010+
+  '**2*_a : Show everything             0 : Show nothing (except errors)'#010+
+  '**2*_b : Sho','w all procedure          r : Rhide/GCC compatibility mod'+
+  'e'#010+
   '**2*_    declarations if an error    x : Executable info (Win32 only)'#010+
   '**2*_    occurs'#010+
   '**1V_write fpcdebug.txt file with lots of debugging info'#010+
-  '**1X_executable options:',#010+
-  '*L2Xc_link with the c library'#010+
+  '**1X_executable options:'#010+
+  '*L2Xc_link wit','h the c library'#010+
   '**2Xs_strip all symbols from executable'#010+
   '**2XD_try to link dynamic          (defines FPC_LINK_DYNAMIC)'#010+
   '**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#010+
-  '**2XX_try to link smart            (defines FP','C_LINK_SMART)'#010+
-  '**0*_Processor specific options:'#010+
+  '**2XX_try to link smart            (defines FPC_LINK_SMART)'#010+
+  '*','*0*_Processor specific options:'#010+
   '3*1A<x>_output format:'#010+
   '3*2Aas_assemble using GNU AS'#010+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
   '3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
   '3*2Awasm_obj file using Wasm (Watcom)'#010+
-  '3*2Anasmobj_obj fi','le using Nasm'#010+
-  '3*2Amasm_obj file using Masm (Microsoft)'#010+
+  '3*2Anasmobj_obj file using Nasm'#010+
+  '3','*2Amasm_obj file using Masm (Microsoft)'#010+
   '3*2Atasm_obj file using Tasm (Borland)'#010+
   '3*2Acoff_coff (Go32v2) using internal writer'#010+
   '3*2Apecoff_pecoff (Win32) using internal writer'#010+
   '3*1R<x>_assembler reading style:'#010+
-  '3*2Ratt_read AT&T st','yle assembler'#010+
-  '3*2Rintel_read Intel style assembler'#010+
+  '3*2Ratt_read AT&T style assembler'#010+
+  '3','*2Rintel_read Intel style assembler'#010+
   '3*2Rdirect_copy assembler text directly to assembler file'#010+
   '3*1O<x>_optimizations:'#010+
   '3*2Og_generate smaller code'#010+
   '3*2OG_generate faster code (default)'#010+
   '3*2Or_keep certain variables in registers'#010+
-  '3','*2Ou_enable uncertain optimizations (see docs)'#010+
+  '3*2Ou_enable unc','ertain optimizations (see docs)'#010+
   '3*2O1_level 1 optimizations (quick optimizations)'#010+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#010+
   '3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
   '3*2Op<x>_target processor:'#010+
-  '3','*3Op1_set target processor to 386/486'#010+
+  '3*3Op1_set targe','t processor to 386/486'#010+
   '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
   '3*1T<x>_Target operating system:'#010+
   '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
-  '3*2Tgo32v2','_Version 2 of DJ Delorie DOS extender'#010+
+  '3*2Tgo32v2_Version 2 of D','J Delorie DOS extender'#010+
   '3*2Tlinux_Linux'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
   '3*2Twdosx_WDOSX DOS extender'#010+
-  '3*2Twin32_Windows 32 Bi','t'#010+
-  '3*1W<x>_Win32-like target options'#010+
+  '3*2Twin32_Windows 32 Bit'#010+
+  '3*1W<x>_Win32','-like target options'#010+
   '3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
   '3*2WC_Specify console type application'#010+
   '3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
   '3*2WF_Specify full-screen type application (OS/2 only)'#010+
-  '3*2WG_Spe','cify graphic type application'#010+
+  '3*2WG_Specify graphic ty','pe application'#010+
   '3*2WN_Do not generate relocation code (necessary for debugging)'#010+
   '3*2WR_Generate relocation code'#010+
   '6*1A<x>_output format'#010+
   '6*2Aas_Unix o-file using GNU AS'#010+
   '6*2Agas_GNU Motorola assembler'#010+
   '6*2Amit_MIT Syntax (old GAS)'#010+
-  '6','*2Amot_Standard Motorola assembler'#010+
+  '6*2Amot_Standard',' Motorola assembler'#010+
   '6*1O_optimizations:'#010+
   '6*2Oa_turn on the optimizer'#010+
   '6*2Og_generate smaller code'#010+
   '6*2OG_generate faster code (default)'#010+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#010+
   '6*2O0_set target processor to a MC68000'#010+
-  '6*2O2_set ta','rget processor to a MC68020+ (default)'#010+
+  '6*2O2_set target processor ','to a MC68020+ (default)'#010+
   '6*1R<x>_assembler reading style:'#010+
   '6*2RMOT_read motorola style assembler'#010+
   '6*1T<x>_Target operating system:'#010+
   '6*2Tamiga_Commodore Amiga'#010+
   '6*2Tatari_Atari ST/STe/TT'#010+
   '6*2Tlinux_Linux-68k'#010+
-  '6*2Tmacos_Macintosh m68k'#010,
-  '6*2Tpalmos_PalmOS'#010+
+  '6*2Tmacos_Macintosh m68k'#010+
+  '6*2Tpalmos_Palm','OS'#010+
   'P*1T<x>_Target operating system:'#010+
   'P*2Tdarwin_Darwin and MacOS X on PowerPC'#010+
   'P*2Tlinux_Linux on PowerPC'#010+
@@ -874,5 +874,5 @@ const msgtxt : array[0..000150,1..240] of char=(
   'P*2Tmorphos_MorphOS '#010+
   '**1*_'#010+
   '**1?_shows this help'#010+
-  '**1h_shows this help without waiting',#000
+  '**1h_shows this help without waiting'#000
 );

+ 7 - 4
compiler/ncgcnv.pas

@@ -132,7 +132,7 @@ interface
                   (str_length(left)=0) then
                 begin
                   reference_reset(hr);
-                  hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
+                  hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
                   location.register:=cg.getaddressregister(exprasmlist);
                   cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
                 end
@@ -153,7 +153,7 @@ interface
                   (str_length(left)=0) then
                 begin
                   reference_reset(hr);
-                  hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
+                  hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
                   location.register:=cg.getaddressregister(exprasmlist);
                   cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
                 end
@@ -410,7 +410,7 @@ interface
          end;
          cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_NE,0,location.register,l1);
          reference_reset(hr);
-         hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
+         hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
          cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
          cg.a_label(exprasmlist,l1);
       end;
@@ -535,7 +535,10 @@ end.
 
 {
   $Log$
-  Revision 1.55  2004-02-27 10:21:05  florian
+  Revision 1.56  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.55  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/ncgflw.pas

@@ -1165,7 +1165,7 @@ implementation
          objectlibrary.getlabel(nextonlabel);
 
          { send the vmt parameter }
-         reference_reset_symbol(href2,objectlibrary.newasmsymboldata(excepttype.vmt_mangledname),0);
+         reference_reset_symbol(href2,objectlibrary.newasmsymbol(excepttype.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
          paraloc1:=paramanager.getintparaloc(pocall_default,1);
          paramanager.allocparaloc(exprasmlist,paraloc1);
          cg.a_paramaddr_ref(exprasmlist,href2,paraloc1);
@@ -1462,7 +1462,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.93  2004-02-27 10:21:05  florian
+  Revision 1.94  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.93  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/ncginl.pas

@@ -248,7 +248,7 @@ implementation
         if left.nodetype=typen then
           begin
             hregister:=cg.getaddressregister(exprasmlist);
-            reference_reset_symbol(href,objectlibrary.newasmsymboldata(tobjectdef(left.resulttype.def).vmt_mangledname),0);
+            reference_reset_symbol(href,objectlibrary.newasmsymbol(tobjectdef(left.resulttype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
             cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
           end
         else
@@ -678,7 +678,10 @@ end.
 
 {
   $Log$
-  Revision 1.55  2004-02-27 10:21:05  florian
+  Revision 1.56  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.55  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 17 - 14
compiler/ncgld.pas

@@ -91,7 +91,7 @@ implementation
                         location.reference.offset:=tabsolutesym(symtableentry).fieldoffset;
                       end;
                     toasm :
-                      location.reference.symbol:=objectlibrary.newasmsymboldata(tabsolutesym(symtableentry).mangledname);
+                      location.reference.symbol:=objectlibrary.newasmsymbol(tabsolutesym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
                     else
                       internalerror(200310283);
                   end;
@@ -101,7 +101,7 @@ implementation
                  if tconstsym(symtableentry).consttyp=constresourcestring then
                    begin
                       location_reset(location,LOC_CREFERENCE,OS_ADDR);
-                      location.reference.symbol:=objectlibrary.newasmsymboldata(make_mangledname('RESOURCESTRINGLIST',tconstsym(symtableentry).owner,''));
+                      location.reference.symbol:=objectlibrary.newasmsymbol(make_mangledname('RESOURCESTRINGLIST',tconstsym(symtableentry).owner,''),AB_EXTERNAL,AT_DATA);
                       location.reference.offset:=tconstsym(symtableentry).resstrindex*16+8;
                    end
                  else
@@ -116,20 +116,20 @@ implementation
                   { C variable }
                   if (vo_is_C_var in tvarsym(symtableentry).varoptions) then
                     begin
-                       location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
+                       location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
                     end
                   { DLL variable }
                   else if (vo_is_dll_var in tvarsym(symtableentry).varoptions) then
                     begin
                        hregister:=cg.getaddressregister(exprasmlist);
-                       location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
+                       location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
                        cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,location.reference,hregister);
                        reference_reset_base(location.reference,hregister,0);
                     end
                   { external variable }
                   else if (vo_is_external in tvarsym(symtableentry).varoptions) then
                     begin
-                       location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
+                       location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
                     end
                   { thread variable }
                   else if (vo_is_thread_var in tvarsym(symtableentry).varoptions) then
@@ -149,12 +149,12 @@ implementation
                        { make sure hregister can't allocate the register necessary for the parameter }
                        paraloc1:=paramanager.getintparaloc(pocall_default,1);
                        hregister:=cg.getaddressregister(exprasmlist);
-                       reference_reset_symbol(href,objectlibrary.newasmsymboldata('FPC_THREADVAR_RELOCATE'),0);
+                       reference_reset_symbol(href,objectlibrary.newasmsymbol('FPC_THREADVAR_RELOCATE',AB_EXTERNAL,AT_DATA),0);
                        cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,href,hregister);
                        cg.ungetregister(exprasmlist,hregister);
                        cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_EQ,0,hregister,norelocatelab);
                        { don't save the allocated register else the result will be destroyed later }
-                       reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname),0);
+                       reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),0);
                        paramanager.allocparaloc(exprasmlist,paraloc1);
                        cg.a_param_ref(exprasmlist,OS_ADDR,href,paraloc1);
                        paramanager.freeparaloc(exprasmlist,paraloc1);
@@ -171,7 +171,7 @@ implementation
                          layout of a threadvar is (4 bytes pointer):
                            0 - Threadvar index
                            4 - Threadvar value in single threading }
-                       reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname),POINTER_SIZE);
+                       reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),POINTER_SIZE);
                        cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
                        cg.a_label(exprasmlist,endrelocatelab);
                        location.reference.base:=hregister;
@@ -227,10 +227,10 @@ implementation
                                   if cs_create_pic in aktmoduleswitches then
                                     begin
                                       location.reference.base:=current_procinfo.got;
-                                      location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname+'@GOT');
+                                      location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname+'@GOT',AB_EXTERNAL,AT_DATA);
                                     end
                                   else
-                                    location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
+                                    location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
                                 end;
                               stt_exceptsymtable:
                                 begin
@@ -343,7 +343,7 @@ implementation
                           { we don't use the hregister }
                           cg.ungetregister(exprasmlist,hregister);
                           { load address of the function }
-                          reference_reset_symbol(href,objectlibrary.newasmsymbol(procdef.mangledname),0);
+                          reference_reset_symbol(href,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION),0);
                           hregister:=cg.getaddressregister(exprasmlist);
                           cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
                           cg.a_load_reg_ref(exprasmlist,OS_ADDR,OS_ADDR,hregister,location.reference);
@@ -353,12 +353,12 @@ implementation
                   else
                     begin
                        {!!!!! Be aware, work on virtual methods too }
-                       location.reference.symbol:=objectlibrary.newasmsymbol(procdef.mangledname);
+                       location.reference.symbol:=objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
                     end;
                end;
             typedconstsym :
                begin
-                  location.reference.symbol:=objectlibrary.newasmsymboldata(ttypedconstsym(symtableentry).mangledname);
+                  location.reference.symbol:=objectlibrary.newasmsymbol(ttypedconstsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
                end;
             else internalerror(4);
          end;
@@ -908,7 +908,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.112  2004-02-27 10:21:05  florian
+  Revision 1.113  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.112  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/ncgmem.pas

@@ -163,7 +163,7 @@ implementation
          else
           begin
             reference_reset_symbol(href,
-              objectlibrary.newasmsymboldata(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname),0);
+              objectlibrary.newasmsymbol(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
             location.register:=cg.getaddressregister(exprasmlist);
             cg.a_loadaddr_ref_reg(exprasmlist,href,location.register);
           end;
@@ -882,7 +882,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.88  2004-02-27 10:21:05  florian
+  Revision 1.89  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.88  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 13 - 10
compiler/ncgutil.pas

@@ -786,7 +786,7 @@ implementation
                end;
              end
            else
-             reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(p).mangledname),0);
+             reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
            cg.g_initialize(list,tvarsym(p).vartype.def,href,false);
          end;
       end;
@@ -818,7 +818,7 @@ implementation
                      end;
                    end
                  else
-                   reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(p).mangledname),0);
+                   reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
                  cg.g_finalize(list,tvarsym(p).vartype.def,href,false);
                end;
             end;
@@ -827,7 +827,7 @@ implementation
               if ttypedconstsym(p).is_writable and
                  ttypedconstsym(p).typedconsttype.def.needs_inittable then
                begin
-                 reference_reset_symbol(href,objectlibrary.newasmsymboldata(ttypedconstsym(p).mangledname),0);
+                 reference_reset_symbol(href,objectlibrary.newasmsymbol(ttypedconstsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
                  cg.g_finalize(list,ttypedconstsym(p).typedconsttype.def,href,false);
                end;
             end;
@@ -1280,12 +1280,12 @@ implementation
            if (target_info.system in [system_i386_win32,system_i386_wdosx]) and
               (cs_profile in aktmoduleswitches) then
             begin
-              reference_reset_symbol(href,objectlibrary.newasmsymboldata('etext'),0);
+              reference_reset_symbol(href,objectlibrary.newasmsymbol('etext',AB_EXTERNAL,AT_DATA),0);
               paraloc1:=paramanager.getintparaloc(pocall_default,1);
               paraloc2:=paramanager.getintparaloc(pocall_default,2);
               paramanager.allocparaloc(list,paraloc2);
               cg.a_paramaddr_ref(list,href,paraloc2);
-              reference_reset_symbol(href,objectlibrary.newasmsymboldata('__image_base__'),0);
+              reference_reset_symbol(href,objectlibrary.newasmsymbol('__image_base__',AB_EXTERNAL,AT_DATA),0);
               paramanager.allocparaloc(list,paraloc1);
               cg.a_paramaddr_ref(list,href,paraloc1);
               paramanager.freeparaloc(list,paraloc2);
@@ -1359,9 +1359,9 @@ implementation
 {$endif GDB}
           if (cs_profile in aktmoduleswitches) or
              (po_public in current_procinfo.procdef.procoptions) then
-            list.concat(Tai_symbol.createname_global(hs,0))
+            list.concat(Tai_symbol.createname_global(hs,AT_FUNCTION,0))
           else
-            list.concat(Tai_symbol.createname(hs,0));
+            list.concat(Tai_symbol.createname(hs,AT_FUNCTION,0));
         until false;
       end;
 
@@ -1797,9 +1797,9 @@ implementation
            (assigned(current_procinfo) and
             (current_procinfo.procdef.proccalloption=pocall_inline)) or
            DLLSource then
-          curconstSegment.concat(Tai_symbol.Createdataname_global(sym.mangledname,l))
+          curconstSegment.concat(Tai_symbol.Createname_global(sym.mangledname,AT_DATA,l))
         else
-          curconstSegment.concat(Tai_symbol.Createdataname(sym.mangledname,l));
+          curconstSegment.concat(Tai_symbol.Createname(sym.mangledname,AT_DATA,l));
         aktfilepos:=storefilepos;
       end;
 
@@ -2141,7 +2141,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.194  2004-02-27 10:21:05  florian
+  Revision 1.195  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.194  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 18 - 15
compiler/nobj.pas

@@ -304,7 +304,7 @@ implementation
 
          { write name label }
          dataSegment.concat(Tai_const_symbol.Create(p^.nl));
-         dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
+         dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
 
          if assigned(p^.r) then
            writestrentry(p^.r);
@@ -345,7 +345,7 @@ implementation
 
          { write name label }
          dataSegment.concat(Tai_const.Create_32bit(p^.data.messageinf.i));
-         dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
+         dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
 
          if assigned(p^.r) then
            writeintentry(p^.r);
@@ -420,7 +420,7 @@ implementation
       begin
          if assigned(p^.l) then
            writedmtaddressentry(p^.l);
-         dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
+         dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
          if assigned(p^.r) then
            writedmtaddressentry(p^.r);
       end;
@@ -490,7 +490,7 @@ implementation
               Consts.concat(Tai_string.Create(p.name));
 
               dataSegment.concat(Tai_const_symbol.Create(l));
-              dataSegment.concat(Tai_const_symbol.Createname(hp.mangledname));
+              dataSegment.concat(Tai_const_symbol.Createname(hp.mangledname,AT_FUNCTION,0));
            end;
       end;
 
@@ -854,9 +854,9 @@ implementation
         implintf:=_class.implementedinterfaces;
         curintf:=implintf.interfaces(intfindex);
         if (cs_create_smart in aktmoduleswitches) then
-         rawdata.concat(Tai_symbol.Createname_global(gintfgetvtbllabelname(intfindex),0))
+         rawdata.concat(Tai_symbol.Createname_global(gintfgetvtbllabelname(intfindex),AT_FUNCTION,0))
         else
-         rawdata.concat(Tai_symbol.Createname(gintfgetvtbllabelname(intfindex),0));
+         rawdata.concat(Tai_symbol.Createname(gintfgetvtbllabelname(intfindex),AT_FUNCTION,0));
         proccount:=implintf.implproccount(intfindex);
         for i:=1 to proccount do
           begin
@@ -866,7 +866,7 @@ implementation
             { create wrapper code }
             cgintfwrapper(rawcode,implintf.implprocs(intfindex,i),tmps,implintf.ioffsets(intfindex)^);
             { create reference }
-            rawdata.concat(Tai_const_symbol.Createname(tmps));
+            rawdata.concat(Tai_const_symbol.Createname(tmps,AT_FUNCTION,0));
           end;
       end;
 
@@ -900,7 +900,7 @@ implementation
             dataSegment.concat(Tai_const.Create_ptr(0)); { nil }
           end;
         { VTable }
-        dataSegment.concat(Tai_const_symbol.Createname(gintfgetvtbllabelname(contintfindex)));
+        dataSegment.concat(Tai_const_symbol.Createname(gintfgetvtbllabelname(contintfindex),AT_FUNCTION,0));
         { IOffset field }
         dataSegment.concat(Tai_const.Create_32bit(implintf.ioffsets(contintfindex)^));
         { IIDStr }
@@ -1155,7 +1155,7 @@ implementation
         begin
           if (cs_create_smart in aktmoduleswitches) then
             dataSegment.concat(Tai_cut.Create);
-          dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IID',_class.owner,_class.objname^),0));
+          dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IID',_class.owner,_class.objname^),AT_FUNCTION,0));
           dataSegment.concat(Tai_const.Create_32bit(_class.iidguid^.D1));
           dataSegment.concat(Tai_const.Create_16bit(_class.iidguid^.D2));
           dataSegment.concat(Tai_const.Create_16bit(_class.iidguid^.D3));
@@ -1164,7 +1164,7 @@ implementation
         end;
       if (cs_create_smart in aktmoduleswitches) then
         dataSegment.concat(Tai_cut.Create);
-      dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IIDSTR',_class.owner,_class.objname^),0));
+      dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IIDSTR',_class.owner,_class.objname^),AT_FUNCTION,0));
       dataSegment.concat(Tai_const.Create_8bit(length(_class.iidstr^)));
       dataSegment.concat(Tai_string.Create(_class.iidstr^));
     end;
@@ -1200,9 +1200,9 @@ implementation
                                   { class abstract and it's not allow to      }
                                   { generates an instance                     }
                                   if (po_abstractmethod in procdefcoll^.data.procoptions) then
-                                    List.concat(Tai_const_symbol.Createname('FPC_ABSTRACTERROR'))
+                                    List.concat(Tai_const_symbol.Createname('FPC_ABSTRACTERROR',AT_FUNCTION,0))
                                   else
-                                    List.concat(Tai_const_symbol.createname(procdefcoll^.data.mangledname));
+                                    List.concat(Tai_const_symbol.createname(procdefcoll^.data.mangledname,AT_FUNCTION,0));
                                end;
                           end;
                         procdefcoll:=procdefcoll^.next;
@@ -1269,7 +1269,7 @@ implementation
          end;
 {$endif GDB}
          dataSegment.concat(tai_align.create(const_align(POINTER_SIZE)));
-         dataSegment.concat(Tai_symbol.Createdataname_global(_class.vmt_mangledname,0));
+         dataSegment.concat(Tai_symbol.Createname_global(_class.vmt_mangledname,AT_DATA,0));
 
          { determine the size with symtable.datasize, because }
          { size gives back 4 for classes                    }
@@ -1290,7 +1290,7 @@ implementation
          { it is not written for parents that don't have any vmt !! }
          if assigned(_class.childof) and
             (oo_has_vmt in _class.childof.objectoptions) then
-           dataSegment.concat(Tai_const_symbol.Createname(_class.childof.vmt_mangledname))
+           dataSegment.concat(Tai_const_symbol.Createname(_class.childof.vmt_mangledname,AT_FUNCTION,0))
          else
            dataSegment.concat(Tai_const.Create_ptr(0));
 
@@ -1380,7 +1380,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.64  2004-02-27 10:21:05  florian
+  Revision 1.65  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.64  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 23 - 20
compiler/pmodules.pas

@@ -39,7 +39,7 @@ implementation
        cutils,cclasses,comphook,
        globals,verbose,fmodule,finput,fppu,
        symconst,symbase,symtype,symdef,symsym,symtable,
-       aasmtai,aasmcpu,
+       aasmtai,aasmcpu,aasmbase,
        cgbase,cpuinfo,cgobj,
        nbas,
        link,assemble,import,export,gendef,ppu,comprsrc,
@@ -167,8 +167,8 @@ implementation
 {$ifdef GDB}
         if assigned(debuglist) then
           begin
-            debugList.insert(Tai_symbol.Createname('gcc2_compiled',0));
-            debugList.insert(Tai_symbol.Createname('fpc_compiled',0));
+            debugList.insert(Tai_symbol.Createname('gcc2_compiled',AT_FUNCTION,0));
+            debugList.insert(Tai_symbol.Createname('fpc_compiled',AT_FUNCTION,0));
             fixseg(debuglist,sec_code);
           end;
 {$endif GDB}
@@ -188,7 +188,7 @@ implementation
          begin
            If (hp.u.flags and uf_threadvars)=uf_threadvars then
             begin
-              ltvTables.concat(Tai_const_symbol.Createdataname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,'')));
+              ltvTables.concat(Tai_const_symbol.Createname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,''),AT_DATA,0));
               inc(count);
             end;
            hp:=tused_unit(hp.next);
@@ -196,12 +196,12 @@ implementation
         { Add program threadvars, if any }
         If (current_module.flags and uf_threadvars)=uf_threadvars then
          begin
-           ltvTables.concat(Tai_const_symbol.Createdataname(make_mangledname('THREADVARLIST',current_module.localsymtable,'')));
+           ltvTables.concat(Tai_const_symbol.Createname(make_mangledname('THREADVARLIST',current_module.localsymtable,''),AT_DATA,0));
            inc(count);
          end;
         { TableCount }
         ltvTables.insert(Tai_const.Create_32bit(count));
-        ltvTables.insert(Tai_symbol.Createdataname_global('FPC_THREADVARTABLES',0));
+        ltvTables.insert(Tai_symbol.Createname_global('FPC_THREADVARTABLES',AT_DATA,0));
         ltvTables.insert(Tai_align.Create(const_align(pointer_size)));
         ltvTables.concat(Tai_symbol_end.Createname('FPC_THREADVARTABLES'));
         { insert in data segment }
@@ -221,7 +221,7 @@ implementation
            (vo_is_thread_var in tvarsym(p).varoptions) then
          begin
            { address of threadvar }
-           ltvTable.concat(tai_const_symbol.createdataname(tvarsym(p).mangledname));
+           ltvTable.concat(tai_const_symbol.Createname(tvarsym(p).mangledname,AT_DATA,0));
            { size of threadvar }
            ltvTable.concat(tai_const.create_32bit(tvarsym(p).getsize));
          end;
@@ -241,7 +241,7 @@ implementation
           begin
             s:=make_mangledname('THREADVARLIST',current_module.localsymtable,'');
             { add begin and end of the list }
-            ltvTable.insert(tai_symbol.createdataname_global(s,0));
+            ltvTable.insert(tai_symbol.Createname_global(s,AT_DATA,0));
             ltvTable.concat(tai_const.create_ptr(0));  { end of list marker }
             ltvTable.concat(tai_symbol_end.createname(s));
             if (cs_create_smart in aktmoduleswitches) then
@@ -266,7 +266,7 @@ implementation
          begin
            If (hp.u.flags and uf_has_resources)=uf_has_resources then
             begin
-              ResourceStringTables.concat(Tai_const_symbol.Createdataname(make_mangledname('RESOURCESTRINGLIST',hp.u.globalsymtable,'')));
+              ResourceStringTables.concat(Tai_const_symbol.Createname(make_mangledname('RESOURCESTRINGLIST',hp.u.globalsymtable,''),AT_DATA,0));
               inc(count);
             end;
            hp:=tused_unit(hp.next);
@@ -274,12 +274,12 @@ implementation
         { Add program resources, if any }
         If ResourceStringList<>Nil then
          begin
-           ResourceStringTables.concat(Tai_const_symbol.Createdataname(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,'')));
+           ResourceStringTables.concat(Tai_const_symbol.Createname(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),AT_DATA,0));
            Inc(Count);
          end;
         { TableCount }
         ResourceStringTables.insert(Tai_const.Create_32bit(count));
-        ResourceStringTables.insert(Tai_symbol.Createdataname_global('FPC_RESOURCESTRINGTABLES',0));
+        ResourceStringTables.insert(Tai_symbol.Createname_global('FPC_RESOURCESTRINGTABLES',AT_DATA,0));
         ResourceStringTables.insert(Tai_align.Create(const_align(4)));
         ResourceStringTables.concat(Tai_symbol_end.Createname('FPC_RESOURCESTRINGTABLES'));
         { insert in data segment }
@@ -305,11 +305,11 @@ implementation
            if (hp.u.flags and (uf_init or uf_finalize))<>0 then
             begin
               if (hp.u.flags and uf_init)<>0 then
-               unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',hp.u.globalsymtable,'')))
+               unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',hp.u.globalsymtable,''),AT_FUNCTION,0))
               else
                unitinits.concat(Tai_const.Create_ptr(0));
               if (hp.u.flags and uf_finalize)<>0 then
-               unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,'')))
+               unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,''),AT_FUNCTION,0))
               else
                unitinits.concat(Tai_const.Create_ptr(0));
               inc(count);
@@ -320,11 +320,11 @@ implementation
         if (current_module.flags and (uf_init or uf_finalize))<>0 then
          begin
            if (current_module.flags and uf_init)<>0 then
-            unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',current_module.localsymtable,'')))
+            unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',current_module.localsymtable,''),AT_FUNCTION,0))
            else
             unitinits.concat(Tai_const.Create_ptr(0));
            if (current_module.flags and uf_finalize)<>0 then
-            unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,'')))
+            unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,''),AT_FUNCTION,0))
            else
             unitinits.concat(Tai_const.Create_ptr(0));
            inc(count);
@@ -332,7 +332,7 @@ implementation
         { TableCount,InitCount }
         unitinits.insert(Tai_const.Create_32bit(0));
         unitinits.insert(Tai_const.Create_32bit(count));
-        unitinits.insert(Tai_symbol.Createdataname_global('INITFINAL',0));
+        unitinits.insert(Tai_symbol.Createname_global('INITFINAL',AT_DATA,0));
         unitinits.insert(Tai_align.Create(const_align(4)));
         unitinits.concat(Tai_symbol_end.Createname('INITFINAL'));
         { insert in data segment }
@@ -379,12 +379,12 @@ implementation
          if target_info.system<>system_m68k_PalmOS then
            begin
               dataSegment.concat(Tai_align.Create(const_align(4)));
-              dataSegment.concat(Tai_symbol.Createdataname_global('HEAPSIZE',4));
+              dataSegment.concat(Tai_symbol.Createname_global('HEAPSIZE',AT_DATA,4));
               dataSegment.concat(Tai_const.Create_32bit(heapsize));
            end;
 {$else m68k}
          dataSegment.concat(Tai_align.Create(const_align(4)));
-         dataSegment.concat(Tai_symbol.Createdataname_global('HEAPSIZE',4));
+         dataSegment.concat(Tai_symbol.Createname_global('HEAPSIZE',AT_DATA,4));
          dataSegment.concat(Tai_const.Create_32bit(heapsize));
 {$endif m68k}
       end;
@@ -394,7 +394,7 @@ implementation
       begin
         { stacksize can be specified and is now simulated }
         dataSegment.concat(Tai_align.Create(const_align(4)));
-        dataSegment.concat(Tai_symbol.Createdataname_global('__stklen',4));
+        dataSegment.concat(Tai_symbol.Createname_global('__stklen',AT_DATA,4));
         dataSegment.concat(Tai_const.Create_32bit(stacksize));
       end;
 
@@ -1438,7 +1438,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.140  2004-02-26 16:16:38  peter
+  Revision 1.141  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.140  2004/02/26 16:16:38  peter
     * tai_const.create_ptr added
 
   Revision 1.139  2004/02/06 22:37:00  daniel

+ 20 - 44
compiler/powerpc/agppcmpw.pas

@@ -45,8 +45,9 @@ interface
         procedure WriteFileEndInfo;
 {$endif}
         procedure WriteAsmFileHeader;
-        private
-        procedure GenProcedureHeader(var hp:tai);
+      private
+        procedure WriteInstruction(hp : tai);
+        procedure WriteProcedureHeader(var hp:tai);
         procedure WriteDataExportHeader(var s:string; isGlobal, isConst:boolean);
       end;
 
@@ -108,7 +109,6 @@ var
 
 
     function getreferencestring(var ref : treference) : string;
-
     var
       s : string;
     begin
@@ -156,7 +156,7 @@ var
               if (offset=0) then
                 s:=s+gas_regname(base)+','+gas_regname(index)
               else
-                internalerror(19992); //  *** ???
+                internalerror(19992);
             end
           else if (base=NR_NO) and (offset=0) then
             begin
@@ -321,7 +321,7 @@ var
       end;
     end;
 
-    Function GetInstruction(hp : tai):string; {CHANGED from method to proc}
+    procedure TPPCMPWAssembler.WriteInstruction(hp : tai);
     var op: TAsmOp;
         s: string;
         i: byte;
@@ -346,44 +346,17 @@ var
                    s := s + ',';
                end;
           end;
-          if (taicpu(hp).oper[0]^.typ <> top_none) then
-            s:=s+getopstr_jmp(taicpu(hp).oper[0]^);
+          if (taicpu(hp).ops>0) and (taicpu(hp).oper[0]^.typ<>top_none) then
+            begin
+              { first write the current contents of s, because the symbol }
+              { may be 255 characters                                     }
+              asmwrite(s);
+              s:=getopstr_jmp(taicpu(hp).oper[0]^);
+            end;
         end
       else
         { process operands }
         begin
-          case op of
-             A_MFSPR:
-               case taicpu(hp).oper[1]^.reg of
-                  NR_CR:
-                    begin
-                       op:=A_MFCR;
-                       taicpu(hp).ops:=1;
-                    end;
-                  NR_LR:
-                    begin
-                       op:=A_MFLR;
-                       taicpu(hp).ops:=1;
-                    end;
-                  else
-                    internalerror(2002100701);
-               end;
-             A_MTSPR:
-               case taicpu(hp).oper[1]^.reg of
-                  NR_CR:
-                    begin
-                       op:=A_MTCR;
-                       taicpu(hp).ops:=1;
-                    end;
-                  NR_LR:
-                    begin
-                       op:=A_MTLR;
-                       taicpu(hp).ops:=1;
-                    end;
-                  else
-                    internalerror(2002100701);
-               end;
-          end;
           s:=#9+gas_op2str[op];
           if taicpu(hp).ops<>0 then
             begin
@@ -395,7 +368,7 @@ var
                  end;
             end;
         end;
-      GetInstruction:=s;
+      AsmWriteLn(s);
     end;
 
     {*** Until here is copyed from agppcgas.pp. ***}
@@ -456,7 +429,7 @@ var
 {****************************************************************************
                                PowerPC MPW Assembler
  ****************************************************************************}
-    procedure TPPCMPWAssembler.GenProcedureHeader(var hp:tai);
+    procedure TPPCMPWAssembler.WriteProcedureHeader(var hp:tai);
       {Returns the current hp where the caller should continue from}
       {For multiple entry procedures, only the last is exported as xxx[PR]
        (if use_PR is set) }
@@ -1079,7 +1052,7 @@ var
              ait_symbol:
                begin
                   if tai_symbol(hp).sym.typ=AT_FUNCTION then
-                    GenProcedureHeader(hp)
+                    WriteProcedureHeader(hp)
                   else if tai_symbol(hp).sym.typ=AT_DATA then
                     begin
                        s:= tai_symbol(hp).sym.name;
@@ -1108,7 +1081,7 @@ var
 {$endif GDB}
                 ;
               ait_instruction:
-                AsmWriteLn(GetInstruction(hp));
+                WriteInstruction(hp);
 {$ifdef GDB}
               ait_stabn: ;
               ait_stabs: ;
@@ -1386,7 +1359,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.31  2004-02-27 10:21:05  florian
+  Revision 1.32  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.31  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 11 - 8
compiler/powerpc/cgcpu.pas

@@ -305,7 +305,7 @@ const
          { MacOS: The linker on MacOS (PPCLink) inserts a call to glue code,
            if it is a cross-TOC call. If so, it also replaces the NOP
            with some restore code.}
-         list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s)));
+         list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
          if target_info.system=system_powerpc_macos then
            list.concat(taicpu.op_none(A_NOP));
          if not(pi_do_call in current_procinfo.flags) then
@@ -1074,11 +1074,11 @@ const
              { save floating-point registers
              if (cs_create_pic in aktmoduleswitches) and not(usesgpr) then
                begin
-                  a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g');
+                  a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
                   gotgot:=true;
                end
              else
-               a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14));
+               a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14),AB_EXTERNAL,AT_FUNCTION));
              }
              reference_reset_base(href,NR_R12,-8);
              for regcounter:=firstregfpu to RS_F31 do
@@ -1100,11 +1100,11 @@ const
              {
              if cs_create_pic in aktmoduleswitches then
                begin
-                  a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g');
+                  a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
                   gotgot:=true;
                end
              else
-               a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14))
+               a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14),AB_EXTERNAL,AT_FUNCTION))
              }
             reference_reset_base(href,NR_R12,-4);
             for regcounter2:=RS_R13 to RS_R31 do
@@ -1299,7 +1299,7 @@ const
              {
              if (pi_do_call in current_procinfo.flags) then
                a_call_name(objectlibrary.newasmsymbol('_restfpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+
-                 '_x')
+                 '_x',AB_EXTERNAL,AT_FUNCTION))
              else
                { leaf node => lr haven't to be restored }
                a_call_name('_restfpr_'+tostr(ord(firstregfpu.enum)-ord(R_F14)+14)+
@@ -2200,7 +2200,7 @@ const
         p: taicpu;
 
       begin
-        p := taicpu.op_sym(op,objectlibrary.newasmsymbol(l.name));
+        p := taicpu.op_sym(op,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION));
         if op <> A_B then
           create_cond_norm(c,crval,p.condition);
         p.is_jmp := true;
@@ -2321,7 +2321,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.164  2004-02-27 10:21:05  florian
+  Revision 1.165  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.164  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 7 - 4
compiler/powerpc/nppcobj.pas

@@ -142,9 +142,9 @@ begin
     make_global:=true;
 
   if make_global then
-   exprasmList.concat(Tai_symbol.Createname_global(labelname,0))
+   exprasmList.concat(Tai_symbol.Createname_global(labelname,AT_FUNCTION,0))
   else
-   exprasmList.concat(Tai_symbol.Createname(labelname,0));
+   exprasmList.concat(Tai_symbol.Createname(labelname,AT_FUNCTION,0));
 
   { set param1 interface to self  }
   adjustselfvalue(procdef,ioffset);
@@ -157,7 +157,7 @@ begin
     end
   { case 0 }
   else
-    asmlist.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(procdef.mangledname)));
+    asmlist.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
 
   exprasmList.concat(Tai_symbol_end.Createname(labelname));
 
@@ -170,7 +170,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.5  2004-02-27 13:42:56  olle
+  Revision 1.6  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.5  2004/02/27 13:42:56  olle
     + added Tai_symbol_end
 
   Revision 1.4  2004/02/27 10:21:05  florian

+ 5 - 2
compiler/powerpc/rappcgas.pas

@@ -452,7 +452,7 @@ Unit rappcgas;
                                   { not found, finally ... add it anyways ... }
                                   Message1(asmr_w_id_supposed_external,expr);
                                   oper.InitRef;
-                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
+                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
                                 end;
                              end
                           else
@@ -753,7 +753,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.13  2004-02-28 16:00:45  florian
+  Revision 1.14  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.13  2004/02/28 16:00:45  florian
     * fixed make cycle
 
   Revision 1.12  2004/02/28 14:14:44  florian

+ 10 - 2
compiler/psystem.pas

@@ -53,6 +53,7 @@ implementation
       ,dmisc
       ,sysutils
 {$endif}
+	  ,verbose
       ;
 
 
@@ -80,7 +81,11 @@ implementation
         p.insert(tsyssym.create('Include',in_include_x_y));
         p.insert(tsyssym.create('Break',in_break));
         p.insert(tsyssym.create('Exit',in_exit));
-        p.insert(tsyssym.create('Continue',in_continue));
+        //if not (m_mac in aktmodeswitches) then
+          p.insert(tsyssym.create('Continue',in_continue));
+        //else
+          p.insert(tsyssym.create('Cycle',in_continue));
+        //comment(v_info,'Hubba Bubba');
         p.insert(tsyssym.create('Dec',in_dec_x));
         p.insert(tsyssym.create('Inc',in_inc_x));
         p.insert(tsyssym.create('Str',in_str_x_string));
@@ -489,7 +494,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.63  2004-02-26 16:16:38  peter
+  Revision 1.64  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.63  2004/02/26 16:16:38  peter
     * tai_const.create_ptr added
 
   Revision 1.62  2004/02/04 22:15:15  daniel

+ 13 - 10
compiler/ptconst.pas

@@ -262,8 +262,8 @@ implementation
                      begin
                         if not Tobjectdef(pointertype.def).is_related(Tobjectdef(pointertype.def)) then
                           message(cg_e_illegal_expression);
-                        curconstSegment.concat(Tai_const_symbol.Create(objectlibrary.newasmsymboldata(
-                          Tobjectdef(pointertype.def).vmt_mangledname)));
+                        curconstSegment.concat(Tai_const_symbol.Create(objectlibrary.newasmsymbol(
+                          Tobjectdef(pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA)));
                      end;
                  niln:
                    curconstSegment.concat(Tai_const.Create_ptr(0));
@@ -426,12 +426,12 @@ implementation
                               if po_abstractmethod in tprocsym(srsym).first_procdef.procoptions then
                                 Message(type_e_cant_take_address_of_abstract_method)
                               else
-                                curconstSegment.concat(Tai_const_symbol.Createname_offset(tprocsym(srsym).first_procdef.mangledname,offset));
+                                curconstSegment.concat(Tai_const_symbol.Createname(tprocsym(srsym).first_procdef.mangledname,AT_FUNCTION,offset));
                             end;
                           varsym :
-                            curconstSegment.concat(Tai_const_symbol.Createname_offset(tvarsym(srsym).mangledname,offset));
+                            curconstSegment.concat(Tai_const_symbol.Createname(tvarsym(srsym).mangledname,AT_FUNCTION,offset));
                           typedconstsym :
-                            curconstSegment.concat(Tai_const_symbol.Createname_offset(ttypedconstsym(srsym).mangledname,offset));
+                            curconstSegment.concat(Tai_const_symbol.Createname(ttypedconstsym(srsym).mangledname,AT_FUNCTION,offset));
                           else
                             Message(type_e_variable_id_expected);
                         end;
@@ -447,7 +447,7 @@ implementation
                     if (tinlinenode(p).left.nodetype=typen) then
                       begin
                         curconstSegment.concat(Tai_const_symbol.createname(
-                          tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname));
+                          tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname,AT_FUNCTION,0));
                       end
                     else
                       Message(cg_e_illegal_expression);
@@ -764,7 +764,7 @@ implementation
                  (tloadnode(p).symtableentry.typ=procsym) then
                begin
                  curconstSegment.concat(Tai_const_symbol.createname(
-                   tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname));
+                   tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname,AT_FUNCTION,0));
                end
               else
                Message(cg_e_illegal_expression);
@@ -966,7 +966,7 @@ implementation
                                    begin
                                      for i:=1 to vmt_offset-aktpos do
                                        curconstsegment.concat(tai_const.create_8bit(0));
-                                     curconstsegment.concat(tai_const_symbol.createname(vmt_mangledname));
+                                     curconstsegment.concat(tai_const_symbol.createname(vmt_mangledname,AT_FUNCTION,0));
                                      { this is more general }
                                      aktpos:=vmt_offset + pointer_size;
                                    end;
@@ -993,7 +993,7 @@ implementation
                      begin
                        for i:=1 to tobjectdef(t.def).vmt_offset-aktpos do
                          curconstsegment.concat(tai_const.create_8bit(0));
-                       curconstsegment.concat(tai_const_symbol.createname(tobjectdef(t.def).vmt_mangledname));
+                       curconstsegment.concat(tai_const_symbol.createname(tobjectdef(t.def).vmt_mangledname,AT_FUNCTION,0));
                        { this is more general }
                        aktpos:=tobjectdef(t.def).vmt_offset + pointer_size;
                      end;
@@ -1020,7 +1020,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.79  2004-02-26 16:15:23  peter
+  Revision 1.80  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.79  2004/02/26 16:15:23  peter
     * support @@procvar in typed consts
 
   Revision 1.78  2004/02/07 23:28:34  daniel

+ 5 - 2
compiler/raatt.pas

@@ -1481,7 +1481,7 @@ unit raatt;
          begin
            oper.opr.typ:=OPR_SYMBOL;
            oper.opr.symofs:=l;
-           oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr);
+           oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
          end
         else
          begin
@@ -1494,7 +1494,10 @@ end.
 
 {
   $Log$
-  Revision 1.9  2004-02-07 23:28:34  daniel
+  Revision 1.10  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.9  2004/02/07 23:28:34  daniel
     * Take advantage of our new with statement optimization
 
   Revision 1.8  2003/12/25 01:25:43  peter

+ 11 - 8
compiler/rautils.pas

@@ -871,7 +871,7 @@ Begin
           staticsymtable :
             begin
               initref;
-              opr.ref.symbol:=objectlibrary.newasmsymboldata(tvarsym(sym).mangledname);
+              opr.ref.symbol:=objectlibrary.newasmsymbol(tvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
             end;
           parasymtable,
           localsymtable :
@@ -879,7 +879,7 @@ Begin
               if (vo_is_external in tvarsym(sym).varoptions) then
                 begin
                   initref;
-                  opr.ref.symbol:=objectlibrary.newasmsymboldata(tvarsym(sym).mangledname)
+                  opr.ref.symbol:=objectlibrary.newasmsymbol(tvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA)
                 end
               else
                 begin
@@ -938,7 +938,7 @@ Begin
     typedconstsym :
       begin
         initref;
-        opr.ref.symbol:=objectlibrary.newasmsymboldata(ttypedconstsym(sym).mangledname);
+        opr.ref.symbol:=objectlibrary.newasmsymbol(ttypedconstsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
         case ttypedconstsym(sym).typedconsttype.def.deftype of
           orddef,
           enumdef,
@@ -986,7 +986,7 @@ Begin
           Message(asmr_w_calling_overload_func);
         l:=opr.ref.offset;
         opr.typ:=OPR_SYMBOL;
-        opr.symbol:=objectlibrary.newasmsymbol(tprocsym(sym).first_procdef.mangledname);
+        opr.symbol:=objectlibrary.newasmsymbol(tprocsym(sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
         opr.symofs:=l;
         hasvar:=true;
         SetupVar:=TRUE;
@@ -1538,7 +1538,7 @@ end;
 
   Procedure ConcatConstSymbol(p : TAAsmoutput;const sym:string;l:longint);
   begin
-    p.concat(Tai_const_symbol.Createname_offset(sym,l));
+    p.concat(Tai_const_symbol.Createname(sym,AT_FUNCTION,l));
   end;
 
 
@@ -1590,7 +1590,7 @@ end;
   {  linked list of instructions.(used by AT&T styled asm)              }
   {*********************************************************************}
    begin
-       p.concat(Tai_symbol.Createname_global(s,0));
+       p.concat(Tai_symbol.Createname_global(s,AT_FUNCTION,0));
    end;
 
    procedure ConcatLocal(p:TAAsmoutput;const s : string);
@@ -1600,7 +1600,7 @@ end;
   {  linked list of instructions.                                       }
   {*********************************************************************}
    begin
-       p.concat(Tai_symbol.Createname(s,0));
+       p.concat(Tai_symbol.Createname(s,AT_FUNCTION,0));
    end;
 
   Procedure ConcatGlobalBss(const s : string;size : longint);
@@ -1626,7 +1626,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.81  2004-02-21 21:04:09  daniel
+  Revision 1.82  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.81  2004/02/21 21:04:09  daniel
     * Micro-optimizations
 
   Revision 1.80  2003/11/30 10:15:42  jonas

+ 6 - 3
compiler/sparc/cgcpu.pas

@@ -407,7 +407,7 @@ implementation
 
     procedure TCgSparc.a_call_name(list:TAasmOutput;const s:string);
       begin
-        list.concat(taicpu.op_sym(A_CALL,objectlibrary.newasmsymbol(s)));
+        list.concat(taicpu.op_sym(A_CALL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
         { Delay slot }
         list.concat(taicpu.op_none(A_NOP));
       end;
@@ -728,7 +728,7 @@ implementation
 
     procedure TCgSparc.a_jmp_always(List:TAasmOutput;l:TAsmLabel);
       begin
-        List.Concat(TAiCpu.op_sym(A_BA,objectlibrary.newasmsymbol(l.name)));
+        List.Concat(TAiCpu.op_sym(A_BA,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
         { Delay slot }
         list.Concat(TAiCpu.Op_none(A_NOP));
       end;
@@ -1107,7 +1107,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.79  2004-02-27 13:28:28  mazen
+  Revision 1.80  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.79  2004/02/27 13:28:28  mazen
   * symaddr ==> refaddr to follow the rest of compiler changes
 
   Revision 1.78  2004/02/04 22:01:13  peter

+ 6 - 3
compiler/sparc/racpugas.pas

@@ -317,7 +317,7 @@ Interface
               Consume(AS_LPAREN);
               BuildConstSymbolExpression(false, true,false,l,tempstr);
               if not assigned(oper.opr.ref.symbol) then
-                oper.opr.ref.symbol:=objectlibrary.newasmsymbol(tempstr)
+                oper.opr.ref.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION)
               else
                 Message(asmr_e_cant_have_multiple_relocatable_symbols);
               case oper.opr.typ of
@@ -409,7 +409,7 @@ Interface
                                   { not found, finally ... add it anyways ... }
                                   Message1(asmr_w_id_supposed_external,expr);
                                   oper.InitRef;
-                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
+                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
                                 end;
                              end
                           else
@@ -626,7 +626,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.7  2004-02-27 13:27:28  mazen
+  Revision 1.8  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.7  2004/02/27 13:27:28  mazen
   * symaddr ==> refaddr to follow the rest of compiler changes
 
   Revision 1.6  2004/01/12 22:11:39  peter

+ 8 - 5
compiler/symdef.pas

@@ -5348,7 +5348,7 @@ implementation
                   exit;
                 if not(po_virtualmethod in tprocdef(proc.procdef).procoptions) then
                   begin
-                     rttiList.concat(Tai_const_symbol.Createname(tprocdef(proc.procdef).mangledname));
+                     rttiList.concat(Tai_const_symbol.Createname(tprocdef(proc.procdef).mangledname,AT_FUNCTION,0));
                      typvalue:=1;
                   end
                 else
@@ -5373,7 +5373,7 @@ implementation
                      internalerror(1509992);
                    { access to implicit class property as field }
                    proctypesinfo:=(0 shl 0) or (0 shl 2) or (0 shl 4);
-                   rttiList.concat(Tai_const_symbol.Createname(tvarsym(sym.vartype.def.get_rtti_label)));
+                   rttiList.concat(Tai_const_symbol.Createname(tvarsym(sym.vartype.def.get_rtti_label),AT_FUNCTION,0));
                    rttiList.concat(Tai_const.Create_32bit(tvarsym(sym.address)));
                    rttiList.concat(Tai_const.Create_32bit(tvarsym(sym.address)));
                    { per default stored }
@@ -5547,7 +5547,7 @@ implementation
          hp:=tclasslistitem(classtablelist.first);
          while assigned(hp) do
            begin
-              rttiList.concat(Tai_const_symbol.Createname(tobjectdef(hp.p).vmt_mangledname));
+              rttiList.concat(Tai_const_symbol.Createname(tobjectdef(hp.p).vmt_mangledname,AT_FUNCTION,0));
               hp:=tclasslistitem(hp.next);
            end;
 
@@ -5606,7 +5606,7 @@ implementation
              begin
                if (oo_has_vmt in objectoptions) and
                   not(objecttype in [odt_interfacecom,odt_interfacecorba]) then
-                 rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname))
+                 rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname,AT_FUNCTION,0))
                else
                  rttiList.concat(Tai_const.Create_ptr(0));
 
@@ -6119,7 +6119,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.223  2004-02-26 16:16:38  peter
+  Revision 1.224  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.223  2004/02/26 16:16:38  peter
     * tai_const.create_ptr added
 
   Revision 1.222  2004/02/22 19:55:25  daniel

+ 5 - 2
compiler/symsym.pas

@@ -2246,7 +2246,7 @@ implementation
       begin
         { the label is always a global label }
         if not assigned(lab) then
-         lab:=objectlibrary.newasmsymboldata(mangledname);
+         lab:=objectlibrary.newasmsymbol(mangledname,AB_EXTERNAL,AT_DATA);
         get_label:=lab;
       end;
 
@@ -2254,7 +2254,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.161  2004-02-24 16:12:39  peter
+  Revision 1.162  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.161  2004/02/24 16:12:39  peter
     * operator overload chooses rewrite
     * overload choosing is now generic and moved to htypechk
 

+ 6 - 3
compiler/systems/t_beos.pas

@@ -176,8 +176,8 @@ begin
 {$ifdef i386}
            { place jump in codesegment }
            codesegment.concat(Tai_align.Create_op(4,$90));
-           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
-           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
+           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
 {$endif i386}
          end;
@@ -505,7 +505,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.8  2004-01-29 23:57:15  florian
+  Revision 1.9  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.8  2004/01/29 23:57:15  florian
     * fixed linker response file handling
 
   Revision 1.7  2004/01/29 22:50:53  florian

+ 12 - 9
compiler/systems/t_bsd.pas

@@ -216,9 +216,9 @@ implementation
                       if (po_public in hp2.procdef.procoptions) then
                         begin
                           importsSection.concat(Tai_section.Create(sec_code));
-                          importsSection.concat(Tai_symbol.createname_global(mangledstring,0));
+                          importsSection.concat(Tai_symbol.createname_global(mangledstring,AT_FUNCTION,0));
                           mangledstring := '_$'+mangledstring;
-                          importsSection.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(mangledstring)));
+                          importsSection.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(mangledstring,AB_EXTERNAL,AT_FUNCTION)));
                         end;
 {$else powerpc}
                       internalerror(2004010501);
@@ -227,9 +227,9 @@ implementation
                       importsSection.concat(Tai_section.Create(sec_data));
                       importsSection.concat(Tai_direct.create(strpnew('.section __TEXT,__symbol_stub1,symbol_stubs,pure_instructions,16')));
                       importsSection.concat(Tai_align.Create(4));
-                      importsSection.concat(Tai_symbol.Createname(mangledstring,0));
+                      importsSection.concat(Tai_symbol.Createname(mangledstring,AT_FUNCTION,0));
                       importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+symname)));
-                      l1 := objectlibrary.newasmsymbol(mangledstring+'$lazy_ptr');
+                      l1 := objectlibrary.newasmsymbol(mangledstring+'$lazy_ptr',AB_EXTERNAL,AT_FUNCTION);
                       reference_reset_symbol(href,l1,0);
 {$IfDef GDB}
                       if (cs_debuginfo in aktmoduleswitches) and assigned(hp2.procdef) then
@@ -255,14 +255,14 @@ implementation
                       importsSection.concat(Tai_direct.create(strpnew('.lazy_symbol_pointer')));
                       importsSection.concat(Tai_symbol.Create(l1,0));
                       importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+symname)));
-                      importsSection.concat(tai_const_symbol.createname(strpnew('dyld_stub_binding_helper')));
+                      importsSection.concat(tai_const_symbol.createname(strpnew('dyld_stub_binding_helper'),AT_FUNCTION,0));
 
                     end
                    else
                     begin
                       importsSection.concat(Tai_section.Create(sec_data));
                       importsSection.concat(Tai_direct.create(strpnew('.non_lazy_symbol_pointer')));
-                      importsSection.concat(Tai_symbol.Createname(hp2.func^,0));
+                      importsSection.concat(Tai_symbol.Createname(hp2.func^,AT_FUNCTION,0));
                       importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+hp2.name^)));
                       importsSection.concat(Tai_const.create_32bit(0));
                     end;
@@ -381,8 +381,8 @@ begin
 {$ifdef i386}
            { place jump in codesegment }
            codesegment.concat(Tai_align.Create_op(4,$90));
-           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
-           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
+           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
 {$endif i386}
          end;
@@ -760,7 +760,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.10  2004-02-27 10:21:05  florian
+  Revision 1.11  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.10  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 10 - 7
compiler/systems/t_linux.pas

@@ -178,22 +178,22 @@ begin
 {$ifdef i386}
            { place jump in codesegment }
            codesegment.concat(Tai_align.Create_op(4,$90));
-           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
-           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
+           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
 {$else i386}
 {$ifdef m68k}
            { place jump in codesegment }
            codesegment.concat(tai_align.create(4));
-           codesegment.concat(tai_symbol.createname_global(hp2.name^,0));
-           codesegment.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codesegment.concat(tai_symbol.createname_global(hp2.name^,AT_FUNCTION,0));
+           codesegment.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codesegment.concat(tai_symbol_end.createname(hp2.name^));
 {$else m68k}
 {$ifdef powerpc}
            { place jump in codesegment }
            codesegment.concat(tai_align.create(4));
-           codesegment.concat(tai_symbol.createname_global(hp2.name^,0));
-           codesegment.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codesegment.concat(tai_symbol.createname_global(hp2.name^,AT_FUNCTION,0));
+           codesegment.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codesegment.concat(tai_symbol_end.createname(hp2.name^));
 {$endif powerpc}
 {$else powerpc}
@@ -578,7 +578,10 @@ end.
 
 {
   $Log$
-  Revision 1.14  2004-01-03 13:51:05  jonas
+  Revision 1.15  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.14  2004/01/03 13:51:05  jonas
     + support exported procedures for linuxppc
     * refuse to compile systems/t_linux.pas if processor-specific  support
       for exported procedures is absent

+ 6 - 3
compiler/systems/t_nwm.pas

@@ -241,8 +241,8 @@ begin
 {$ifdef i386}
            { place jump in codesegment }
            codesegment.concat(Tai_align.Create_op(4,$90));
-           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
-           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
+           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
 {$endif i386}
          end;
@@ -547,7 +547,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.9  2003-11-11 16:46:40  marco
+  Revision 1.10  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.9  2003/11/11 16:46:40  marco
    * minor fix
 
   Revision 1.8  2003/04/27 07:29:52  peter

+ 6 - 3
compiler/systems/t_sunos.pas

@@ -189,8 +189,8 @@ begin
 {$ifdef i386}
            { place jump in codesegment }
            codesegment.concat(Tai_align.Create_op(4,$90));
-           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
-           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
+           codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
+           codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
            codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
 {$endif i386}
          end;
@@ -489,7 +489,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.6  2003-10-11 19:32:04  marco
+  Revision 1.7  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.6  2003/10/11 19:32:04  marco
    * -Xd
 
   Revision 1.5  2003/10/03 14:16:48  marco

+ 12 - 9
compiler/systems/t_win32.pas

@@ -328,7 +328,7 @@ const
                     if (cs_debuginfo in aktmoduleswitches) then
                      importsSection.concat(Tai_stab_function_name.Create(nil));
 {$EndIf GDB}
-                    importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
+                    importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
                     importsSection.concat(Taicpu.Op_ref(A_JMP,S_NO,href));
                     importsSection.concat(Tai_align.Create_op(4,$90));
 {$IfDef GDB}
@@ -351,7 +351,7 @@ const
                  { add jump field to imporTSection }
                  importsSection.concat(Tai_section.Create(sec_idata5));
                  if hp2.is_var then
-                  importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0))
+                  importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0))
                  else
                   importsSection.concat(Tai_label.Create(lcode));
 {$ifdef GDB}
@@ -366,7 +366,7 @@ const
                            inc(suffix);
                            importname:='__imp_'+hp2.name^+'_'+tostr(suffix);
                          end;
-                        importssection.concat(tai_symbol.createname(importname,4));
+                        importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
                       end
                     else
                       begin
@@ -377,7 +377,7 @@ const
                            inc(suffix);
                            importname:='__imp_by_ordinal'+tostr(hp2.ordnr)+'_'+tostr(suffix);
                          end;
-                        importssection.concat(tai_symbol.createname(importname,4));
+                        importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
                       end;
                   end;
 {$endif GDB}
@@ -487,7 +487,7 @@ const
                       if (cs_debuginfo in aktmoduleswitches) then
                         importssection.concat(tai_stab_function_name.create(nil));
 {$EndIf GDB}
-                      importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
+                      importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
                       importsSection.concat(Taicpu.Op_ref(A_JMP,S_NO,href));
                       importsSection.concat(Tai_align.Create_op(4,$90));
 {$IfDef GDB}
@@ -513,7 +513,7 @@ const
                                inc(suffix);
                                importname:='__imp_'+hp2.name^+'_'+tostr(suffix);
                              end;
-                            importssection.concat(tai_symbol.createname(importname,4));
+                            importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
                           end
                          else
                           begin
@@ -524,7 +524,7 @@ const
                                inc(suffix);
                                importname:='__imp_by_ordinal'+tostr(hp2.ordnr)+'_'+tostr(suffix);
                              end;
-                            importssection.concat(tai_symbol.createname(importname,4));
+                            importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
                           end;
                        end;
 {$endif GDB}
@@ -532,7 +532,7 @@ const
                     end
                    else
                     begin
-                      importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
+                      importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
                     end;
                    importsSection.concat(Tai_const_symbol.Create_rva(hp2.lab));
                    hp2:=twin32imported_item(hp2.next);
@@ -1606,7 +1606,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.28  2004-02-27 10:21:05  florian
+  Revision 1.29  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.28  2004/02/27 10:21:05  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 6 - 3
compiler/x86/cgx86.pas

@@ -536,7 +536,7 @@ unit cgx86;
 
     procedure tcgx86.a_call_name(list : taasmoutput;const s : string);
       begin
-        list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s)));
+        list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
       end;
 
 
@@ -1659,7 +1659,7 @@ unit cgx86;
       if cs_create_pic in aktmoduleswitches then
         begin
           a_call_name(list,'FPC_GETEIPINEBX');
-          list.concat(taicpu.op_sym_ofs_reg(A_ADD,tcgsize2opsize[OS_ADDR],objectlibrary.newasmsymboldata('_GLOBAL_OFFSET_TABLE_'),0,NR_PIC_OFFSET_REG));
+          list.concat(taicpu.op_sym_ofs_reg(A_ADD,tcgsize2opsize[OS_ADDR],objectlibrary.newasmsymbol('_GLOBAL_OFFSET_TABLE_',AB_EXTERNAL,AT_DATA),0,NR_PIC_OFFSET_REG));
           list.concat(tai_regalloc.alloc(NR_PIC_OFFSET_REG));
         end;
     end;
@@ -1781,7 +1781,10 @@ unit cgx86;
 end.
 {
   $Log$
-  Revision 1.115  2004-02-27 10:21:06  florian
+  Revision 1.116  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.115  2004/02/27 10:21:06  florian
     * top_symbol killed
     + refaddr to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/x86/rax86att.pas

@@ -518,7 +518,7 @@ Implementation
                                   { not found, finally ... add it anyways ... }
                                   Message1(asmr_w_id_supposed_external,expr);
                                   oper.InitRef;
-                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
+                                  oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
                                 end;
                              end
                           else
@@ -789,7 +789,10 @@ Implementation
 end.
 {
   $Log$
-  Revision 1.2  2004-02-09 19:23:48  peter
+  Revision 1.3  2004-03-02 00:36:33  olle
+    * big transformation of Tai_[const_]Symbol.Create[data]name*
+
+  Revision 1.2  2004/02/09 19:23:48  peter
     * reg_2_opsize replaced with reg_cgsize
 
   Revision 1.1  2004/01/14 23:39:05  florian