Przeglądaj źródła

+ support for asd_reference, asd_weak_reference and asd_weak_definition
in AIX assembler writer

git-svn-id: trunk@20836 -

Jonas Maebe 13 lat temu
rodzic
commit
1c91a555f4
2 zmienionych plików z 25 dodań i 2 usunięć
  1. 8 1
      compiler/aggas.pas
  2. 17 1
      compiler/ppcgen/agppcgas.pas

+ 8 - 1
compiler/aggas.pas

@@ -54,6 +54,7 @@ interface
         procedure WriteWeakSymbolDef(s: tasmsymbol); virtual;
         procedure WriteAixStringConst(hp: tai_string);
         procedure WriteAixIntConst(hp: tai_const);
+        procedure WriteDirectiveName(dir: TAsmDirective); virtual;
        public
         function MakeCmdLine: TCmdStr; override;
         procedure WriteTree(p:TAsmList);override;
@@ -1317,7 +1318,7 @@ implementation
 
            ait_directive :
              begin
-               AsmWrite('.'+directivestr[tai_directive(hp).directive]+' ');
+               WriteDirectiveName(tai_directive(hp).directive);
                if tai_directive(hp).name <>'' then
                  AsmWrite(tai_directive(hp).name);
                AsmLn;
@@ -1495,6 +1496,12 @@ implementation
       end;
 
 
+    procedure TGNUAssembler.WriteDirectiveName(dir: TAsmDirective);
+    begin
+      AsmWrite('.'+directivestr[dir]+' ');
+    end;
+
+
     procedure TGNUAssembler.WriteAsmList;
     var
       n : string;

+ 17 - 1
compiler/ppcgen/agppcgas.pas

@@ -54,9 +54,11 @@ unit agppcgas;
 
     TPPCAIXAssembler=class(TPPCGNUAssembler)
       constructor create(smart: boolean); override;
+     protected
+      function sectionname(atype: TAsmSectiontype; const aname: string; aorder: TAsmSectionOrder): string; override;
       procedure WriteExtraHeader; override;
       procedure WriteExtraFooter; override;
-      function sectionname(atype: TAsmSectiontype; const aname: string; aorder: TAsmSectionOrder): string; override;
+      procedure WriteDirectiveName(dir: TAsmDirective); override;
     end;
 
     topstr = string[4];
@@ -493,6 +495,20 @@ unit agppcgas;
       end;
 
 
+    procedure TPPCAIXAssembler.WriteDirectiveName(dir: TAsmDirective);
+      begin
+        case dir of
+          asd_reference:
+            AsmWrite('.ref ');
+          asd_weak_reference,
+          asd_weak_definition:
+            AsmWrite('.weak ');
+          else
+            inherited WriteDirectiveName(dir);
+        end;
+      end;
+
+
     function TPPCAIXAssembler.sectionname(atype: TAsmSectiontype; const aname: string; aorder: TAsmSectionOrder): string;
       begin
         case atype of