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

        .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 _internetattemptconn...@4
        _internetattemptconn...@4:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetAttemptConnect\0"
                .section .autoload_text,"wx"
                .global _internetclosehan...@4
        _internetclosehan...@4:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetCloseHandle\0"
                .section .autoload_text,"wx"
                .global _internetgetlastresponsein...@12
        _internetgetlastresponsein...@12:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetGetLastResponseInfoA\0"
                .section .autoload_text,"wx"
                .global _internetop...@20
        _internetop...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetOpenA\0"
                .section .autoload_text,"wx"
                .global _internetopenu...@24
        _internetopenu...@24:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetOpenUrlA\0"
                .section .autoload_text,"wx"
                .global _internetreadf...@16
        _internetreadf...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetReadFile\0"
                .section .autoload_text,"wx"
                .global _internetsetopti...@16
        _internetsetopti...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetSetOptionA\0"
                .section .autoload_text,"wx"
                .global _internetqueryopti...@16
        _internetqueryopti...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetQueryOptionA\0"
                .section .autoload_text,"wx"
                .global _httpqueryin...@20
        _httpqueryin...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "HttpQueryInfoA\0"
                .section .autoload_text,"wx"
                .global _httpsendreque...@20
        _httpsendreque...@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 _addaccessallowed...@16
        _addaccessallowed...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "AddAccessAllowedAce\0"
                .section .autoload_text,"wx"
                .global _allocateandinitialize...@44
        _allocateandinitialize...@44:
                call    autoload_common
                .long   advapi32_info
                .ascii  "AllocateAndInitializeSid\0"
                .section .autoload_text,"wx"
                .global _free...@4
        _free...@4:
                call    autoload_common
                .long   advapi32_info
                .ascii  "FreeSid\0"
                .section .autoload_text,"wx"
                .global _initialize...@12
        _initialize...@12:
                call    autoload_common
                .long   advapi32_info
                .ascii  "InitializeAcl\0"
                .section .autoload_text,"wx"
                .global _openprocessto...@12
        _openprocessto...@12:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenProcessToken\0"
                .section .autoload_text,"wx"
                .global _settokeninformat...@16
        _settokeninformat...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "SetTokenInformation\0"
                .section .autoload_text,"wx"
                .global _openscmanag...@16
        _openscmanag...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenSCManagerA\0"
                .section .autoload_text,"wx"
                .global _closeservicehan...@4
        _closeservicehan...@4:
                call    autoload_common
                .long   advapi32_info
                .ascii  "CloseServiceHandle\0"
                .section .autoload_text,"wx"
                .global _openservi...@16
        _openservi...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenServiceA\0"
                .section .autoload_text,"wx"
                .global _queryservicesta...@8
        _queryservicesta...@8:
                call    autoload_common
                .long   advapi32_info
                .ascii  "QueryServiceStatus\0"
                .section .autoload_text,"wx"
                .global _startservi...@16
        _startservi...@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 _ntcreatef...@44
        _ntcreatef...@44:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtCreateFile\0"
                .section .autoload_text,"wx"
                .global _ntopenf...@24
        _ntopenf...@24:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtOpenFile\0"
                .section .autoload_text,"wx"
                .global _ntcl...@4
        _ntcl...@4:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtClose\0"
                .section .autoload_text,"wx"
                .global _ntqueryattributesf...@8
        _ntqueryattributesf...@8:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtQueryAttributesFile\0"
                .section .autoload_text,"wx"
                .global _ntqueryinformationf...@20
        _ntqueryinformationf...@20:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtQueryInformationFile\0"
                .section .autoload_text,"wx"
                .global _ntsetinformationf...@20
        _ntsetinformationf...@20:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtSetInformationFile\0"
                .section .autoload_text,"wx"
                .global _rtlinitunicodestr...@8
        _rtlinitunicodestr...@8:
                call    autoload_common
                .long   ntdll_info
                .ascii  "RtlInitUnicodeString\0"
                .section .autoload_text,"wx"
                .global _rtlntstatustodoser...@4
        _rtlntstatustodoser...@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    _loadlibra...@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    _getprocaddr...@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    _loadlibra...@4;        .scl    2;      .type   32;     .endef
        .def    _getprocaddr...@8;      .scl    2;      .type   32;     .endef
        .file   "autoload.c"
/APP
                .section .autoload_text,"wx"
                .global _internetattemptconn...@4
        _internetattemptconn...@4:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetAttemptConnect\0"
                .section .autoload_text,"wx"
                .global _internetclosehan...@4
        _internetclosehan...@4:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetCloseHandle\0"
                .section .autoload_text,"wx"
                .global _internetgetlastresponsein...@12
        _internetgetlastresponsein...@12:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetGetLastResponseInfoA\0"
                .section .autoload_text,"wx"
                .global _internetop...@20
        _internetop...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetOpenA\0"
                .section .autoload_text,"wx"
                .global _internetopenu...@24
        _internetopenu...@24:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetOpenUrlA\0"
                .section .autoload_text,"wx"
                .global _internetreadf...@16
        _internetreadf...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetReadFile\0"
                .section .autoload_text,"wx"
                .global _internetsetopti...@16
        _internetsetopti...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetSetOptionA\0"
                .section .autoload_text,"wx"
                .global _internetqueryopti...@16
        _internetqueryopti...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetQueryOptionA\0"
                .section .autoload_text,"wx"
                .global _httpqueryin...@20
        _httpqueryin...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "HttpQueryInfoA\0"
                .section .autoload_text,"wx"
                .global _httpsendreque...@20
        _httpsendreque...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "HttpSendRequestA\0"
                .section .autoload_text,"wx"
                .global _addaccessallowed...@16
        _addaccessallowed...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "AddAccessAllowedAce\0"
                .section .autoload_text,"wx"
                .global _allocateandinitialize...@44
        _allocateandinitialize...@44:
                call    autoload_common
                .long   advapi32_info
                .ascii  "AllocateAndInitializeSid\0"
                .section .autoload_text,"wx"
                .global _free...@4
        _free...@4:
                call    autoload_common
                .long   advapi32_info
                .ascii  "FreeSid\0"
                .section .autoload_text,"wx"
                .global _initialize...@12
        _initialize...@12:
                call    autoload_common
                .long   advapi32_info
                .ascii  "InitializeAcl\0"
                .section .autoload_text,"wx"
                .global _openprocessto...@12
        _openprocessto...@12:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenProcessToken\0"
                .section .autoload_text,"wx"
                .global _settokeninformat...@16
        _settokeninformat...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "SetTokenInformation\0"
                .section .autoload_text,"wx"
                .global _openscmanag...@16
        _openscmanag...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenSCManagerA\0"
                .section .autoload_text,"wx"
                .global _closeservicehan...@4
        _closeservicehan...@4:
                call    autoload_common
                .long   advapi32_info
                .ascii  "CloseServiceHandle\0"
                .section .autoload_text,"wx"
                .global _openservi...@16
        _openservi...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenServiceA\0"
                .section .autoload_text,"wx"
                .global _queryservicesta...@8
        _queryservicesta...@8:
                call    autoload_common
                .long   advapi32_info
                .ascii  "QueryServiceStatus\0"
                .section .autoload_text,"wx"
                .global _startservi...@16
        _startservi...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "StartServiceA\0"
                .section .autoload_text,"wx"
                .global _ntcreatef...@44
        _ntcreatef...@44:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtCreateFile\0"
                .section .autoload_text,"wx"
                .global _ntopenf...@24
        _ntopenf...@24:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtOpenFile\0"
                .section .autoload_text,"wx"
                .global _ntcl...@4
        _ntcl...@4:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtClose\0"
                .section .autoload_text,"wx"
                .global _ntqueryattributesf...@8
        _ntqueryattributesf...@8:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtQueryAttributesFile\0"
                .section .autoload_text,"wx"
                .global _ntqueryinformationf...@20
        _ntqueryinformationf...@20:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtQueryInformationFile\0"
                .section .autoload_text,"wx"
                .global _ntsetinformationf...@20
        _ntsetinformationf...@20:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtSetInformationFile\0"
                .section .autoload_text,"wx"
                .global _rtlinitunicodestr...@8
        _rtlinitunicodestr...@8:
                call    autoload_common
                .long   ntdll_info
                .ascii  "RtlInitUnicodeString\0"
                .section .autoload_text,"wx"
                .global _rtlntstatustodoser...@4
        _rtlntstatustodoser...@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    _loadlibra...@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    _getprocaddr...@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    _loadlibra...@4;        .scl    2;      .type   32;     .endef
        .def    _getprocaddr...@8;      .scl    2;      .type   32;     .endef
        .file   "autoload.c"
/APP
                .section .autoload_text,"wx"
                .global _internetattemptconn...@4
        _internetattemptconn...@4:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetAttemptConnect\0"
                .section .autoload_text,"wx"
                .global _internetclosehan...@4
        _internetclosehan...@4:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetCloseHandle\0"
                .section .autoload_text,"wx"
                .global _internetgetlastresponsein...@12
        _internetgetlastresponsein...@12:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetGetLastResponseInfoA\0"
                .section .autoload_text,"wx"
                .global _internetop...@20
        _internetop...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetOpenA\0"
                .section .autoload_text,"wx"
                .global _internetopenu...@24
        _internetopenu...@24:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetOpenUrlA\0"
                .section .autoload_text,"wx"
                .global _internetreadf...@16
        _internetreadf...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetReadFile\0"
                .section .autoload_text,"wx"
                .global _internetsetopti...@16
        _internetsetopti...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetSetOptionA\0"
                .section .autoload_text,"wx"
                .global _internetqueryopti...@16
        _internetqueryopti...@16:
                call    autoload_common
                .long   wininet_info
                .ascii  "InternetQueryOptionA\0"
                .section .autoload_text,"wx"
                .global _httpqueryin...@20
        _httpqueryin...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "HttpQueryInfoA\0"
                .section .autoload_text,"wx"
                .global _httpsendreque...@20
        _httpsendreque...@20:
                call    autoload_common
                .long   wininet_info
                .ascii  "HttpSendRequestA\0"
                .section .autoload_text,"wx"
                .global _addaccessallowed...@16
        _addaccessallowed...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "AddAccessAllowedAce\0"
                .section .autoload_text,"wx"
                .global _allocateandinitialize...@44
        _allocateandinitialize...@44:
                call    autoload_common
                .long   advapi32_info
                .ascii  "AllocateAndInitializeSid\0"
                .section .autoload_text,"wx"
                .global _free...@4
        _free...@4:
                call    autoload_common
                .long   advapi32_info
                .ascii  "FreeSid\0"
                .section .autoload_text,"wx"
                .global _initialize...@12
        _initialize...@12:
                call    autoload_common
                .long   advapi32_info
                .ascii  "InitializeAcl\0"
                .section .autoload_text,"wx"
                .global _openprocessto...@12
        _openprocessto...@12:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenProcessToken\0"
                .section .autoload_text,"wx"
                .global _settokeninformat...@16
        _settokeninformat...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "SetTokenInformation\0"
                .section .autoload_text,"wx"
                .global _openscmanag...@16
        _openscmanag...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenSCManagerA\0"
                .section .autoload_text,"wx"
                .global _closeservicehan...@4
        _closeservicehan...@4:
                call    autoload_common
                .long   advapi32_info
                .ascii  "CloseServiceHandle\0"
                .section .autoload_text,"wx"
                .global _openservi...@16
        _openservi...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "OpenServiceA\0"
                .section .autoload_text,"wx"
                .global _queryservicesta...@8
        _queryservicesta...@8:
                call    autoload_common
                .long   advapi32_info
                .ascii  "QueryServiceStatus\0"
                .section .autoload_text,"wx"
                .global _startservi...@16
        _startservi...@16:
                call    autoload_common
                .long   advapi32_info
                .ascii  "StartServiceA\0"
                .section .autoload_text,"wx"
                .global _ntcreatef...@44
        _ntcreatef...@44:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtCreateFile\0"
                .section .autoload_text,"wx"
                .global _ntopenf...@24
        _ntopenf...@24:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtOpenFile\0"
                .section .autoload_text,"wx"
                .global _ntcl...@4
        _ntcl...@4:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtClose\0"
                .section .autoload_text,"wx"
                .global _ntqueryattributesf...@8
        _ntqueryattributesf...@8:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtQueryAttributesFile\0"
                .section .autoload_text,"wx"
                .global _ntqueryinformationf...@20
        _ntqueryinformationf...@20:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtQueryInformationFile\0"
                .section .autoload_text,"wx"
                .global _ntsetinformationf...@20
        _ntsetinformationf...@20:
                call    autoload_common
                .long   ntdll_info
                .ascii  "NtSetInformationFile\0"
                .section .autoload_text,"wx"
                .global _rtlinitunicodestr...@8
        _rtlinitunicodestr...@8:
                call    autoload_common
                .long   ntdll_info
                .ascii  "RtlInitUnicodeString\0"
                .section .autoload_text,"wx"
                .global _rtlntstatustodoser...@4
        _rtlntstatustodoser...@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    _getprocaddr...@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    _loadlibra...@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    _getprocaddr...@8;      .scl    2;      .type   32;     .endef
        .def    _loadlibra...@4;        .scl    2;      .type   32;     .endef
2010-07-23  Yaakov Selkowitz  <[email protected]>

	Fix compatibility with GCC 4.5.
	* Makefile.am (setup_LDFLAGS): Pass -static to compiler instead of
	linker so that libgcc is statically linked as well.
	(autoload.o): Disable optimization.
	* doconfigure: Remove unused PATH manipulation.
	Change CC and CXX to $target-prefixed names.
	* localdir.cc (browse_cb): Fix "jump to case label crosses
	initialization" error.
	* mklink2.cc (sfli): Fix "non-local variable uses anonymous type"
	warning.
	* ntdll.h: Fix "redeclared without dllimport attribute: previous
	dllimport ignored" warnings.
	* package_message.h (display): Fix "'exit' was not declared in this
	scope" error.

Index: Makefile.am
===================================================================
RCS file: /cvs/cygwin-apps/setup/Makefile.am,v
retrieving revision 2.81
diff -u -r2.81 Makefile.am
--- Makefile.am	8 Apr 2010 15:50:38 -0000	2.81
+++ Makefile.am	23 Jul 2010 17:01:14 -0000
@@ -117,7 +117,7 @@
 	libinilex.a \
 	-Linst/lib -lgetopt++ -lgcrypt -lgpg-error \
 	-lshlwapi -lcomctl32 -lole32 -lwsock32 -lnetapi32 -luuid -llzma -lbz2 -lz 
-setup_LDFLAGS = -mwindows -Wl,-static -static-libtool-libs
+setup_LDFLAGS = -mwindows -Wc,-static -static-libtool-libs
 setup_SOURCES = \
 	AntiVirus.cc \
 	AntiVirus.h \
@@ -284,6 +284,9 @@
 	libmd5-rfc/md5.c \
 	libmd5-rfc/md5.h
 
+# autoload code does not optimize well
+autoload.o: CFLAGS += -O0
+
 VER := $(shell sed -ne 's/^\$$Revi[s]ion: *\([^ ]*\) *$$.*/\1/p' \
                $(srcdir)/ChangeLog)
 
Index: doconfigure
===================================================================
RCS file: /cvs/cygwin-apps/setup/doconfigure,v
retrieving revision 2.2
diff -u -r2.2 doconfigure
--- doconfigure	30 Mar 2010 23:55:15 -0000	2.2
+++ doconfigure	23 Jul 2010 17:01:14 -0000
@@ -9,19 +9,11 @@
   ( cd "$DIR" && ./bootstrap.sh )
 fi
 
-# If $build == cygwin, set PATH so that correct (mingw)
-# version of gpg-error-config and libgcrypt-config are
-# used.  Otherwise: assume cross-compiler users are
-# sophisticated enough to do this manually.
-case `uname -s` in
-*CYGWIN* ) export PATH="/usr/lib/mingw:${PATH}" ;;
-esac
-
 # Configure
 cmd="\"$DIR/configure\""
 cmd=$cmd' -C --disable-shared --enable-maintainer-mode'
 cmd=$cmd' --host=i686-pc-mingw32 --build=i686-pc-cygwin'
-cmd=$cmd' CC="gcc-3 -mno-cygwin" CXX="g++-3 -mno-cygwin"'
+cmd=$cmd' CC=i686-pc-mingw32-gcc CXX=i686-pc-mingw32-g++'
 
 for i in "$@"; do
   case $i in
Index: localdir.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/localdir.cc,v
retrieving revision 2.36
diff -u -r2.36 localdir.cc
--- localdir.cc	2 Feb 2010 17:28:10 -0000	2.36
+++ localdir.cc	23 Jul 2010 17:01:14 -0000
@@ -152,12 +152,14 @@
 	SendMessage (h, BFFM_SETSELECTION, TRUE, (LPARAM) local_dir.c_str());
       break;
     case BFFM_SELCHANGED:
-      // Make a note of each new dir we successfully select, so that
-      // we know where to create the new directory if an invalid name
-      // is entered in the text box.
-      LPITEMIDLIST pidl = reinterpret_cast<LPITEMIDLIST>(lp);
-      SHGetPathFromIDList (pidl, dirname);
-      break;
+      {
+        // Make a note of each new dir we successfully select, so that
+        // we know where to create the new directory if an invalid name
+        // is entered in the text box.
+        LPITEMIDLIST pidl = reinterpret_cast<LPITEMIDLIST>(lp);
+        SHGetPathFromIDList (pidl, dirname);
+        break;
+      }
     case BFFM_VALIDATEFAILED:
       // See if user wants to create a dir in the last successfully-selected.
       CHAR tempname[MAX_PATH];
Index: mklink2.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/mklink2.cc,v
retrieving revision 2.11
diff -u -r2.11 mklink2.cc
--- mklink2.cc	18 Dec 2009 11:59:54 -0000	2.11
+++ mklink2.cc	23 Jul 2010 17:01:14 -0000
@@ -111,7 +111,7 @@
 			: mkcygsymlink_9x (from, to);
 }
 
-struct {
+static struct {
   FILE_LINK_INFORMATION fli;
   WCHAR namebuf[32768];
 } sfli;
Index: ntdll.h
===================================================================
RCS file: /cvs/cygwin-apps/setup/ntdll.h,v
retrieving revision 2.2
diff -u -r2.2 ntdll.h
--- ntdll.h	13 May 2009 11:28:34 -0000	2.2
+++ ntdll.h	23 Jul 2010 17:01:14 -0000
@@ -14,6 +14,8 @@
 #ifndef SETUP_NTDLL_H
 #define SETUP_NTDLL_H
 
+#define NTOSAPI
+
 #include "ddk/ntapi.h"
 #include "ddk/ntifs.h"
 
Index: package_message.h
===================================================================
RCS file: /cvs/cygwin-apps/setup/package_message.h,v
retrieving revision 1.2
diff -u -r1.2 package_message.h
--- package_message.h	22 Dec 2009 16:19:51 -0000	1.2
+++ package_message.h	23 Jul 2010 17:01:14 -0000
@@ -15,6 +15,7 @@
 
 #include "UserSettings.h"
 #include "state.h"
+#include <stdlib.h>
 #include <windows.h>
 
 class packagemessage

Reply via email to