From 491589d686748f1d1612ffe9b6b2118648e0e6cc Mon Sep 17 00:00:00 2001 From: Rob McMullen Date: Mon, 20 Mar 2017 23:25:52 -0700 Subject: [PATCH] Added 'use_origin' flag to let disassembler know that it has a real origin in memory so that labels are meaningful --- atrcopy/dos33.py | 2 +- atrcopy/segments.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/atrcopy/dos33.py b/atrcopy/dos33.py index 482df40..783d0ec 100644 --- a/atrcopy/dos33.py +++ b/atrcopy/dos33.py @@ -578,7 +578,7 @@ class Dos33DiskImage(DiskImageBase): addr = dirent.get_binary_start_address(self) - 4 # factor in 4 byte header else: addr = 0 - segment = DefaultSegment(raw, start_addr=addr, name=name, verbose_name=verbose_name) + segment = ObjSegment(raw, 0, 0, start_addr=addr, name=name, verbose_name=verbose_name) if addr > 0: style = segment.get_style_bits(data=True) segment.style[0:4] = style diff --git a/atrcopy/segments.py b/atrcopy/segments.py index 992f8dd..f5ef8f6 100644 --- a/atrcopy/segments.py +++ b/atrcopy/segments.py @@ -311,6 +311,10 @@ class DefaultSegment(object): self.page_size = -1 self.map_width = 40 self.uuid = str(uuid.uuid4()) + + # Some segments may not have a standard place in memory, so this flag + # can be used to skip the memory map lookup when displaying disassembly + self.use_origin = False def set_raw(self, rawdata): self.rawdata = rawdata @@ -895,6 +899,7 @@ class ObjSegment(DefaultSegment): DefaultSegment.__init__(self, rawdata, start_addr, name, **kwargs) self.metadata_start = metadata_start self.data_start = data_start + self.use_origin = True def __str__(self): count = len(self)