From 7723f38cd3426b371a16a582b6390e3ddbafdc7d Mon Sep 17 00:00:00 2001
From: AlexWhiter <37855663+AlexWhiter@users.noreply.github.com>
Date: Thu, 15 Nov 2018 11:27:55 +0700
Subject: [PATCH] Create parse.php

---
 echoMAP_7x_9x_Symbols/parse.php | 67 +++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 echoMAP_7x_9x_Symbols/parse.php

diff --git a/echoMAP_7x_9x_Symbols/parse.php b/echoMAP_7x_9x_Symbols/parse.php
new file mode 100644
index 0000000..7af5e8d
--- /dev/null
+++ b/echoMAP_7x_9x_Symbols/parse.php
@@ -0,0 +1,67 @@
+<? echo "#include <idc.idc>\n"; ?>
+
+static SetName_(addr, name) {
+  auto n, i;
+
+  n=name;
+  if (MakeNameEx(addr, n, SN_NOWARN) == 0) {
+    i = 1;
+    while (MakeNameEx(addr, n + "_" + ltoa(i, 10), SN_NOWARN) == 0) i++;
+  }
+}
+
+static main(void) {
+
+
+<?
+  $strs = file('Unknown.bin');
+
+  while (list ($line_num, $line) = each ($strs)) {
+    $line = trim($line);
+
+    if (preg_match('/^0x([^,]+),(.+),(.+) Code,(.+)$/i', $line, $mathces)) {
+      list($dummy, $addr, $name, $type, $size) = $mathces;
+      $addr = hexdec($addr);
+
+      if ($addr < 0xA0000000) {
+        if ($type == "Thumb") $addr--;
+        echo("MakeUnknown($addr, $size, DOUNK_EXPAND); ");
+
+        if ($name != '__switch$$') {
+          if ($type == "Thumb") {
+            echo "SetReg($addr, \"T\", 1); ";
+          } else {
+            echo "SetReg($addr, \"T\", 0); ";
+          }
+
+          echo "SetName_($addr, \"$name\"); ";
+          echo "MakeFunction($addr, BADADDR);";
+        }
+        echo "\n";
+      }
+    }
+  }
+
+/*
+  $strs = array_reverse($strs);
+  while (list ($line_num, $line) = each ($strs)) {
+    $line = trim($line);
+
+    if (preg_match('/^0x([^,]+),(.+),(.+) Code,(.+)$/i', $line, $mathces)) {
+      list($dummy, $addr, $name, $type, $comm) = $mathces;
+      $addr = hexdec($addr);
+
+      if ($addr < 0xA0000000) {
+        if ($type == "Thumb") {
+          $addr--;
+        }
+
+        echo "MakeFunction($addr, BADADDR); ";
+        echo "SetFunctionCmt($addr, \"$comm\", 0);\n";
+      }
+    }
+  }
+*/
+?>
+
+}