Source code for cle.backends.elf.compilation_unit
import os.path
from cle.address_translator import AT
from .subprogram import Subprogram
from .variable import Variable
[docs]
class CompilationUnit:
"""
CompilationUnit for DWARF
See http://dwarfstd.org/doc/DWARF5.pdf page 60
"""
[docs]
def __init__(self, name, comp_dir, low_pc, high_pc, language, elf_object):
self.name = name
self.comp_dir = comp_dir
self.file_path = os.path.join(self.comp_dir, self.name)
self.low_pc = low_pc
self.high_pc = high_pc
self.language = language
self.functions: dict[int, Subprogram] = {}
self.global_variables: list[Variable] = []
self._elf_object = elf_object
@property
def min_addr(self):
return AT.from_rva(self.low_pc, self._elf_object).to_mva()
@property
def max_addr(self):
return AT.from_rva(self.high_pc, self._elf_object).to_mva()