Source code for ducky.errors

[docs]class Error(Exception): def __init__(self, message = None): super(Error, self).__init__() self.message = message or '' def __str__(self): return self.message
[docs]class InvalidResourceError(Error): pass
[docs]class AccessViolationError(Error): pass
[docs]class AssemblerError(Error): def __init__(self, location = None, message = None, line = None, info = None): self.location = location self.message = message self.line = line self.info = info self.create_text() super(AssemblerError, self).__init__(message = self.text[0])
[docs] def create_text(self): text = ['{coor}: {message}'.format(coor = str(self.location), message = self.message)] if self.line is not None: text.append(self.line) if self.location.column is not None: text.append(' ' * self.location.column + '^') self.text = text
[docs] def log(self, logger): logger('') for line in self.text: logger(line)
[docs]class TooManyLabelsError(AssemblerError): def __init__(self, **kwargs): super(TooManyLabelsError, self).__init__(message = 'Too many consecutive labels', **kwargs)
[docs]class UnknownPatternError(AssemblerError): def __init__(self, **kwargs): super(UnknownPatternError, self).__init__(message = 'Unknown pattern: "{info}"'.format(**kwargs), **kwargs)
[docs]class IncompleteDirectiveError(AssemblerError): def __init__(self, **kwargs): super(IncompleteDirectiveError, self).__init__(message = 'Incomplete directive: {info}'.format(**kwargs), **kwargs)
[docs]class UnknownFileError(AssemblerError): def __init__(self, **kwargs): super(UnknownFileError, self).__init__(message = 'Unknown file: {info}'.format(**kwargs), **kwargs)
[docs]class DisassembleMismatchError(AssemblerError): def __init__(self, **kwargs): super(DisassembleMismatchError, self).__init__(message = 'Disassembled instruction does not match input: {info}'.format(**kwargs), **kwargs)
[docs]class UnalignedJumpTargetError(AssemblerError): def __init__(self, **kwargs): super(UnalignedJumpTargetError, self).__init__(message = 'Jump destination address is not 4-byte aligned: {info}'.format(**kwargs), **kwargs)
[docs]class EncodingLargeValueError(AssemblerError): def __init__(self, **kwargs): super(EncodingLargeValueError, self).__init__(message = 'Value cannot fit into field: {info}'.format(**kwargs), **kwargs)
[docs]class IncompatibleLinkerFlagsError(Error): pass
[docs]class UnknownSymbolError(Error): pass