require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&_STDARG_H_)) {
    eval 'sub _STDARG_H_ () {1;}' unless defined(&_STDARG_H_);
    if(defined( &__GNUC__)  && (defined(&__GNUC__) ? &__GNUC__ : 0) >= 3) {
	unless(defined(&__GNUC_VA_LIST)) {
	    eval 'sub __GNUC_VA_LIST () {1;}' unless defined(&__GNUC_VA_LIST);
	}
	eval 'sub va_start {
	    my($v,$l) = @_;
    	    eval q( &__builtin_stdarg_start(($v),$l));
	}' unless defined(&va_start);
	eval 'sub va_end () { &__builtin_va_end;}' unless defined(&va_end);
	eval 'sub va_arg () { &__builtin_va_arg;}' unless defined(&va_arg);
	eval 'sub va_copy {
	    my($d,$s) = @_;
    	    eval q( &__builtin_va_copy(($d),($s)));
	}' unless defined(&va_copy);
	eval 'sub __va_copy {
	    my($d,$s) = @_;
    	    eval q( &__builtin_va_copy(($d),($s)));
	}' unless defined(&__va_copy);
    } else {
	require 'machine/stdarg.ph';
    }
}
1;
