zsh and gcc…
One thing that annoyed me at my selfcompiled zsh-binary was that zsh changed path to ‘/’ when starting up. Now I could fix that behaviour:
$ echo $CFLAGS
-O9 -funroll-loops -ffast-math -mcpu=pentium4 -march=pentium4 \
-fomit-frame-pointer -fno-exceptions -malign-double
$ ls -lah Src/zsh| awk '{print $5}'
566K
$ ./Src/zsh -f -c pwd
/
[...]
$ echo $CFLAGS
-O9 -funroll-loops -ffast-math -mcpu=pentium4 -march=pentium4 \
-fomit-frame-pointer -fno-exceptions
$ ls -lah Src/zsh| awk '{print $5}'
565K
$ ./Src/zsh -f -c pwd
/tmp/zsh-4.2.1
So the problem is the “-malign-double”. But why? According to acovea march=pentium4 implies the option -malign-double and it also implies ‘-mcpu=pentium4, -msse, -msse2, and -mmmx’. gcccpuopt says I should use “-march=pentium4 -mfpmath=sse -msse2 -mmmx”. Ok, give it another try:
$ echo $CFLAGS
-O9 -funroll-loops -ffast-math -fomit-frame-pointer \
-fno-exceptions -malign-double
$ ls -lah Src/zsh | awk '{print $5}'
575K
$ ./Src/zsh -f -c pwd
/
[...]
$ echo $CFLAGS
-O9 -funroll-loops -ffast-math -fomit-frame-pointer \
-fno-exceptions
$ ls -lah Src/zsh | awk '{print $5}'
573K
$ ./Src/zsh -f -c pwd
/tmp/zsh-4.2.1
$ echo $CFLAGS
-march=pentium4 -mfpmath=sse -msse2 -mmmx
$ ls -lah Src/zsh | awk '{print $5}'
518K
$ ./Src/zsh -f -c pwd
/tmp/zsh-4.2.1
Details of my system:
$ gcc --version | head -1 gcc (GCC) 3.3.4 (Debian 1:3.3.4-9) $ cat /proc/cpuinfo|grep 'model name' | uniq model name : Intel(R) Pentium(R) 4 CPU 2.40GHz
Very strange behaviour for me.