﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	field_blocks	field_dependson	field_seealso
317	Structured binary data editor	Jiri Svoboda	Sean Bartell	"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::
  * Compact Type Format (compact kernel debugging information used by MDB for Solaris)
    * !OpenSolaris headers: [http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/ctf.h ctf.h], [http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/ctf_api.h ctf_api.h]
  * [http://dwarfstd.org/ DWARF debugging standard]

 Possible mentors::
    HelenOS Core Team, Martin Decky, Vojtech Horky"	enhancement	closed	major	0.7.0	helenos/app/other		fixed	gsoc12	wingedtachikoma@…			
