I think there is value in both a compilation unit (BPatch_module) and whole file (BPatch_object). The compilation unit provides a useful container for functions, variables, and other information; in some cases it's necessary (static functions, static libraries, and the like). The whole file allows someone to do an address- or filename-based lookup that cannot be done at the module level.
... so I think we should just add BPatch_object as a container of BPatch_modules. It enlarges the interface, but also provides symmetry with SymtabAPI, ParseAPI, and PatchAPI.
The one change I would make to modules is to revisit the "shared libraries are a single module" decision. While this makes sense for things like libc, it doesn't necessarily make sense for user libraries that are linked in. I don't have strong feelings about that, though.
Drew
--
Andrew Bernat
Paradyn Project