delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2012/03/14/14:28:51

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp AT delorie DOT com
Message-ID: <4F60E096.2060106@iki.fi>
Date: Wed, 14 Mar 2012 19:16:54 +0100
From: Andris Pavenis <andris DOT pavenis AT iki DOT fi>
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:11.0) Gecko/20120308 Thunderbird/11.0
MIME-Version: 1.0
To: djgpp AT delorie DOT com
CC: Claude Freeman <sdoom4 AT gmail DOT com>
Subject: Re: CC1.EXE/GCC.EXE crashes with SIGILL, hard.
References: <16777375 DOT 1302 DOT 1331688966231 DOT JavaMail DOT geo-discussion-forums AT vbat19>
In-Reply-To: <16777375.1302.1331688966231.JavaMail.geo-discussion-forums@vbat19>
Reply-To: djgpp AT delorie DOT com

On 14.3.2012 2:36, Claude Freeman wrote:
> Hello!
>
> I have a Pentium MMX CPU with around 48 MB RAM. I run Win95c, It's mostly for simple programming practice. I'm trying to use DJGPP to compile a simple hello world program in C, yet instead of a pretty program I get crash dump on my face.
>
> here is the output of all I can give you thus far.
>
> My SET environment...
>
>
> TMP=C:\WINDOWS\TEMP
> TEMP=C:\WINDOWS\TEMP
> PROMPT=$p$g
> winbootdir=C:\WINDOWS
> COMSPEC=C:\WINDOWS\COMMAND.COM
> SOUND=C:\PROGRA~1\CREATIVE\CTSND
> MIDI=SYNTH:1 MAP:E
> windir=C:\WINDOWS
> BLASTER=A220 I5 D1 H1 P330 T6
> PATH=C:\DJGPP\BIN;C:\WINDOWS;C:\WINDOWS\COMMAND
> DJGPP=c:\djgpp\djgpp.env
> CMDLINE=gcc foo.c -v
>
> The nasty crash dialog I get (there's no dump, for some unknown reason)
>
> When compiling the program with -v , I'll get some output but it's only declaring flags and whatnot:
>
> C:\REMOOD>gcc foo.c -v
> Using built-in specs.
> COLLECT_GCC=c:/djgpp/bin/gcc.exe
> COLLECT_LTO_WRAPPER=c:/djgpp/bin/../libexec/gcc/djgpp/4.62/lto-wrapper.exe
> Target: djgpp
> Configured with: /v203/gcc-4.62/configure djgpp --prefix=/dev/env/DJDIR --disable-nls --disable-werror --enable-languages=c,c++,fortran,objc,obj-c++,ada -enable-libquadmath-support
> Thread model: single
> gcc version 4.6.2 (GCC)
> COLLECT_GCC_OPTIONS='-v' '-mtune=pentium' '-march=pentium'
>   c:/djgpp/bin/../libexec/gcc/djgpp/4.62/cc1.exe -quiet -v -iprefix c:/djgpp/bin/../lib/gcc/djgpp/4.62/ -remap foo.c -quiet -dumpbase foo.c -mtune=pentium -march=pentium -auxbase foo -version -o c:/djgpp/tmp/ccDUEyWn.s
> Exiting due to signal SIGILL
> Invalid Opcode at eip=007bbdc8
> eax=006153eb ebx=00ba4738 ecx=00ba4740 edx=00615779 esi=00ba4740 edi=00aa4774
> ebp=00ba474c esp=00ba4734 program=C:\DJGPP\LIBEXEC\GCC\DJGPP\4.62\CC1.EXE
> cs: sel=00ff  base=8310e000  limit=00baffff
> ds: sel=0107  base=8310e000  limit=00baffff
> es: sel=0107  base=8310e000  limit=00baffff
> fs: sel=00df  base=00013350  limit=0000ffff
> gs: sel=0117  base=00000000  limit=0010ffff
> ss: sel=0107  base=8310e000  limit=00baffff
> App stack: [00ba4774..00aa4774]  Exceptn stack: [00aa417c..00aa223c]
>
> Call frame traceback EIPs:
>    0x007bbdc8
>    0x007a5295
>    0x0079bb17
I only verified build on Core2 where I built
(I do not have anything older). Still had
build directory on 1Tb USB drive so:

1) bfdsymify gives

C:\REMOOD>gcc foo.c -v
Using built-in specs.
COLLECT_GCC=c:/djgpp/bin/gcc.exe
COLLECT_LTO_WRAPPER=c:/djgpp/bin/../libexec/gcc/djgpp/4.62/lto-wrapper.exe
Target: djgpp
Configured with: /v203/gcc-4.62/configure djgpp --prefix=/dev/env/DJDIR 
--disabl
e-nls --disable-werror --enable-languages=c,c++,fortran,objc,obj-c++,ada 
-enable
-libquadmath-support
Thread model: single
gcc version 4.6.2 (GCC)
COLLECT_GCC_OPTIONS='-v' '-mtune=pentium' '-march=pentium'
  c:/djgpp/bin/../libexec/gcc/djgpp/4.62/cc1.exe -quiet -v -iprefix 
c:/djgpp/bin/
../lib/gcc/djgpp/4.62/ -remap foo.c -quiet -dumpbase foo.c 
-mtune=pentium -march
=pentium -auxbase foo -version -o c:/djgpp/tmp/ccDUEyWn.s
Exiting due to signal SIGILL
Invalid Opcode at eip=007bbdc8
eax=006153eb ebx=00ba4738 ecx=00ba4740 edx=00615779 esi=00ba4740 
edi=00aa4774
ebp=00ba474c esp=00ba4734 program=C:\DJGPP\LIBEXEC\GCC\DJGPP\4.62\CC1.EXE
cs: sel=00ff  base=8310e000  limit=00baffff
ds: sel=0107  base=8310e000  limit=00baffff
es: sel=0107  base=8310e000  limit=00baffff
fs: sel=00df  base=00013350  limit=0000ffff
gs: sel=0117  base=00000000  limit=0010ffff
ss: sel=0107  base=8310e000  limit=00baffff
App stack: [00ba4774..00aa4774]  Exceptn stack: [00aa417c..00aa223c]

Call frame traceback EIPs:
   0x007bbdc8 init_vectorized_lexer+141, file insn-recog.c
   0x007a5295 __main+53, file d0008.S
   0x0079bb17 __crt1_startup+143, file unwind-dw2-fde.c

 From GDB one gets:

(gdb) disass init_vectorized_lexer
Dump of assembler code for function init_vectorized_lexer:
    0x007bbd3b <+0>:        push   %ebp
    0x007bbd3c <+1>:        mov    %esp,%ebp
    0x007bbd3e <+3>:        push   %esi
    0x007bbd3f <+4>:        push   %ebx
    0x007bbd40 <+5>:        sub    $0x10,%esp
    0x007bbd43 <+8>:        lea    -0x14(%ebp),%ebx
    0x007bbd46 <+11>:        lea    -0x10(%ebp),%eax
    0x007bbd49 <+14>:        lea    -0xc(%ebp),%esi
    0x007bbd4c <+17>:        push   %esi
    0x007bbd4d <+18>:        mov    %ebx,%ecx
    0x007bbd4f <+20>:        push   %eax
    0x007bbd50 <+21>:        mov    %ebx,%edx
    0x007bbd52 <+23>:        mov    $0x1,%eax
    0x007bbd57 <+28>:        movl   $0x0,-0x10(%ebp)
    0x007bbd5e <+35>:        movl   $0x0,-0xc(%ebp)
    0x007bbd65 <+42>:        call   0x7bbcd8 <__get_cpuid>
    0x007bbd6a <+47>:        pop    %edx
    0x007bbd6b <+48>:        test   %eax,%eax
    0x007bbd6d <+50>:        pop    %ecx
    0x007bbd6e <+51>:        je     0x7bbd9b <init_vectorized_lexer+96>
    0x007bbd70 <+53>:        mov    $0x615855,%edx
    0x007bbd75 <+58>:        testb  $0x10,-0xe(%ebp)
    0x007bbd79 <+62>:        jne    0x7bbdcb <init_vectorized_lexer+144>
---Type <return> to continue, or q <return> to quit---
    0x007bbd7b <+64>:        mov    -0xc(%ebp),%eax
    0x007bbd7e <+67>:        mov    $0x6157e4,%edx
    0x007bbd83 <+72>:        test   $0x4000000,%eax
    0x007bbd88 <+77>:        jne    0x7bbdcb <init_vectorized_lexer+144>
    0x007bbd8a <+79>:        test   $0x2000000,%eax
    0x007bbd8f <+84>:        mov    $0x615779,%edx
    0x007bbd94 <+89>:        mov    $0x6153eb,%eax
    0x007bbd99 <+94>:        jmp    0x7bbdc8 <init_vectorized_lexer+141>
    0x007bbd9b <+96>:        mov    %ebx,%ecx
    0x007bbd9d <+98>:        mov    %ebx,%edx
    0x007bbd9f <+100>:        mov    $0x80000001,%eax
    0x007bbda4 <+105>:        push   %esi
    0x007bbda5 <+106>:        push   %ebx
    0x007bbda6 <+107>:        call   0x7bbcd8 <__get_cpuid>
    0x007bbdab <+112>:        pop    %edx
    0x007bbdac <+113>:        test   %eax,%eax
    0x007bbdae <+115>:        pop    %ecx
    0x007bbdaf <+116>:        mov    $0x6153eb,%edx
    0x007bbdb4 <+121>:        je     0x7bbdcb <init_vectorized_lexer+144>
    0x007bbdb6 <+123>:        mov    -0xc(%ebp),%eax
    0x007bbdb9 <+126>:        and    $0x408000,%eax
    0x007bbdbe <+131>:        cmp    $0x408000,%eax
    0x007bbdc3 <+136>:        mov    $0x615779,%eax
    0x007bbdc8 <+141>:        cmove  %eax,%edx
---Type <return> to continue, or q <return> to quit---
    0x007bbdcb <+144>:        mov    %edx,0x9bd110
    0x007bbdd1 <+150>:        lea    -0x8(%ebp),%esp
    0x007bbdd4 <+153>:        pop    %ebx
    0x007bbdd5 <+154>:        pop    %esi
    0x007bbdd6 <+155>:        pop    %ebp
    0x007bbdd7 <+156>:        ret
End of assembler dump.
(gdb)

According to http://en.wikipedia.org/wiki/X86_instruction_listings
instruction CMOVE is added in Pentium Pro, so Pentium MMX
does not have it

So it seems that specifying host machine does not seem to be sufficient
any more (even it shoud be sufficient). I had:

build=i586-pc-msdosdjgpp
host=i586-pc-msdosdjgpp
target=i586-pc-msdosdjgpp

in generated Makefile in directory gcc for stage 3.

It seems that all 4.6.X versions have the same problem (I checked
disassembler output for 4.6.0). Currently I can only suggest to
try older version (for example some 4.5.X,
4.4.X, etc).  It would be nice to get
feedback about results.

Andris

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019