From: "Bill Stoddard" <[EMAIL PROTECTED]>
Sent: Monday, January 21, 2002 9:44 AM


> Upon closer inspection, ap_rprintf() has been NON_STD for ages, so it's fine as is. 
>Not
> sure why it showed up on Rowe-san's list :-o


It went to _NONSTD in 1.302, and back to std in 1.309.

The tricky bit - it never picked up the discrepancy - and for that time 
http_protocol.h was actually in-sync.  I didn't add http_protocol.h 
to my list to backout because - it wasn't patched in the first place.
I didn't pick up that the .c and .h were out-of-sync, because my commit
normalized them, and never included http_protocol.h.

Now that we've discovered this doesn't cause incompatibility, we can
put them all in sync, if you like, to what MSVC actually compiled.

I've written (attached) a little footest to illustrate what the compiler
does with varargs, and compiled from c to asm, and it's very interesting.

The following (decorated, default) exported symbol names, and the attached 
asm output from footest and footest2 illustrate that _stdcall is ignored 
for vararg prototypes :)

fn_one_plus_export_cdecl
fn_one_plus_export_stdcall
fn_two_args_export_cdecl
_fn_two_args_export_stdcall@8

fn_one_plus_import_cdecl
fn_one_plus_import_stdcall
fn_two_args_import_cdecl
_fn_two_args_import_stdcall@8

To replicate;

cl footest.c footest2.c  will create you this example
cl -c -Fafootest.asm footest.c  creates you the asm dump

Bill

Attachment: footest2.c
Description: Binary data

Attachment: footest.c
Description: Binary data

Attachment: footest2.asm
Description: Binary data

Attachment: footest.asm
Description: Binary data

Reply via email to