On Sun, 2008-03-30 at 16:27 -0400, Mike Frysinger wrote: > The envcrc.c does sizeof(unsigned long) when calculating the crc, but this > is done with the build toolchain instead of the target toolchain, so if > the build is a 64bit system but the target is 32bits, the size will > obviously be wrong. This introduces a sizeof.sh script to calculate the > required sizeof() value of any type with any compiler. > > Signed-off-by: Mike Frysinger <[EMAIL PROTECTED]>
[SNIP] > diff --git a/tools/sizeof.sh b/tools/sizeof.sh > new file mode 100755 > index 0000000..e17596c > --- /dev/null > +++ b/tools/sizeof.sh > @@ -0,0 +1,35 @@ > +#!/bin/sh > +# Get the sizeof(type) for a compiler > + > +type="$*" > +CC=${CC:-gcc} > + > +if [ -z "$type" ] ; then > + echo "Usage: sizeof.sh <type>" 1>&2 > + exit 1 > +fi > + > +test_size() { > + cat <<-EOF > sizeof.c > + typedef $type ac__type_sizeof_; > + int main() { > + static int test_array [1 - 2 * !(((long int) (sizeof > (ac__type_sizeof_))) <= $size)]; > + test_array [0] = 0; > + return 0; > + } > + EOF > + ${CC} -c sizeof.c >/dev/null 2>&1 > + ret=$? > + rm -f sizeof.[co] > + return $ret > +} > + > +size=0 > +while [ ${size} -lt 64 ] ; do > + if test_size ${size} ; then > + echo ${size} > + exit 0 > + fi > + ((size+=1)) > +done > +exit 1 Cool script, which reminds me about something: Is it possible to define a script that can output if the cpu is Big Endian or Little Endian? If one ever wanted to port the optimised crc32 from linux to u-boot one needs to know the endian of the CPU. Jocke ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users