]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java
Fix a bug in HobLib migration.
[mirror_edk2.git] / Tools / Java / Source / MigrationTools / org / tianocore / migration / SourceFileReplacer.java
index e37f7f46b243ede6a5a45d8634153414ac9616d8..cdb833db838ff372e79ff6dca6978a814887f0ed 100644 (file)
@@ -17,6 +17,8 @@ import java.util.*;
 import java.util.regex.Matcher;\r
 import java.util.regex.Pattern;\r
 \r
+import org.tianocore.UsageTypes;\r
+\r
 public final class SourceFileReplacer implements Common.ForDoAll {\r
     private static final SourceFileReplacer SFReplacer = new SourceFileReplacer();\r
     private ModuleInfo mi;\r
@@ -73,7 +75,9 @@ public final class SourceFileReplacer implements Common.ForDoAll {
         }\r
         \r
         public boolean recognize(String filename) {\r
-            return filename.contains(".h") || filename.contains(".H") || filename.contains(".uni");\r
+            return filename.contains(".h") || filename.contains(".H") || filename.contains(".uni") ||\r
+                   filename.contains(".s") || filename.contains(".S") || filename.contains(".asm") ||\r
+                   (!filename.contains(".inf") && filename.contains(".i"));\r
         }\r
 \r
         public String namechange(String oldname) {\r
@@ -257,12 +261,19 @@ public final class SourceFileReplacer implements Common.ForDoAll {
         Matcher mtrhobstatus;\r
         String templine = wholeline;\r
         for (int i = 0; i < specialhoblibfunc.length; i++) {\r
-            ptnhobstatus = Pattern.compile("(Status\\s*=\\s*)?" + specialhoblibfunc[i] + "(.*?\\)\\s*;)", Pattern.DOTALL);\r
-            mtrhobstatus = ptnhobstatus.matcher(templine);\r
-            if (mtrhobstatus.find()) {\r
-                templine = mtrhobstatus.replaceAll(specialhoblibfunc[i] + mtrhobstatus.group(2) + "\n  " + \r
-                           MigrationTool.MIGRATIONCOMMENT +  "R9 Hob-building library functions will assert if build failure.\n  Status = EFI_SUCCESS;");\r
-            }\r
+            do {\r
+                ptnhobstatus = Pattern.compile("((?:\t| )*)(\\w(?:\\w|\\d)*)\\s*=\\s*" + specialhoblibfunc[i] + "(.*?;)", Pattern.DOTALL);\r
+                mtrhobstatus = ptnhobstatus.matcher(templine);\r
+                if (!mtrhobstatus.find()) {\r
+                    break;\r
+                }\r
+                String captureIndent = mtrhobstatus.group(1);\r
+                String captureStatus = mtrhobstatus.group(2);\r
+                String replaceString = captureIndent + specialhoblibfunc[i] + mtrhobstatus.group(3) + "\n";\r
+                replaceString += captureIndent + MigrationTool.MIGRATIONCOMMENT +  "R9 Hob-building library functions will assert if build failure.\n";\r
+                replaceString += captureIndent + captureStatus + " = EFI_SUCCESS;";\r
+                templine = mtrhobstatus.replaceFirst(replaceString);\r
+            } while (true);\r
         }\r
         return templine;\r
     }\r
@@ -297,7 +308,8 @@ public final class SourceFileReplacer implements Common.ForDoAll {
         it = symbolSet.iterator();\r
         while (it.hasNext()) {\r
             r8thing = it.next();\r
-            mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing));                // add a library here\r
+            mi.addLibraryClass(MigrationTool.db.getR9Lib(r8thing), UsageTypes.ALWAYS_CONSUMED);\r
+            //mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing));            // add a library here\r
  \r
             r8tor9 temp;\r
             if ((r9thing = MigrationTool.db.getR9Func(r8thing)) != null) {\r