def __init__( self, rom_start: RomAddr, rom_end: RomAddr, type: str, name: str, vram_start: Any, extract: bool = True, given_subalign: int = options.get_subalign(), exclusive_ram_id: Optional[str] = None, given_dir: Path = Path(), symbol_name_format: str = options.get_symbol_name_format(), symbol_name_format_no_rom: str = options.get_symbol_name_format_no_rom(), args=[], yaml={}, ): self.rom_start = rom_start self.rom_end = rom_end self.type = type self.name = name self.vram_start = vram_start self.extract = extract self.given_subalign = given_subalign self.exclusive_ram_id = exclusive_ram_id self.given_dir = given_dir self.given_seg_symbols: Dict[ int, List[Symbol] ] = {} # Symbols known to be in this segment self.given_section_order: List[str] = options.get_section_order() self.given_symbol_name_format = symbol_name_format self.given_symbol_name_format_no_rom = symbol_name_format_no_rom self.parent: Optional[Segment] = None self.sibling: Optional[Segment] = None self.args: List[str] = args self.yaml = yaml if self.rom_start == "auto": self.extract = False if self.type.startswith("."): self.extract = False self.warnings: List[str] = [] self.did_run = False if isinstance(self.rom_start, int) and isinstance(self.rom_end, int): if self.rom_start > self.rom_end: log.error( f"Error: segments out of order - ({self.name} starts at 0x{self.rom_start:X}, but next segment starts at 0x{self.rom_end:X})" )
def __init__(self, rom_start, rom_end, type, name, vram_start, extract=True, given_subalign=options.get_subalign(), given_is_overlay: Optional[bool] = False, given_dir: Path = Path(), args=[], yaml={}): self.rom_start = rom_start self.rom_end = rom_end self.type = type self.name = name self.vram_start = vram_start self.extract = extract self.given_subalign = given_subalign self.given_is_overlay = given_is_overlay self.given_dir = given_dir self.given_seg_symbols: Dict[int, Symbol] = { } # Symbols known to be in this segment self.given_ext_symbols: Dict[int, Symbol] = { } # Symbols not in this segment but also not from other overlapping ram address ranges self.parent: Optional[Segment] = None self.sibling: Optional[Segment] = None self.args: List[str] = args self.yaml = yaml if "skip" in self.args: self.extract = False if self.rom_start == "auto": self.extract = False if self.type.startswith("."): self.extract = False self.warnings: List[str] = [] self.did_run = False if isinstance(self.rom_start, int) and isinstance(self.rom_end, int): if self.rom_start > self.rom_end: print( f"Error: segments out of order - ({self.name} starts at 0x{self.rom_start:X}, but next segment starts at 0x{self.rom_end:X})" ) sys.exit(1)
def parse_segment_subalign(segment: Union[dict, list]) -> int: default = options.get_subalign() if isinstance(segment, dict): return int(segment.get("subalign", default)) return default