[ECOS] Adding checksum to elf file

Sergei Gavrikov w3sg@SoftHome.net
Mon Jun 11 21:25:00 GMT 2007


On Sat, Jun 09, 2007 at 11:46:18AM +0300, Sergei Gavrikov wrote:
> On Fri, Jun 08, 2007 at 10:08:28PM -0400, Christopher Cordahi wrote:
> > On 05/06/07, Sergei Gavrikov <w3sg@softhome.net> wrote:
> > >On Tue, Jun 05, 2007 at 01:49:36PM -0400, Christopher Cordahi wrote:
> > >> Hello ecos
> > >>
> > >> I'd like to add some sort of checksum into the .elf files.
> > >> Is there a standard way of doing this?
> > >>
> > >> Googling I see some mention of a .dynamic tag DT_CHECKSUM
> > >> but not how to use it properly
> > >> and a short discussion in
> > >> http://ecos.sourceware.org/ml/binutils/2003-02/msg00242.html
> > >> but it doesn't seem very standard.
> > >>
> > >> Any ideas?
> > >
> > >It seems, it's more suitable to verify ELF using a parallel md5sum file
> > >That is 128-bit! There are sources http://www.ietf.org/rfc/rfc1321.txt.
> > 
> > Thanks,
> > However I only want it to detect accidental file corruption, something that
> > can be added to the file at file creation and can be easily verified by the
> > program loader (redboot).  At most I was thinking about implementing a
> > 32 bit CRC algorithm and probably only a 16 bits.  Maintaining and
> > distributing only 1 file is much easier than 2 so I am hoping to add the
> > CRC to the file in a standard way.  If there is no such standard I'll have
> > to resort to a method similar to that mentioned in the discussion.
> 
> I have an idea to do it with no blood. You won't need tweak ELF. You can
> use zipped ELF and use RedBoot's [fis load] command with -d option
  ^^^^^^^^^^^^^^

Ups, I should correct myself. That should be compressed binary BFD.

> (decompress).  Any corruption in your gzip file will be found by gzip
> layer as well. Gzip has a nice crc checking. It quite works. There is a
> demo below
> 
> Let's do it in shell
> 
> make hello

objcopy -O binary hello ;# <-- I passed this conversion

> gzip hello
> nano hello.gz ; imitate a corruption :-)
> 
> and this one let's do in RedBoot
> 
> load -r -b %{freememlo}
> fis create hello.gz
> fis load -d hello.gz
> decompression error: invalid literal/lengths set
> 
> If you can see, we catch that corruption before a run! More that, I
> build-in GUNZIP behavior in RedBoot every time to decrease an upload
> time when I use Ymodem to load ELFs. Gzipped, even non-stripped ELF
> files don't eat my FLASH.
> 
> Note: your redboot_ROM.ecm should contain such things
> 
> cdl_configuration eCos {
> ...
>     package CYGPKG_COMPRESS_ZLIB current ;
> };
> 
> ...
> 
> cdl_option CYGBLD_BUILD_REDBOOT_WITH_GUNZIP {
>     user_value 1
> };
> 
> 
> -- Sergei

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list