Browse Source

* tai_const_symbol.createdataname added

peter 22 năm trước cách đây
mục cha
commit
2b0e576cbe
3 tập tin đã thay đổi với 37 bổ sung13 xóa
  1. 8 2
      compiler/aasmbase.pas
  2. 20 5
      compiler/aasmtai.pas
  3. 9 6
      compiler/pmodules.pas

+ 8 - 2
compiler/aasmbase.pas

@@ -720,7 +720,10 @@ implementation
       begin
         hp:=tasmsymbol(symbolsearch.search(s));
         if assigned(hp) then
-         hp.defbind:=_bind
+         begin
+           if (_bind<>AB_EXTERNAL) then
+             hp.defbind:=_bind
+         end
         else
          begin
            { Not found, insert it as an External }
@@ -884,7 +887,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.12  2002-11-17 16:31:55  carl
+  Revision 1.13  2003-01-30 21:46:20  peter
+    * tai_const_symbol.createdataname added
+
+  Revision 1.12  2002/11/17 16:31:55  carl
     * memory optimization (3-4%) : cleanup of tai fields,
        cleanup of tdef and tsym fields.
     * make it work for m68k

+ 20 - 5
compiler/aasmtai.pas

@@ -316,6 +316,7 @@ interface
           constructor Createname(const name:string);
           constructor Createname_offset(const name:string;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;
@@ -845,7 +846,7 @@ uses
 
 
 {****************************************************************************
-                               TAI_CONST_SYMBOL_OFFSET
+                               TAI_CONST_SYMBOL
  ****************************************************************************}
 
     constructor tai_const_symbol.Create(_sym:tasmsymbol);
@@ -909,6 +910,17 @@ uses
       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);
@@ -1714,13 +1726,13 @@ uses
                end;
            end;
       end;
-      
+
     procedure Taasmoutput.convert_registers;
-    
+
     var p:Tai;
         i:shortint;
         r:Preference;
-    
+
     begin
       p:=Tai(first);
       while assigned(p) do
@@ -1754,7 +1766,10 @@ uses
 end.
 {
   $Log$
-  Revision 1.19  2003-01-21 08:48:08  daniel
+  Revision 1.20  2003-01-30 21:46:20  peter
+    * tai_const_symbol.createdataname added
+
+  Revision 1.19  2003/01/21 08:48:08  daniel
     * Another 200301081 fixed
 
   Revision 1.18  2003/01/09 20:40:59  daniel

+ 9 - 6
compiler/pmodules.pas

@@ -188,7 +188,7 @@ implementation
          begin
            If (hp.u.flags and uf_threadvars)=uf_threadvars then
             begin
-              ltvTables.concat(Tai_const_symbol.Createname(hp.u.modulename^+'_$THREADVARLIST'));
+              ltvTables.concat(Tai_const_symbol.Createdataname(hp.u.modulename^+'_$THREADVARLIST'));
               inc(count);
             end;
            hp:=tused_unit(hp.next);
@@ -196,7 +196,7 @@ implementation
         { Add program threadvars, if any }
         If (current_module.flags and uf_threadvars)=uf_threadvars then
          begin
-           ltvTables.concat(Tai_const_symbol.Createname(current_module.modulename^+'_$THREADVARLIST'));
+           ltvTables.concat(Tai_const_symbol.Createdataname(current_module.modulename^+'_$THREADVARLIST'));
            inc(count);
          end;
         { TableCount }
@@ -223,7 +223,7 @@ implementation
            (vo_is_thread_var in tvarsym(p).varoptions) then
          begin
            { address of threadvar }
-           ltvTable.concat(tai_const_symbol.createname(tvarsym(p).mangledname));
+           ltvTable.concat(tai_const_symbol.createdataname(tvarsym(p).mangledname));
            { size of threadvar }
            ltvTable.concat(tai_const.create_32bit(tvarsym(p).getsize));
          end;
@@ -266,7 +266,7 @@ implementation
          begin
            If (hp.u.flags and uf_has_resources)=uf_has_resources then
             begin
-              ResourceStringTables.concat(Tai_const_symbol.Createname(hp.u.modulename^+'_RESOURCESTRINGLIST'));
+              ResourceStringTables.concat(Tai_const_symbol.Createdataname(hp.u.modulename^+'_RESOURCESTRINGLIST'));
               inc(count);
             end;
            hp:=tused_unit(hp.next);
@@ -274,7 +274,7 @@ implementation
         { Add program resources, if any }
         If ResourceStringList<>Nil then
          begin
-           ResourceStringTables.concat(Tai_const_symbol.Createname(current_module.modulename^+'_RESOURCESTRINGLIST'));
+           ResourceStringTables.concat(Tai_const_symbol.Createdataname(current_module.modulename^+'_RESOURCESTRINGLIST'));
            Inc(Count);
          end;
         { TableCount }
@@ -1438,7 +1438,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.93  2003-01-11 11:19:54  hajny
+  Revision 1.94  2003-01-30 21:46:20  peter
+    * tai_const_symbol.createdataname added
+
+  Revision 1.93  2003/01/11 11:19:54  hajny
     * correction from rev. 1.88 put back
 
   Revision 1.92  2003/01/08 18:43:56  daniel