That may indeed be it. Is there any known way short of looking a the asm dump of a binary for telling what CPU instructions are used? When asked I was directed to readelf and file and they work great for SPARC based development, so I had assumed them to be correct for pc development as well.
Thanks in advance for the enlightenment. On 25 Aug 2004 at 18:23, Stefan O'Rear wrote: > On Wed, Aug 25, 2004 at 05:48:45PM -0700, [EMAIL PROTECTED] wrote: > > For the past few weeks I have been co-working on a private project. I > > have done allot of work on it and I would hate to have to start over. > > > > The makefile I created for this project explicitly tells the compiler > > (g++) to compile the binary using i686 (-march=pentiumpro) assembly > > instructions and internal timeings. Yet for some [explitive] > > [explitive] reason it refuses to do so and both ?file? amd ?readelf? > > tell me it always compiles for a bare i386 despite my explicit > > commands otherwise. > > > > Two questions: > > Why the [explitive] does this [explitive] thing not compile the end > > result into a i686 only binary as I asked it to? > > How the [explitive] do I fix it? > > > > I have read the gcc/g++ manual pages. I have googled. I have spent > > the past hour dedicating myself to this problem, and nothing seems to > > work. > > > > This is [b]really[/b] getting to me. Please help. > > C file: > > int main(int argc) { > int sam = 0; > if (argc > 1) sam = argc; > return sam; > } > > Compile: > > ~ %% gcc -o testC test.c -mcpu=pentiumpro -march=pentiumpro -O3 > > Dissassembly Excerpt: > > 08048320 <main>: > 8048320: 55 push %ebp > 8048321: 31 c0 xor %eax,%eax > 8048323: 89 e5 mov %esp,%ebp > 8048325: 83 ec 08 sub $0x8,%esp > 8048328: 8b 4d 08 mov 0x8(%ebp),%ecx > 804832b: 83 e4 f0 and $0xfffffff0,%esp > 804832e: 83 f9 02 cmp $0x2,%ecx > 8048331: 0f 4d c1 cmovge %ecx,%eax > 8048334: 89 ec mov %ebp,%esp > 8048336: 5d pop %ebp > 8048337: c3 ret > > See that cmovge - that's a Pentium ONLY insn. > > And readelf says: > Machine: Intel 80386 > > Is that ^^^ why you thing gcc won't make 686 programs? > > > 1. A PPro exec is the same as a 386 exec except for the insns. ReadELF > will tell you it's a 386 exec even if you have a PPro exec. > > Please comment. If it doesn't have 686 asm and could benefit from it, we > (atleast I) need more info. > > P.S. I use woody with a GCC-3.3 from unstable and the ness. libs. > > > -- > To UNSUBSCRIBE, email to [EMAIL PROTECTED] > with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED] > > -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]