public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug regression/40905]  New: GCC creates invalid executable with auto-imported DLL and __attribute__((cold))
@ 2009-07-29 16:07 ramiro dot polla at gmail dot com
  2009-07-29 16:10 ` [Bug target/40905] " pinskia at gcc dot gnu dot org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: ramiro dot polla at gmail dot com @ 2009-07-29 16:07 UTC (permalink / raw)
  To: gcc-bugs

GCC creates invalid executable when an array from one DLL is accessed from
another DLL in a function with __attribute__((cold)).

----------
$ cat dll1.c 
int foo[2] = {0, 1};
$ cat dll2.c
extern int foo[2];
__attribute__((cold))
int bar(void)
{
    return foo[1];
}
$ cat main.c
int bar(void);
int main()
{
    bar();
    return 0;
}
$ cat Makefile 
CC=i686-mingw32-gcc-4.4.1

all:
        $(CC) -shared -o dll1.dll dll1.c
        $(CC) -shared -o dll2.dll dll2.c dll1.dll -O2
        $(CC) -o main.exe main.c dll1.dll dll2.dll
$ make
i686-mingw32-gcc-4.4.1 -shared -o dll1.dll dll1.c
i686-mingw32-gcc-4.4.1 -shared -o dll2.dll dll2.c dll1.dll -O2
Info: resolving _foo by linking to __imp__foo (auto-import)
/opt/i686-mingw32/lib/gcc/i686-mingw32/4.4.1/../../../../i686-mingw32/bin/ld:
warning: auto-importing has been activated without --enable-auto-import
specified on the command line.
This should work unless it involves constant data structures referencing
symbols from auto-imported DLLs.
i686-mingw32-gcc-4.4.1 -o main.exe main.c dll1.dll dll2.dll
$ ./main.exe
err:module:attach_process_dlls "dll2.dll" failed to initialize, aborting
err:module:LdrInitializeThunk Main exe initialization for
L"Z:\\home\\ramiro\\code\\smalls\\gcc_bug\\main.exe" failed, status c0000005
----------
This error message is from wine, but it also fails on Windows XP.

The auto-import warning seems to fit perfectly here but the same test doesn't
fail at -O1, or if __attribute__((cold)) is removed.


-- 
           Summary: GCC creates invalid executable with auto-imported DLL
                    and __attribute__((cold))
           Product: gcc
           Version: 4.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: regression
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ramiro dot polla at gmail dot com
GCC target triplet: i686-mingw32


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40905


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-05-23  7:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-29 16:07 [Bug regression/40905] New: GCC creates invalid executable with auto-imported DLL and __attribute__((cold)) ramiro dot polla at gmail dot com
2009-07-29 16:10 ` [Bug target/40905] " pinskia at gcc dot gnu dot org
2009-07-30  3:44 ` ramiro dot polla at gmail dot com
2009-07-30  3:59 ` pinskia at gcc dot gnu dot org
2009-07-30  8:00 ` dannysmith at users dot sourceforge dot net
2009-09-04 13:27 ` ktietz at gcc dot gnu dot org
2009-09-12 10:56 ` ktietz at gcc dot gnu dot org
2010-04-05  9:18 ` ktietz at gcc dot gnu dot org
2010-05-23  7:41 ` ktietz at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).