Mail Archives: djgpp/2012/03/14/18:45:21.1
On Wednesday, March 14, 2012 1:16:54 PM UTC-5, Andris Pavenis wrote:
> 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
well, don't that beat all. I bet that's the problem! I'll stil do the dissass and see what comes up, but if it's like last time, it actually gave me a protection fault trying to access that instruction.
- Raw text -