Skip to content

IDA 7.7 import error: AttributeError: 'ArrayTypeData' object has no attribute 'obj_type' #599

Description

@crackedmind

Using latest docker container

revng model import idb my.idb -o my.yml

First database

  File "/revng/root/bin/revng", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/revng.py", line 99, in main
    return run_revng_command(arguments, options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/revng.py", line 93, in run_revng_command
    return _commands_registry.run(arguments, options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/commands_registry.py", line 167, in run
    return self.commands[command_sorted].run(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/_commands/import_idb/__init__.py", line 44, in run
    idb_converter = IDBConverter(db, base_address, options.parsed_args.verbose)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/_commands/import_idb/idb_converter.py", line 102, in __init__
    self._fixup_structs()
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/_commands/import_idb/idb_converter.py", line 273, in _fixup_structs
    underlying_type = self._convert_idb_type_to_revng_type(member.type)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/_commands/import_idb/idb_converter.py", line 485, in _convert_idb_type_to_revng_type
    underlying_type = self._convert_idb_type_to_revng_type(type.type_details.obj_type)
                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ArrayTypeData' object has no attribute 'obj_type

and second

Traceback (most recent call last):
  File "/revng/root/bin/revng", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/revng.py", line 99, in main
    return run_revng_command(arguments, options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/revng.py", line 93, in run_revng_command
    return _commands_registry.run(arguments, options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/commands_registry.py", line 167, in run
    return self.commands[command_sorted].run(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/revng/internal/cli/_commands/import_idb/__init__.py", line 43, in run
    with idb.from_file(idb_path) as db:
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/idb/__init__.py", line 33, in from_file
    db.vsParse(buf)
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 145, in vsParse
    self._vsFireCallbacks(fname)
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 88, in _vsFireCallbacks
    callback()
  File "/revng/root/lib/python3.12/site-packages/idb/fileformat.py", line 1197, in pcb_header
    s.vsParse(section.contents)
  File "/revng/root/lib/python3.12/site-packages/idb/typeinf.py", line 1553, in vsParse
    result = VStruct.vsParse(self, sbytes, offset, fast)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 141, in vsParse
    offset = fobj.vsParse(sbytes, offset=offset)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 145, in vsParse
    self._vsFireCallbacks(fname)
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 88, in _vsFireCallbacks
    callback()
  File "/revng/root/lib/python3.12/site-packages/idb/typeinf.py", line 1460, in pcb_buf
    offset = _def.vsParse(buf, offset=offset)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 145, in vsParse
    self._vsFireCallbacks(fname)
  File "/revng/root/lib/python3.12/site-packages/vstruct/__init__.py", line 88, in _vsFireCallbacks
    callback()
  File "/revng/root/lib/python3.12/site-packages/idb/typeinf.py", line 1396, in pcb_flags
    raise Exception("unsupported format {}".format(self.flags))
Exception: unsupported format 8

sample idb

https://github.com/void2012/NH3API/releases/tag/v2.1
you can download idb for ida 7.7 and save it unpacked version or unpacked version from here https://drive.google.com/file/d/1_J0exHdFmMb6duhYqsIlciQZPnihWGPm/view?usp=drive_link

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions