view README @ 15:6cbe01db6382

l1_ext-nodyndwl.patch implemented
author Space Falcon <falcon@ivan.Harhan.ORG>
date Sun, 05 Jul 2015 00:07:16 +0000
parents 3213b5ecae51
children
line wrap: on
line source

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.