/* The arguments follow the return address */
sf.Params[0] = (_ADDR) *++framep;
- /* Hack for XP/2K3 WOW64. If the first stack param points to the
- application entry point, we can only fetch one additional
- parameter. Accessing anything beyond this address results in
- a SEGV. This is fixed in Vista/2K8 WOW64. */
- if (wincap.has_restricted_stack_args () && sf.Params[0] == 0x401000)
- nparams = 2;
for (unsigned i = 1; i < nparams; i++)
sf.Params[i] = (_ADDR) *++framep;
}
has_mandatory_integrity_control:false,
needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false,
- has_restricted_stack_args:false,
has_transactions:false,
has_sendmsg:false,
has_broken_udf:true,
has_mandatory_integrity_control:false,
needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false,
- has_restricted_stack_args:true,
has_transactions:false,
has_sendmsg:false,
has_broken_udf:true,
has_mandatory_integrity_control:true,
needs_count_in_si_lpres2:true,
has_gaa_largeaddress_bug:true,
- has_restricted_stack_args:false,
has_transactions:true,
has_sendmsg:true,
has_broken_udf:false,
has_mandatory_integrity_control:true,
needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:true,
- has_restricted_stack_args:false,
has_transactions:true,
has_sendmsg:true,
has_broken_udf:false,
has_mandatory_integrity_control:true,
needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false,
- has_restricted_stack_args:false,
has_transactions:true,
has_sendmsg:true,
has_broken_udf:false,
has_mandatory_integrity_control:true,
needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false,
- has_restricted_stack_args:false,
has_transactions:true,
has_sendmsg:true,
has_broken_udf:false,
has_mandatory_integrity_control:true,
needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false,
- has_restricted_stack_args:false,
has_transactions:true,
has_sendmsg:true,
has_broken_udf:false,
#endif
{
((wincaps *)caps)->needs_count_in_si_lpres2 = false;
- ((wincaps *)caps)->has_restricted_stack_args = false;
((wincaps *)caps)->wow64_has_secondary_stack = false;
((wincaps *)caps)->has_gaa_largeaddress_bug = false;
((wincaps *)caps)->has_broken_prefetchvm = false;
unsigned has_mandatory_integrity_control : 1;
unsigned needs_count_in_si_lpres2 : 1;
unsigned has_gaa_largeaddress_bug : 1;
- unsigned has_restricted_stack_args : 1;
unsigned has_transactions : 1;
unsigned has_sendmsg : 1;
unsigned has_broken_udf : 1;
bool IMPLEMENT (has_mandatory_integrity_control)
bool IMPLEMENT (needs_count_in_si_lpres2)
bool IMPLEMENT (has_gaa_largeaddress_bug)
- bool IMPLEMENT (has_restricted_stack_args)
bool IMPLEMENT (has_transactions)
bool IMPLEMENT (has_sendmsg)
bool IMPLEMENT (has_broken_udf)