13 Commits

Author SHA1 Message Date
Wesley Shields
a6af4cbd18 Implement resource parsing.
While here, fix a memory leak in pepy as I was not decrementing the
reference counter on self->data in section_dealloc().
2013-12-24 12:41:59 -05:00
Wesley Shields
dae8606469 Bugfix to get_bytes and add section.data.
If get_bytes does not fill the list, get a slice of what was filled and
use that to convert to a bytearray. I still want to find a way to just
use a bytearray from the start. Luckily with the rest of this commit I
don't have a need to call get_bytes() on sections anymore.

Sections now have a data attribute which is a bytearray of the data that
makes up that section. This way you can just use section.data attribute
to get the entire contents and operate on it as you wish.

Make test.py use section.data to generate an MD5 of the section. It now
also prints the first 10 bytes of each section (if there are bytes).
2013-12-14 22:26:58 -05:00
Wesley Shields
9494d96300 Switch to a bytearray for get_bytes().
It probably isn't the best way to do it but I couldn't get anything to work
when trying to generate a bytearray object directly. As a workaround I first
put each byte into a list and then convert the list to a bytearray.
2013-12-12 16:14:53 -05:00
Wesley Shields
cd99c9f603 Move code around in test. 2013-12-01 16:05:07 -05:00
Wesley Shields
b867946050 Implement relocations.
This still needs testing.
2013-11-30 22:44:30 -05:00
Wesley Shields
5e86f97c96 Implement a bunch of parsed attributes.
These are all the things the dump-prog pulls out already.
2013-11-30 22:21:10 -05:00
Wesley Shields
7abab7bd2e Implement imports and exports.
Might as well do some general cleanup too:

Rename the len attribute of a section to length.

The section, import and export callbacks return 0 on success and anything else
on failure.

Whitespace fixes.

Fix a bunch of copy/paste mistakes in the test script.
2013-11-30 21:36:05 -05:00
Wesley Shields
2083f6f358 Sections are now their own type.
Do not return a list of dictionaries from get_sections(). Now it returns a
list of section objects, which expose the information via attributes.
2013-11-29 23:32:32 -05:00
Wesley Shields
b4ad87819e Support section, symbols and characteristics.
While here, make it easier to extend by providing macros to eliminate
the mundane that goes into writing getset members.
2013-11-29 21:56:12 -05:00
Wesley Shields
860fbff4e4 Don't store parsed values in python objects.
Convert the PyObject pointers used inside pepy_parsed into their corresponding
native types and use those. Teach the members array to return them accordingly.

While here might as well add support for signature and machine values.

Also, convert test.py to have shorter output by not using pprint.
2013-11-29 14:28:39 -05:00
Wesley Shields
b816e1cbf9 Remove unused import. 2013-11-29 14:12:37 -05:00
Wesley Shields
ed77443f31 Implement timedatestamp member.
While here, DECREF the string used in init. Also, make a note that I really
want to use a bytearray instead of a list for get_bytes().
2013-11-29 14:11:01 -05:00
Wesley Shields
14e2848aa2 Add a test file that uses the bindings. 2013-11-27 15:53:20 -05:00