GCC 4.6.x invalid code generation (Developers)
> care to minimize targets for such "old" tech, presumably. Esp. since most
> Linux distros don't actively support anything older than 686 anymore.
But there are still used and manufactured various low-power embedded PCs with old and simple x86 core like vortex86 and other SoC with 386/486 core, even may lack FPU. Linux can run on such machines well so they should care...
> Only a good emulator perhaps, which will segfault or crash on invalid
> opcode. Doesn't QEMU have a -cpu flag? Otherwise, it's difficult because of
> self-modifying code and inadvertently disassembling data (which looks like
> code but isn't). E.g. DOSBox only supports a 486 DX with CPUID, nothing
> newer, so it's easy to test (crash!) there, heh.
Running the program is not enough good test. Code may branch widely depending on input data so you don't have a chance to test all the code runtime...
> I think that's a false positive. I'd be very surprised. I've run "stock"
> DJGPP on 586 machines before, so that can't be it. Unless you mean a recent
> compile of CVS snapshot with latest GCC 4.6.x, which is where the bug lies.
> Certainly "stock" DJGPP libc and libm from 2.03p2 used GCC 2.8.1 (no 686
> optimizations available) and GCC 3.3.2 for 2.04 (and IIRC that never had
> any problems on my 586 [Pentium 166 with no MMX]).
As you can see from file dates I use updated/CVS DJDEV. But now I become suspicious to objdump. It detected CMOVs in libm.a even from very old djdev 2.03. I tried older 3.x GCC and still getting CMOVs in some object files. I also found, that X264 use CMOV in some assembler source modules so it cannot be disabled. So this may be the reason why FFMPEG crashed on some compression target and din't crashed on other. But as I said I found CMOV also in .o files compiled from .c files that doesn't have inline ASM or anything else indicating CMOV. Even more confusing is that CMOV was produced also with GCC 3.x. When I tried to compile .C file into assembler .S file I didn't see CMOV there. So objdump is just kidding me or WTF? It seem's the right time to go sleep now... :P
---
DOS gives me freedom to unlimited HW access.
Complete thread:
- DJGPP/GCC 4.6.2 invalid code generation when -march restrict - RayeR, 10.04.2012, 00:38 (Developers)
![Open in board view [Board]](img/board_d.gif)
![Open in mix view [Mix]](img/mix_d.gif)
- GCC 4.6.x invalid code generation - Rugxulo, 10.04.2012, 02:01
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 03:58
- GCC 4.6.x invalid code generation - Rugxulo, 10.04.2012, 05:58
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 13:44
- GCC 4.6.x invalid code generation - marcov, 10.04.2012, 16:19
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 17:44
- GCC 4.6.x invalid code generation - RayeR, 14.04.2012, 23:28
- GCC 4.6.x invalid code generation: MP [PATCH] configure cmov - Arjay, 15.04.2012, 09:05
- GCC 4.6.x invalid code generation: MP [PATCH] configure cmov - RayeR, 15.04.2012, 14:44
- GCC 4.6.x invalid code generation: MP [PATCH] configure cmov - RayeR, 26.04.2012, 01:50
- GCC 4.6.x invalid code generation - Rugxulo, 26.04.2012, 09:06
- GCC 4.6.x invalid code generation - RayeR, 28.04.2012, 02:14
- x264 0.124 update - RayeR, 01.05.2012, 17:57
- CMOVNTQ and multiple file access - DOS386, 16.06.2012, 12:53
- Multiple file access, FreeDOS file locking support - ecm, 16.06.2012, 14:31
- multiple file access / IUP 0.67 - Rugxulo, 16.06.2012, 17:48
- multiple file access / IUP 0.67 - DOS386, 17.06.2012, 09:33
- CMOVNTQ and multiple file access - RayeR, 19.06.2012, 20:38
- CMOVNTQ and multiple file access - RayeR, 21.06.2012, 04:32
- load SHARE - ecm, 21.06.2012, 05:06
- load SHARE - RayeR, 21.06.2012, 12:40
- load SHARE - ecm, 21.06.2012, 12:47
- load SHARE - RayeR, 21.06.2012, 19:58
- load SHARE - RayeR, 21.06.2012, 23:31
- load SHARE - ecm, 22.06.2012, 14:03
- load SHARE - RayeR, 21.06.2012, 19:58
- load SHARE - ecm, 21.06.2012, 12:47
- load SHARE - RayeR, 21.06.2012, 12:40
- load SHARE - ecm, 21.06.2012, 05:06
- CMOVNTQ and multiple file access - RayeR, 21.06.2012, 04:32
- GCC 4.6.x invalid code generation - RayeR, 28.04.2012, 02:14
- GCC 4.6.x invalid code generation - Rugxulo, 26.04.2012, 09:06
- GCC 4.6.x invalid code generation: MP [PATCH] configure cmov - RayeR, 26.04.2012, 01:50
- GCC 4.6.x invalid code generation: MP [PATCH] configure cmov - RayeR, 15.04.2012, 14:44
- GCC 4.6.x invalid code generation: MP [PATCH] configure cmov - Arjay, 15.04.2012, 09:05
- GCC 4.6.x invalid code generation - RayeR, 14.04.2012, 23:28
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 17:44
- GCC 4.6.x invalid code generation - marcov, 10.04.2012, 16:19
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 13:44
- GCC 4.6.x invalid code generation - Rugxulo, 10.04.2012, 05:58
- GCC 4.6.x invalid code generation - marcov, 10.04.2012, 16:16
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 17:49
- GCC 4.6.x invalid code generation - RayeR, 10.04.2012, 03:58
- GCC 4.6.x invalid code generation - Rugxulo, 10.04.2012, 02:01
Mix view