def generateSimilarSymbolDetailsHTML(self): html_lines = [] index = 0; for symbol_pair in self.binary_pair.similar_symbols: index = index + 1 old_symbol = symbol_pair[0] new_symbol = symbol_pair[1] old_symbol_name_html = html.escapeString(old_symbol.name) new_symbol_name_html = html.escapeString(new_symbol.name) symbol_differences = old_symbol.getDifferencesAsHTML(new_symbol, " ") if old_symbol.size == new_symbol.size: size_info = "size unchanged" else: size_info = formatMemChange("", old_symbol.size, new_symbol.size) html_lines.append("<%s>Similar pair %s (%s)</%s>\n" % ( \ self.settings.symbols_html_header, \ html.generateSimilarSymbolDetailsTitle(str(index)), \ size_info, \ self.settings.symbols_html_header)) html_lines.append("<p>Old: %s</p>\n" % (html.generateSymbolDetailsTitle(old_symbol_name_html))) html_lines.append("<p>New: %s</p>\n" % (html.generateSymbolDetailsTitle(new_symbol_name_html))) html_lines.append("%s\n" % (symbol_differences)) return "\n".join(html_lines)
def generatePersistentSymbolDetailsHTML(self): old_binary = self.binary_pair.old_binary new_binary = self.binary_pair.new_binary html_lines = [] for symbol_name in self.binary_pair.persisting_symbol_names: old_symbol = old_binary.symbols[symbol_name] new_symbol = new_binary.symbols[symbol_name] symbol_name_html = html.escapeString(symbol_name) if not old_symbol.__eq__(new_symbol): symbol_differences = old_symbol.getDifferencesAsHTML( new_symbol, " ") if old_symbol.size == new_symbol.size: size_info = "size unchanged" else: size_info = formatMemChange("", old_symbol.size, new_symbol.size) html_lines.append("<{header}>{title} ({size_info})</{header}>\n".format( \ header = self.settings.symbols_html_header, \ title = html.generateSymbolDetailsTitle(symbol_name_html), \ size_info = size_info)) html_lines.append("%s\n" % (symbol_differences)) return "\n".join(html_lines)
def generateNewSymbolDetailsHTML(self): html_lines = [] if len(self.binary_pair.new_symbol_names) > 0: html_lines.append("<pre>") for symbol_name in self.binary_pair.new_symbol_names: symbol = self.binary_pair.new_binary.symbols[symbol_name] symbol_name_html = html.escapeString(symbol_name) html_lines.append("<%s>%s: %d bytes</%s>\n" % ( \ self.settings.symbols_html_header, \ html.generateSymbolDetailsTitle(symbol_name_html), \ symbol.size, \ self.settings.symbols_html_header)) html_lines.append(html.escapeString(symbol.getInstructionsBlock(" ") + "\n")) html_lines.append("</pre>") return "\n".join(html_lines)