From: Jason Merrill Date: Fri, 5 Feb 2010 22:17:09 +0000 (-0500) Subject: re PR c++/42870 (__attribute__ ((dllexport)) produces broken linkage) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b2469a9bbb9c5390c8fc08dba85a41a86301d441;p=gcc.git re PR c++/42870 (__attribute__ ((dllexport)) produces broken linkage) PR c++/42870 * config/i386/cygming.h (ASM_OUTPUT_DEF_FROM_DECLS): Call i386_pe_maybe_record_exported_symbol. From-SVN: r156529 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be49d980c15..c9709125689 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-02-03 Jason Merrill + + PR c++/42870 + * config/i386/cygming.h (ASM_OUTPUT_DEF_FROM_DECLS): Call + i386_pe_maybe_record_exported_symbol. + 2010-02-05 Steve Ellcey PR target/42924 diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index ddec95a36fc..54a61d7a1bc 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -361,6 +361,7 @@ do { \ { \ const char *alias \ = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \ + i386_pe_maybe_record_exported_symbol (DECL, alias, 0); \ if (TREE_CODE (DECL) == FUNCTION_DECL) \ i386_pe_declare_function_type (STREAM, alias, \ TREE_PUBLIC (DECL)); \ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fdb749509de..f7a43f55f6a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-03 Jason Merrill + + PR c++/42870 + * g++.dg/ext/dllexport3.C: New. + 2010-02-05 Ozkan Sezer * gcc.dg/format/ms-format3.c: New test for specific MS types. diff --git a/gcc/testsuite/g++.dg/ext/dllexport3.C b/gcc/testsuite/g++.dg/ext/dllexport3.C new file mode 100644 index 00000000000..a47a5e07760 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/dllexport3.C @@ -0,0 +1,19 @@ +// PR c++/42870 +// { dg-do compile { target i?86-*-cygwin *-*-mingw* } } +// { dg-final { scan-assembler "-export:_ZN2SaD1Ev" } } + +#define ATTRIBUTE __attribute__ ((dllexport)) +class ATTRIBUTE Sa { + public: + Sa() + {} + ~Sa(); +}; +ATTRIBUTE Sa::~Sa() +{return;} + +bool DllMain(void *a,void*b,int) +{ + Sa s; + return true; +}