예제 #1
0
 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)
예제 #2
0
    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)
예제 #3
0
 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)