FPU Bounds [Was: Re: openssh4.0 upgrade]
Matthew Dillon
dillon at apollo.backplane.com
Wed Mar 23 01:56:13 PST 2005
This is what GCC-3.4 generates with the stdarg.h commit you made
(noting here that all you really did was replace our manual va_arg
with GCC's internal one). Notice something odd at offset +139 ?
The word 'broken' doesn't even begin to describe the complete
!@#$up gcc-3.4 generated.
In anycase, it looks like GCC just breaks when you use the internal
va_arg with a 'char' type. It is supposed to promote the argument
to an int and then cast it to a char. Instead it generates, well,
what you see.
I recommend that for now you revert the stdarg.h changes.
-Matt
0xc01be7ee <ppb_MS_init_msq+90>: je 0xc01be81f <ppb_MS_init_msq+139>
0xc01be7f0 <ppb_MS_init_msq+92>: cmp $0x1,%eax
0xc01be7f3 <ppb_MS_init_msq+95>: jg 0xc01be7fb <ppb_MS_init_msq+103>
0xc01be7f5 <ppb_MS_init_msq+97>: test %eax,%eax
0xc01be7f7 <ppb_MS_init_msq+99>: je 0xc01be807 <ppb_MS_init_msq+115>
0xc01be7f9 <ppb_MS_init_msq+101>: jmp 0xc01be851 <ppb_MS_init_msq+189>
0xc01be7fb <ppb_MS_init_msq+103>: cmp $0x2,%eax
0xc01be7fe <ppb_MS_init_msq+106>: je 0xc01be821 <ppb_MS_init_msq+141>
0xc01be800 <ppb_MS_init_msq+108>: cmp $0x3,%eax
0xc01be803 <ppb_MS_init_msq+111>: je 0xc01be839 <ppb_MS_init_msq+165>
0xc01be805 <ppb_MS_init_msq+113>: jmp 0xc01be851 <ppb_MS_init_msq+189>
0xc01be807 <ppb_MS_init_msq+115>: mov %ebx,%eax
0xc01be809 <ppb_MS_init_msq+117>: shl $0x4,%eax
0xc01be80c <ppb_MS_init_msq+120>: lea (%eax,%ecx,4),%edx
0xc01be80f <ppb_MS_init_msq+123>: mov %esi,%eax
0xc01be811 <ppb_MS_init_msq+125>: lea 0x4(%esi),%esi
0xc01be814 <ppb_MS_init_msq+128>: mov (%eax),%eax
0xc01be816 <ppb_MS_init_msq+130>: mov 0x8(%ebp),%ecx
0xc01be819 <ppb_MS_init_msq+133>: mov %eax,0x4(%edx,%ecx,1)
0xc01be81d <ppb_MS_init_msq+137>: jmp 0xc01be869 <ppb_MS_init_msq+213>
0xc01be81f <ppb_MS_init_msq+139>: int $0x5
0xc01be821 <ppb_MS_init_msq+141>: mov %ebx,%eax
0xc01be823 <ppb_MS_init_msq+143>: shl $0x4,%eax
...
More information about the Submit
mailing list