setup: gcc-4.5 compatibility

Yaakov (Cygwin/X) yselkowitz@users.sourceforge.net
Fri Jul 23 17:45:00 GMT 2010


On Thu, 2010-07-22 at 22:50 -0400, Charles Wilson wrote:
> As noted here:
> http://cygwin.com/ml/cygwin-apps/2010-07/msg00175.html
> 
> I was able to build setup.exe using i686-pc-mingw32-gcc and only
> setup-gcc45.patch (that is, without setup-no-autoload.patch) and it worked.
> 
> The key difference, I think, is that all of the
> mingw-{zlib,bzip2,xz,gpg-error,gcrypt} packages, and setup itself were
> compiled with -mms-bitfields.

No, that's not it, I was able to get crashes -mms-bitfields as well.
Besides, it doesn't make sense that autoload.c would work any better
with or without -mms-bitfields, as long as it is compatible with the
rest of the mingw stack.  That's not to say that we shouldn't build
mingw-* with -mms-bitfields, but that's tangential to this issue.

The problem is with optimization in autoload.c.  By default, configure
sets C[XX]FLAGS='-g -O2', and autoload.c is not compatible with that.  I
even tried -O1 and setup.exe didn't work, but it does work with -O0
(even just for autoload.c).

I have attached the output of i686-pc-mingw-gcc -S with -O0, -O1, and
-O2; hopefully someone who understands this can propose a fix for
autoload.c (or gcc, depending on where the bug is).  In the meantime,
the attached patch for CVS HEAD simply disables optimization for
autoload.c only, allowing setup.exe to work even with a default
configure (tested with my i686-pc-mingw32-gcc 4.5.20100715).


Yaakov

-------------- next part --------------
	.file	"autoload.c"
	.section .rdata,"dr"
LC0:
	.ascii "wininet\0"
	.data
	.align 4
wininet_info:
	.long	LC0
	.long	0
/APP
		.section .autoload_text,"wx"
		.global	_InternetAttemptConnect@4
	_InternetAttemptConnect@4:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetAttemptConnect\0"
		.section .autoload_text,"wx"
		.global	_InternetCloseHandle@4
	_InternetCloseHandle@4:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetCloseHandle\0"
		.section .autoload_text,"wx"
		.global	_InternetGetLastResponseInfoA@12
	_InternetGetLastResponseInfoA@12:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetGetLastResponseInfoA\0"
		.section .autoload_text,"wx"
		.global	_InternetOpenA@20
	_InternetOpenA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetOpenA\0"
		.section .autoload_text,"wx"
		.global	_InternetOpenUrlA@24
	_InternetOpenUrlA@24:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetOpenUrlA\0"
		.section .autoload_text,"wx"
		.global	_InternetReadFile@16
	_InternetReadFile@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetReadFile\0"
		.section .autoload_text,"wx"
		.global	_InternetSetOptionA@16
	_InternetSetOptionA@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetSetOptionA\0"
		.section .autoload_text,"wx"
		.global	_InternetQueryOptionA@16
	_InternetQueryOptionA@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetQueryOptionA\0"
		.section .autoload_text,"wx"
		.global	_HttpQueryInfoA@20
	_HttpQueryInfoA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"HttpQueryInfoA\0"
		.section .autoload_text,"wx"
		.global	_HttpSendRequestA@20
	_HttpSendRequestA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"HttpSendRequestA\0"
/NO_APP
	.section .rdata,"dr"
LC1:
	.ascii "advapi32\0"
	.data
	.align 4
advapi32_info:
	.long	LC1
	.long	0
/APP
		.section .autoload_text,"wx"
		.global	_AddAccessAllowedAce@16
	_AddAccessAllowedAce@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"AddAccessAllowedAce\0"
		.section .autoload_text,"wx"
		.global	_AllocateAndInitializeSid@44
	_AllocateAndInitializeSid@44:
		call	autoload_common
		.long	advapi32_info
		.ascii	"AllocateAndInitializeSid\0"
		.section .autoload_text,"wx"
		.global	_FreeSid@4
	_FreeSid@4:
		call	autoload_common
		.long	advapi32_info
		.ascii	"FreeSid\0"
		.section .autoload_text,"wx"
		.global	_InitializeAcl@12
	_InitializeAcl@12:
		call	autoload_common
		.long	advapi32_info
		.ascii	"InitializeAcl\0"
		.section .autoload_text,"wx"
		.global	_OpenProcessToken@12
	_OpenProcessToken@12:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenProcessToken\0"
		.section .autoload_text,"wx"
		.global	_SetTokenInformation@16
	_SetTokenInformation@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"SetTokenInformation\0"
		.section .autoload_text,"wx"
		.global	_OpenSCManagerA@16
	_OpenSCManagerA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenSCManagerA\0"
		.section .autoload_text,"wx"
		.global	_CloseServiceHandle@4
	_CloseServiceHandle@4:
		call	autoload_common
		.long	advapi32_info
		.ascii	"CloseServiceHandle\0"
		.section .autoload_text,"wx"
		.global	_OpenServiceA@16
	_OpenServiceA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenServiceA\0"
		.section .autoload_text,"wx"
		.global	_QueryServiceStatus@8
	_QueryServiceStatus@8:
		call	autoload_common
		.long	advapi32_info
		.ascii	"QueryServiceStatus\0"
		.section .autoload_text,"wx"
		.global	_StartServiceA@16
	_StartServiceA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"StartServiceA\0"
/NO_APP
	.section .rdata,"dr"
LC2:
	.ascii "ntdll\0"
	.data
	.align 4
ntdll_info:
	.long	LC2
	.long	0
/APP
		.section .autoload_text,"wx"
		.global	_NtCreateFile@44
	_NtCreateFile@44:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtCreateFile\0"
		.section .autoload_text,"wx"
		.global	_NtOpenFile@24
	_NtOpenFile@24:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtOpenFile\0"
		.section .autoload_text,"wx"
		.global	_NtClose@4
	_NtClose@4:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtClose\0"
		.section .autoload_text,"wx"
		.global	_NtQueryAttributesFile@8
	_NtQueryAttributesFile@8:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtQueryAttributesFile\0"
		.section .autoload_text,"wx"
		.global	_NtQueryInformationFile@20
	_NtQueryInformationFile@20:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtQueryInformationFile\0"
		.section .autoload_text,"wx"
		.global	_NtSetInformationFile@20
	_NtSetInformationFile@20:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtSetInformationFile\0"
		.section .autoload_text,"wx"
		.global	_RtlInitUnicodeString@8
	_RtlInitUnicodeString@8:
		call	autoload_common
		.long	ntdll_info
		.ascii	"RtlInitUnicodeString\0"
		.section .autoload_text,"wx"
		.global	_RtlNtStatusToDosError@4
	_RtlNtStatusToDosError@4:
		call	autoload_common
		.long	ntdll_info
		.ascii	"RtlNtStatusToDosError\0"
		.text
/NO_APP
	.text
	.def	autoload_common;	.scl	3;	.type	32;	.endef
autoload_common:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$56, %esp
	leal	8(%ebp), %eax
	subl	$4, %eax
	movl	(%eax), %eax
	movl	%eax, -12(%ebp)
	movl	-12(%ebp), %eax
	movl	(%eax), %eax
	movl	4(%eax), %eax
	testl	%eax, %eax
	jne	L2
	movl	-12(%ebp), %eax
	movl	(%eax), %eax
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	_LoadLibraryA@4
	subl	$4, %esp
	movl	%eax, -16(%ebp)
	movl	-12(%ebp), %eax
	movl	(%eax), %eax
	movl	-16(%ebp), %edx
	movl	%edx, 4(%eax)
L2:
	movl	-12(%ebp), %eax
	leal	4(%eax), %edx
	movl	-12(%ebp), %eax
	movl	(%eax), %eax
	movl	4(%eax), %eax
	movl	%edx, 4(%esp)
	movl	%eax, (%esp)
	call	_GetProcAddress@8
	subl	$8, %esp
	movl	%eax, -20(%ebp)
	movl	-12(%ebp), %eax
	subl	$5, %eax
	movl	%eax, -24(%ebp)
	movl	-12(%ebp), %eax
	movl	-20(%ebp), %edx
	movl	%edx, %ecx
	subl	%eax, %ecx
	movl	%ecx, %eax
	movl	%eax, -28(%ebp)
	movl	-24(%ebp), %eax
	movb	$-23, (%eax)
	addl	$1, -24(%ebp)
	movl	-28(%ebp), %eax
	movl	%eax, %edx
	movl	-24(%ebp), %eax
	movb	%dl, (%eax)
	addl	$1, -24(%ebp)
	movl	-28(%ebp), %eax
	sarl	$8, %eax
	movl	%eax, %edx
	movl	-24(%ebp), %eax
	movb	%dl, (%eax)
	addl	$1, -24(%ebp)
	movl	-28(%ebp), %eax
	sarl	$16, %eax
	movl	%eax, %edx
	movl	-24(%ebp), %eax
	movb	%dl, (%eax)
	addl	$1, -24(%ebp)
	movl	-28(%ebp), %eax
	sarl	$24, %eax
	movl	%eax, %edx
	movl	-24(%ebp), %eax
	movb	%dl, (%eax)
	addl	$1, -24(%ebp)
	leal	4(%ebp), %eax
	movl	-24(%ebp), %edx
	subl	$5, %edx
	movl	%edx, (%eax)
	leave
	ret
	.def	_LoadLibraryA@4;	.scl	2;	.type	32;	.endef
	.def	_GetProcAddress@8;	.scl	2;	.type	32;	.endef
-------------- next part --------------
	.file	"autoload.c"
/APP
		.section .autoload_text,"wx"
		.global	_InternetAttemptConnect@4
	_InternetAttemptConnect@4:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetAttemptConnect\0"
		.section .autoload_text,"wx"
		.global	_InternetCloseHandle@4
	_InternetCloseHandle@4:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetCloseHandle\0"
		.section .autoload_text,"wx"
		.global	_InternetGetLastResponseInfoA@12
	_InternetGetLastResponseInfoA@12:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetGetLastResponseInfoA\0"
		.section .autoload_text,"wx"
		.global	_InternetOpenA@20
	_InternetOpenA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetOpenA\0"
		.section .autoload_text,"wx"
		.global	_InternetOpenUrlA@24
	_InternetOpenUrlA@24:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetOpenUrlA\0"
		.section .autoload_text,"wx"
		.global	_InternetReadFile@16
	_InternetReadFile@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetReadFile\0"
		.section .autoload_text,"wx"
		.global	_InternetSetOptionA@16
	_InternetSetOptionA@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetSetOptionA\0"
		.section .autoload_text,"wx"
		.global	_InternetQueryOptionA@16
	_InternetQueryOptionA@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetQueryOptionA\0"
		.section .autoload_text,"wx"
		.global	_HttpQueryInfoA@20
	_HttpQueryInfoA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"HttpQueryInfoA\0"
		.section .autoload_text,"wx"
		.global	_HttpSendRequestA@20
	_HttpSendRequestA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"HttpSendRequestA\0"
		.section .autoload_text,"wx"
		.global	_AddAccessAllowedAce@16
	_AddAccessAllowedAce@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"AddAccessAllowedAce\0"
		.section .autoload_text,"wx"
		.global	_AllocateAndInitializeSid@44
	_AllocateAndInitializeSid@44:
		call	autoload_common
		.long	advapi32_info
		.ascii	"AllocateAndInitializeSid\0"
		.section .autoload_text,"wx"
		.global	_FreeSid@4
	_FreeSid@4:
		call	autoload_common
		.long	advapi32_info
		.ascii	"FreeSid\0"
		.section .autoload_text,"wx"
		.global	_InitializeAcl@12
	_InitializeAcl@12:
		call	autoload_common
		.long	advapi32_info
		.ascii	"InitializeAcl\0"
		.section .autoload_text,"wx"
		.global	_OpenProcessToken@12
	_OpenProcessToken@12:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenProcessToken\0"
		.section .autoload_text,"wx"
		.global	_SetTokenInformation@16
	_SetTokenInformation@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"SetTokenInformation\0"
		.section .autoload_text,"wx"
		.global	_OpenSCManagerA@16
	_OpenSCManagerA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenSCManagerA\0"
		.section .autoload_text,"wx"
		.global	_CloseServiceHandle@4
	_CloseServiceHandle@4:
		call	autoload_common
		.long	advapi32_info
		.ascii	"CloseServiceHandle\0"
		.section .autoload_text,"wx"
		.global	_OpenServiceA@16
	_OpenServiceA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenServiceA\0"
		.section .autoload_text,"wx"
		.global	_QueryServiceStatus@8
	_QueryServiceStatus@8:
		call	autoload_common
		.long	advapi32_info
		.ascii	"QueryServiceStatus\0"
		.section .autoload_text,"wx"
		.global	_StartServiceA@16
	_StartServiceA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"StartServiceA\0"
		.section .autoload_text,"wx"
		.global	_NtCreateFile@44
	_NtCreateFile@44:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtCreateFile\0"
		.section .autoload_text,"wx"
		.global	_NtOpenFile@24
	_NtOpenFile@24:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtOpenFile\0"
		.section .autoload_text,"wx"
		.global	_NtClose@4
	_NtClose@4:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtClose\0"
		.section .autoload_text,"wx"
		.global	_NtQueryAttributesFile@8
	_NtQueryAttributesFile@8:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtQueryAttributesFile\0"
		.section .autoload_text,"wx"
		.global	_NtQueryInformationFile@20
	_NtQueryInformationFile@20:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtQueryInformationFile\0"
		.section .autoload_text,"wx"
		.global	_NtSetInformationFile@20
	_NtSetInformationFile@20:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtSetInformationFile\0"
		.section .autoload_text,"wx"
		.global	_RtlInitUnicodeString@8
	_RtlInitUnicodeString@8:
		call	autoload_common
		.long	ntdll_info
		.ascii	"RtlInitUnicodeString\0"
		.section .autoload_text,"wx"
		.global	_RtlNtStatusToDosError@4
	_RtlNtStatusToDosError@4:
		call	autoload_common
		.long	ntdll_info
		.ascii	"RtlNtStatusToDosError\0"
		.text
/NO_APP
	.text
	.def	autoload_common;	.scl	3;	.type	32;	.endef
autoload_common:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$20, %esp
	movl	4(%ebp), %ebx
	movl	(%ebx), %eax
	cmpl	$0, 4(%eax)
	jne	L2
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	_LoadLibraryA@4
	subl	$4, %esp
	movl	(%ebx), %edx
	movl	%eax, 4(%edx)
L2:
	leal	4(%ebx), %eax
	movl	%eax, 4(%esp)
	movl	(%ebx), %eax
	movl	4(%eax), %eax
	movl	%eax, (%esp)
	call	_GetProcAddress@8
	subl	$8, %esp
	subl	%ebx, %eax
	movb	$-23, -5(%ebx)
	movb	%al, -4(%ebx)
	movl	%eax, %edx
	sarl	$8, %edx
	movb	%dl, -3(%ebx)
	movl	%eax, %edx
	sarl	$16, %edx
	movb	%dl, -2(%ebx)
	sarl	$24, %eax
	movb	%al, -1(%ebx)
	movl	-4(%ebp), %ebx
	leave
	ret
	.section .rdata,"dr"
LC0:
	.ascii "ntdll\0"
	.data
	.align 4
ntdll_info:
	.long	LC0
	.long	0
	.section .rdata,"dr"
LC1:
	.ascii "advapi32\0"
	.data
	.align 4
advapi32_info:
	.long	LC1
	.long	0
	.section .rdata,"dr"
LC2:
	.ascii "wininet\0"
	.data
	.align 4
wininet_info:
	.long	LC2
	.long	0
	.def	_LoadLibraryA@4;	.scl	2;	.type	32;	.endef
	.def	_GetProcAddress@8;	.scl	2;	.type	32;	.endef
-------------- next part --------------
	.file	"autoload.c"
/APP
		.section .autoload_text,"wx"
		.global	_InternetAttemptConnect@4
	_InternetAttemptConnect@4:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetAttemptConnect\0"
		.section .autoload_text,"wx"
		.global	_InternetCloseHandle@4
	_InternetCloseHandle@4:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetCloseHandle\0"
		.section .autoload_text,"wx"
		.global	_InternetGetLastResponseInfoA@12
	_InternetGetLastResponseInfoA@12:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetGetLastResponseInfoA\0"
		.section .autoload_text,"wx"
		.global	_InternetOpenA@20
	_InternetOpenA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetOpenA\0"
		.section .autoload_text,"wx"
		.global	_InternetOpenUrlA@24
	_InternetOpenUrlA@24:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetOpenUrlA\0"
		.section .autoload_text,"wx"
		.global	_InternetReadFile@16
	_InternetReadFile@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetReadFile\0"
		.section .autoload_text,"wx"
		.global	_InternetSetOptionA@16
	_InternetSetOptionA@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetSetOptionA\0"
		.section .autoload_text,"wx"
		.global	_InternetQueryOptionA@16
	_InternetQueryOptionA@16:
		call	autoload_common
		.long	wininet_info
		.ascii	"InternetQueryOptionA\0"
		.section .autoload_text,"wx"
		.global	_HttpQueryInfoA@20
	_HttpQueryInfoA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"HttpQueryInfoA\0"
		.section .autoload_text,"wx"
		.global	_HttpSendRequestA@20
	_HttpSendRequestA@20:
		call	autoload_common
		.long	wininet_info
		.ascii	"HttpSendRequestA\0"
		.section .autoload_text,"wx"
		.global	_AddAccessAllowedAce@16
	_AddAccessAllowedAce@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"AddAccessAllowedAce\0"
		.section .autoload_text,"wx"
		.global	_AllocateAndInitializeSid@44
	_AllocateAndInitializeSid@44:
		call	autoload_common
		.long	advapi32_info
		.ascii	"AllocateAndInitializeSid\0"
		.section .autoload_text,"wx"
		.global	_FreeSid@4
	_FreeSid@4:
		call	autoload_common
		.long	advapi32_info
		.ascii	"FreeSid\0"
		.section .autoload_text,"wx"
		.global	_InitializeAcl@12
	_InitializeAcl@12:
		call	autoload_common
		.long	advapi32_info
		.ascii	"InitializeAcl\0"
		.section .autoload_text,"wx"
		.global	_OpenProcessToken@12
	_OpenProcessToken@12:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenProcessToken\0"
		.section .autoload_text,"wx"
		.global	_SetTokenInformation@16
	_SetTokenInformation@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"SetTokenInformation\0"
		.section .autoload_text,"wx"
		.global	_OpenSCManagerA@16
	_OpenSCManagerA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenSCManagerA\0"
		.section .autoload_text,"wx"
		.global	_CloseServiceHandle@4
	_CloseServiceHandle@4:
		call	autoload_common
		.long	advapi32_info
		.ascii	"CloseServiceHandle\0"
		.section .autoload_text,"wx"
		.global	_OpenServiceA@16
	_OpenServiceA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"OpenServiceA\0"
		.section .autoload_text,"wx"
		.global	_QueryServiceStatus@8
	_QueryServiceStatus@8:
		call	autoload_common
		.long	advapi32_info
		.ascii	"QueryServiceStatus\0"
		.section .autoload_text,"wx"
		.global	_StartServiceA@16
	_StartServiceA@16:
		call	autoload_common
		.long	advapi32_info
		.ascii	"StartServiceA\0"
		.section .autoload_text,"wx"
		.global	_NtCreateFile@44
	_NtCreateFile@44:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtCreateFile\0"
		.section .autoload_text,"wx"
		.global	_NtOpenFile@24
	_NtOpenFile@24:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtOpenFile\0"
		.section .autoload_text,"wx"
		.global	_NtClose@4
	_NtClose@4:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtClose\0"
		.section .autoload_text,"wx"
		.global	_NtQueryAttributesFile@8
	_NtQueryAttributesFile@8:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtQueryAttributesFile\0"
		.section .autoload_text,"wx"
		.global	_NtQueryInformationFile@20
	_NtQueryInformationFile@20:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtQueryInformationFile\0"
		.section .autoload_text,"wx"
		.global	_NtSetInformationFile@20
	_NtSetInformationFile@20:
		call	autoload_common
		.long	ntdll_info
		.ascii	"NtSetInformationFile\0"
		.section .autoload_text,"wx"
		.global	_RtlInitUnicodeString@8
	_RtlInitUnicodeString@8:
		call	autoload_common
		.long	ntdll_info
		.ascii	"RtlInitUnicodeString\0"
		.section .autoload_text,"wx"
		.global	_RtlNtStatusToDosError@4
	_RtlNtStatusToDosError@4:
		call	autoload_common
		.long	ntdll_info
		.ascii	"RtlNtStatusToDosError\0"
		.text
/NO_APP
	.text
	.p2align 4,,15
	.def	autoload_common;	.scl	3;	.type	32;	.endef
autoload_common:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$20, %esp
	movl	4(%ebp), %ebx
	movl	(%ebx), %edx
	movl	4(%edx), %eax
	testl	%eax, %eax
	je	L4
L2:
	leal	4(%ebx), %edx
	movl	%edx, 4(%esp)
	movl	%eax, (%esp)
	call	_GetProcAddress@8
	movb	$-23, -5(%ebx)
	subl	%ebx, %eax
	subl	$8, %esp
	movl	%eax, %edx
	sarl	$8, %edx
	movb	%dl, -3(%ebx)
	movl	%eax, %edx
	movb	%al, -4(%ebx)
	sarl	$16, %edx
	sarl	$24, %eax
	movb	%dl, -2(%ebx)
	movb	%al, -1(%ebx)
	movl	-4(%ebp), %ebx
	leave
	ret
	.p2align 4,,7
L4:
	movl	(%edx), %eax
	movl	%eax, (%esp)
	call	_LoadLibraryA@4
	movl	(%ebx), %edx
	subl	$4, %esp
	movl	%eax, 4(%edx)
	jmp	L2
	.section .rdata,"dr"
LC0:
	.ascii "ntdll\0"
	.data
	.align 4
ntdll_info:
	.long	LC0
	.long	0
	.section .rdata,"dr"
LC1:
	.ascii "advapi32\0"
	.data
	.align 4
advapi32_info:
	.long	LC1
	.long	0
	.section .rdata,"dr"
LC2:
	.ascii "wininet\0"
	.data
	.align 4
wininet_info:
	.long	LC2
	.long	0
	.def	_GetProcAddress@8;	.scl	2;	.type	32;	.endef
	.def	_LoadLibraryA@4;	.scl	2;	.type	32;	.endef
-------------- next part --------------
A non-text attachment was scrubbed...
Name: setup-gcc45-take2.patch
Type: text/x-patch
Size: 4903 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-apps/attachments/20100723/d5094e5d/attachment.bin>


More information about the Cygwin-apps mailing list