FreeCalypso > hg > tcs211-patches
comparison README @ 12:3213b5ecae51
README added
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 06 Jun 2015 17:04:40 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
11:89ea4c7215a7 | 12:3213b5ecae51 |
---|---|
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. |