From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26416 invoked by alias); 21 Apr 2003 22:26:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 26387 invoked by uid 71); 21 Apr 2003 22:26:01 -0000 Date: Mon, 21 Apr 2003 22:26:00 -0000 Message-ID: <20030421222601.26381.qmail@sources.redhat.com> To: mmitchel@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: TROCHU Xavier Subject: Re: target/10431: improper __attribute__((dllimport)) handling Reply-To: TROCHU Xavier X-SW-Source: 2003-04/txt/msg00909.txt.bz2 List-Id: The following reply was made to PR target/10431; it has been noted by GNATS. From: TROCHU Xavier To: , , , Cc: Subject: Re: target/10431: improper __attribute__((dllimport)) handling Date: Mon, 21 Apr 2003 15:17:58 -0700 (PDT) I checked your patch and it shows the same behaviour as the previous one (i.e. an incorrect behaviour). mainline can't be bootstrapped under mingw with this patch. Notice that stdout under mingw is declared really like this : extern __attribute__((dllimport)) FILE * _iob[1]; and obviously, this bug This is the test I tried again : ================= rtest.i ============= extern __attribute__((dllimport)) int foo; extern __attribute__((dllimport)) int foo2[]; int bar() { return foo; } int bar2(int i) { int * p = &foo2[i]; return *p; } ================================== with winnt.c reverted to version 1.42 (but with patch from 1.43 to 1.44 inserted) I get the following output, which is correct and the same as gcc 3.2.2 ================= rtest.ori.s ========= .file "rtest.i" .text ..globl _bar .def _bar; .scl 2; .type 32; .endef _bar: pushl %ebp movl %esp, %ebp movl __imp__foo, %eax movl (%eax), %eax popl %ebp ret ..globl _bar2 .def _bar2; .scl 2; .type 32; .endef _bar2: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax sall $2, %eax addl __imp__foo2, %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax movl (%eax), %eax leave ret ==================================== with winnt.c version 1.45 (current) or 1.44 the output is as the following. ================== rtest.new.s ========== .file "rtest.i" .text ..globl _bar .def _bar; .scl 2; .type 32; .endef _bar: pushl %ebp movl %esp, %ebp movl __imp__foo, %eax popl %ebp ret ..globl _bar2 .def _bar2; .scl 2; .type 32; .endef _bar2: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax leal 0(,%eax,4), %edx movl $__imp__foo2, %eax addl %edx, %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax movl (%eax), %eax leave ret ====================================== I really would like to be able to help correcting this bug, but I really lack a lot of knowledge of GCC internal for that. But if you think I can help you testing thing, don't hesitate to ask. Greetings, Xavier mmitchel@gcc.gnu.org wrote: >Synopsis: improper __attribute__((dllimport)) handling > >State-Changed-From-To: open->closed >State-Changed-By: mmitchel >State-Changed-When: Mon Apr 21 20:59:27 2003 >State-Changed-Why: > Fixed in GCC 3.3, GCC 3.4. > >http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10431 > > > __________________________________________________ Do you Yahoo!? The New Yahoo! Search - Faster. Easier. Bingo http://search.yahoo.com