http://bugs.winehq.org/show_bug.cgi?id=10273
--- Comment #24 from Peter Beutner p.beutner@gmx.net 2007-11-08 19:50:24 --- (In reply to comment #23)
Not the case here. Gcc's stack smashing guard code won't solve this problem
It won't solve the problem. But it definitely has an influence on how many functions pass the safedisc check. Was just a thought that this might explain the differences we are seeing.
The stack cookie/guard setup code is inserted *after* PIC register load, so no help from compiler here.
no, sometimes it is inserted before the PIC register load. see: 000b0940 <GetSystemMetrics>: b0940: 55 push %ebp b0941: 89 e5 mov %esp,%ebp b0943: 83 ec 58 sub $0x58,%esp b0946: 8b 45 08 mov 0x8(%ebp),%eax b0949: 89 5d f4 mov %ebx,-0xc(%ebp) b094c: 65 8b 15 14 00 00 00 mov %gs:0x14,%edx b0953: 89 55 f0 mov %edx,-0x10(%ebp) b0956: 31 d2 xor %edx,%edx b0958: e8 33 57 f6 ff call 16090 <__i686.get_pc_thunk.bx> b095d: 81 c3 97 86 03 00 add $0x38697,%ebx
When compiled with -fstack-protector this function will pass the safedisc check, without it would fail.