Fork us on GitHub Follow us on Facebook Follow us on Twitter

Opened 8 years ago

Closed 4 years ago

#317 closed enhancement (fixed)

Structured binary data editor

Reported by: Jiri Svoboda Owned by: Sean Bartell
Priority: major Milestone: 0.7.0
Component: helenos/app/other Version:
Keywords: gsoc12 Cc: wingedtachikoma@…
Blocker for: Depends on:
See also:

Description (last modified by Jiri Svoboda)

Implement a tool to view and edit structured binary data, such as program memory structures (task memory, core file), file system structures, etc.

Details
The implementation should primarily consist of a versatile library that would provide:
  • An API to dynamically (at run time) define and manipulate data structures (data schemas) comprising of typical basic and compound data types (integers, arrays, structs, unions, pointers)
  • An API to enumerate the members of such data structures
  • An API to compute field offsets (addresses)
  • An API to read and write values of the members and traverse complex data structures using pointers (with custom pointer resolution routines)
  • A parser which would provide a way to define the data structures (data schemas) in a textual representation (XML-based description, C-like type declaration or a DSL)
  • A generator which would output the data structure definition in the textual representation which the library can parse again.
  • Support for custom memory back-ends using code plug-ins (file, task memory [using udebug], block device)
The implementation should also contain readily available definitions for common data structures (either as code plug-ins or in the form of textural representation), e.g.:
  • ubiquitous data structures (doubly-linked link lists, hash tables, etc.)
  • ELF file format (with DWARF data)
  • FAT file system structures
  • ext2 file system structures

An interactive or command-based browser/editor should be provided on top of this library and data structure definitions. The library can be also integrated into other applications, such as the debugger.

What Gains and Benefits will this bring?
Easier debugging of file system drivers, easier debugging of running tasks and their live data, easier analysis of core dumps. The open design of the library/editor should make it great also for other future uses (analysis of application data files, etc.).

As the implementation of the library and to a major extend also the implementation of the end-user interactive editor can be done in standard-compliant C with little to no HelenOS-specific code, it can be also usable in other operating systems.

Difficulty
Medium
Required skills
A successful applicant will have good skills of programming in the C language and experience with designing reusable and extensible libraries with decent internal structure and public API. For the end-user interactive editor the ability to learn and use HelenOS-specific console manipulation routines is also expected.
Documentation
Possible mentors
HelenOS Core Team, Martin Decky, Vojtech Horky

Change History (9)

comment:1 Changed 8 years ago by Jakub Jermář

Keywords: gsoc12 added
Milestone: 0.5.00.5.1

comment:2 Changed 7 years ago by Jakub Jermář

Keywords: needswork added

comment:3 Changed 7 years ago by Jakub Jermář

Component: helenos/unspecifiedhelenos/app/other

comment:4 Changed 7 years ago by Martin Decky

Description: modified (diff)
Keywords: needswork removed

comment:5 Changed 7 years ago by Vojtech Horky

Description: modified (diff)

comment:6 Changed 7 years ago by Jiri Svoboda

Description: modified (diff)

comment:7 Changed 7 years ago by Sean Bartell

Cc: wingedtachikoma@… added
Owner: set to Sean Bartell
Status: newaccepted

comment:8 Changed 5 years ago by Jakub Jermář

Milestone: 0.5.10.5.2

comment:9 Changed 4 years ago by Martin Decky

Resolution: fixed
Status: acceptedclosed

Mostly merged into mainline and documented as Bithenge.

Note: See TracTickets for help on using tickets.