diff README @ 12:3213b5ecae51

README added
author Space Falcon <falcon@ivan.Harhan.ORG>
date Sat, 06 Jun 2015 17:04:40 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README	Sat Jun 06 17:04:40 2015 +0000
@@ -0,0 +1,29 @@
+The Mercurial tree you are looking at is a kit for applying patches to those
+parts of TCS211 Calypso GSM firmware that came as binary object libraries
+without complete corresponding source.
+
+TI's TCS211 fw build system expects all prebuilt objects (i.e., those which it
+should not or cannot recompile from source) to be packaged in libraries (*.lib);
+TI's *.lib format is a variant of classic UNIX ar(5) with COFF objects inside.
+One can use the standard ar command on a GNU/Linux machine to extract the *.obj
+files from TI's *.lib, but I wasn't comfortable with the idea of patching these
+*.obj files in their extracted form and then using GNU/Linux version of ar to
+repackage them back into *.lib, so instead I wrote a tool that processes a *.lib
+archive and applies a specified set of patches to one or more member objects
+contained therein.
+
+The libs, gpflibs and oslibs subdirectories contain the set of *.lib files that
+constitute our starting point, i.e., the baseline to which patches are to be
+applied; the tool subdirectory contains the library patching tool and the
+patches subdirectory contains some example patches.  The patched libraries
+built in the patches directory can then be plopped directly into a TCS211
+project tree in the place of the original without any manual splitting or
+repackaging.
+
+The leo-obj subtree in the freecalypso-reveng repository contains a specialized
+object format parser and disassembler for TI's version of COFF in question, as
+well as some already prepared disassembly hints for some parts of the TCS211
+binary deliverable we are working with.  The present library patching tool
+allows one to patch any given byte in any section in any member object in an
+archive library; disassembly with tiobjd should be used to figure out which
+byte(s) one needs to patch in order to effect the desired change.