12
|
1 The Mercurial tree you are looking at is a kit for applying patches to those
|
|
2 parts of TCS211 Calypso GSM firmware that came as binary object libraries
|
|
3 without complete corresponding source.
|
|
4
|
|
5 TI's TCS211 fw build system expects all prebuilt objects (i.e., those which it
|
|
6 should not or cannot recompile from source) to be packaged in libraries (*.lib);
|
|
7 TI's *.lib format is a variant of classic UNIX ar(5) with COFF objects inside.
|
|
8 One can use the standard ar command on a GNU/Linux machine to extract the *.obj
|
|
9 files from TI's *.lib, but I wasn't comfortable with the idea of patching these
|
|
10 *.obj files in their extracted form and then using GNU/Linux version of ar to
|
|
11 repackage them back into *.lib, so instead I wrote a tool that processes a *.lib
|
|
12 archive and applies a specified set of patches to one or more member objects
|
|
13 contained therein.
|
|
14
|
|
15 The libs, gpflibs and oslibs subdirectories contain the set of *.lib files that
|
|
16 constitute our starting point, i.e., the baseline to which patches are to be
|
|
17 applied; the tool subdirectory contains the library patching tool and the
|
|
18 patches subdirectory contains some example patches. The patched libraries
|
|
19 built in the patches directory can then be plopped directly into a TCS211
|
|
20 project tree in the place of the original without any manual splitting or
|
|
21 repackaging.
|
|
22
|
|
23 The leo-obj subtree in the freecalypso-reveng repository contains a specialized
|
|
24 object format parser and disassembler for TI's version of COFF in question, as
|
|
25 well as some already prepared disassembly hints for some parts of the TCS211
|
|
26 binary deliverable we are working with. The present library patching tool
|
|
27 allows one to patch any given byte in any section in any member object in an
|
|
28 archive library; disassembly with tiobjd should be used to figure out which
|
|
29 byte(s) one needs to patch in order to effect the desired change.
|