code: def load_symbols_elf(filename):
      
      f = open(filename, 'rb')
  
      elffile = ELFFile(f)
  
      symbols = []
  
      for section in elffile.iter_sections():
          if not isinstance(section, SymbolTableSection):
              continue
  
          if section['sh_entsize'] == 0:
              logger.warn("Symbol table {} has a sh_entsize of zero.".format(section.name))
  
              continue
  
          logger.info("Symbol table {} contains {} entries.".format(section.name, section.num_symbols()))
  
          for _, symbol in enumerate(section.iter_symbols()):
              if describe_symbol_shndx(symbol['st_shndx']) != "UND" and \
                  describe_symbol_type(symbol['st_info']['type']) == "FUNC":
                  symbols.append((symbol['st_value'], symbol['st_size'], symbol.name))
  
      f.close()
  
      symbols_by_addr = {
          addr: (name, size, True) for addr, size, name in symbols
      }
  
      return symbols_by_addr
docs: Load the symbol tables contained in the file