http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39333

Ryan Hill <dirtyepic at gentoo dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dirtyepic at gentoo dot org

--- Comment #24 from Ryan Hill <dirtyepic at gentoo dot org> 2011-03-26 
07:31:02 UTC ---
I'm seeing this exact behaviour with 4.6 (r171422) with grub-0.97. 
Unfortunately again there is no self-contained test case.

It appears "stage2" is being miscompiled.  At least, if I copy that file from a
4.5 build everything works.

This is how I can reproduce it:

- build grub-0.97.  The object files are built like

gcc -m32 -DHAVE_CONFIG_H -I. -I.. -I../stage1  -Wall -Wmissing-prototypes
-Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1
-falign-functions=1 -Wundef -Os -fno-stack-protector -fno-builtin -nostdinc 
-DSUPPORT_SERIAL=1 -DSUPPORT_HERCULES=1 -DSUPPORT_GRAPHICS=1 -DFSYS_EXT2FS=1
-DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_UFS2=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1
-DFSYS_VSTAFS=1 -DFSYS_JFS=1 -DFSYS_XFS=1 -DFSYS_ISO9660=1
-DUSE_MD5_PASSWORDS=1 -g -MT pre_stage2_exec-stage2.o -MD -MP -MF
.deps/pre_stage2_exec-stage2.Tpo -c -o pre_stage2_exec-stage2.o `test -f
'stage2.c' || echo './'`stage2.c

- after installation, run `grub-install /dev/sda`

 # grub-install /dev/sda

    GNU GRUB  version 0.97  (640K lower / 9216K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]
grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup  --stage2=/boot/grub/stage2 --prefix=/grub (hd0)
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  24 sectors are embedded.
succeeded
 Running "install --stage2=/boot/grub/stage2 /grub/stage1 (hd0) (hd0)1+24 p
(hd0,0)/grub/stage2 /grub/menu.lst"... failed

Error 6: Mismatched or corrupt version of stage1/stage2
grub> quit


-fno-inline-small-functions works
-fno-inline-small-functions -finline-functions works
-fno-guess-branch-probability works
-fno-ipa-profile works
-fno-strict-aliasing works with -Os but not -O2


I understand this is impossible to debug.  I'm just hoping it might spin some
wheels.  Grub isn't something we like to miscompile. ;) Let me know what other
info/files would be useful.

Reply via email to