Browse Source

+ added a hook to insert object-global information into the asmlists (will
be used to insert type definitions for llvm)

git-svn-id: trunk@30674 -

Jonas Maebe 10 years ago
parent
commit
1941e64488
2 changed files with 15 additions and 0 deletions
  1. 11 0
      compiler/ngenutil.pas
  2. 4 0
      compiler/pmodules.pas

+ 11 - 0
compiler/ngenutil.pas

@@ -97,6 +97,11 @@ interface
 
 
       class procedure InsertMemorySizes; virtual;
       class procedure InsertMemorySizes; virtual;
 
 
+      { called right before an object is assembled, can be used to insert
+        global information into the assembler list (used by LLVM to insert type
+        info) }
+      class procedure InsertObjectInfo; virtual;
+
      strict protected
      strict protected
       class procedure add_main_procdef_paras(pd: tdef); virtual;
       class procedure add_main_procdef_paras(pd: tdef); virtual;
     end;
     end;
@@ -999,6 +1004,12 @@ implementation
     end;
     end;
 
 
 
 
+  class procedure tnodeutils.InsertObjectInfo;
+    begin
+      { don't do anything by default }
+    end;
+
+
    class procedure tnodeutils.add_main_procdef_paras(pd: tdef);
    class procedure tnodeutils.add_main_procdef_paras(pd: tdef);
      begin
      begin
        { no parameters by default }
        { no parameters by default }

+ 4 - 0
compiler/pmodules.pas

@@ -92,6 +92,10 @@ implementation
            KeepShared.Free;
            KeepShared.Free;
          end;
          end;
 
 
+        { allow a target-specific pass over all assembler code (used by LLVM
+          to insert type definitions }
+        cnodeutils.InsertObjectInfo;
+
         { Start and end module debuginfo, at least required for stabs
         { Start and end module debuginfo, at least required for stabs
           to insert n_sourcefile lines }
           to insert n_sourcefile lines }
         if (cs_debuginfo in current_settings.moduleswitches) or
         if (cs_debuginfo in current_settings.moduleswitches) or