Re: RFA: darwin PATCH to fix build, internal visibility
OK, I've checked this in: commit 2425dc8daa33d8b5d15c803c9bf2f51f5e1915a0 Author: Jason Merrill ja...@redhat.com Date: Tue Oct 9 21:16:52 2012 -0400 * g++.dg/ext/visibility/pragma-override1.C: Fix target markup. * g++.dg/ext/visibility/pragma-override2.C: Fix target markup. diff --git a/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C b/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C index b813390..c13161d 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C +++ b/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C @@ -1,7 +1,7 @@ /* Test that #pragma GCC visibility does not override class member specific settings. */ /* { dg-do compile } */ /* { dg-require-visibility internal } */ -/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! *-*-solaris2* } { ! *-*-darwin* } } } }*/ +/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { *-*-solaris2* *-*-darwin* } } } } } */ /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target *-*-solaris2* } } } */ #pragma GCC visibility push(hidden) diff --git a/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C b/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C index 3ceaf4a..25e9cea 100644 --- a/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C +++ b/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C @@ -1,7 +1,7 @@ /* Test that #pragma GCC visibility does not override class member specific settings. */ /* { dg-do compile } */ /* { dg-require-visibility internal } */ -/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! *-*-solaris2* } { ! *-*-darwin* } } } } */ +/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { *-*-solaris2* *-*-darwin* } } } } } */ /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target *-*-solaris2* } } } */ #pragma GCC visibility push(hidden)
Re: RFA: darwin PATCH to fix build, internal visibility
These tests are still failing on darwin. I think tha target { ! *-*-solaris2* } { ! *-*-darwin* } sould be replaced with target { ! { *-*-solaris2* *-*-darwin* } } Could someone with a darwin box handy make the appropriate change? I have never really understood the logic of the target syntax, so IMO the problem with the proposed change is not with darwin, but with other platforms I don't have access to. Indeed I have checked on x86_64-apple-darwin10 and powerpc-apple-darwin9 that the failures go away with the following patch: diff -up ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C --- ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 2012-10-04 19:50:52.0 +0200 +++ gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 2012-10-08 10:29:40.0 +0200 @@ -1,7 +1,7 @@ /* Test that #pragma GCC visibility does not override class member specific settings. */ /* { dg-do compile } */ /* { dg-require-visibility internal } */ -/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! *-*-solaris2* } { ! *-*-darwin* } } } }*/ +/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { *-*-solaris2* *-*-darwin* } } } } }*/ /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target *-*-solaris2* } } } */ #pragma GCC visibility push(hidden) diff -up ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C --- ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 2012-10-04 19:50:52.0 +0200 +++ gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 2012-10-08 10:30:32.0 +0200 @@ -1,7 +1,7 @@ /* Test that #pragma GCC visibility does not override class member specific settings. */ /* { dg-do compile } */ /* { dg-require-visibility internal } */ -/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! *-*-solaris2* } { ! *-*-darwin* } } } } */ +/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { *-*-solaris2* *-*-darwin* } } } } } */ /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target *-*-solaris2* } } } */ #pragma GCC visibility push(hidden) Dominique
Re: RFA: darwin PATCH to fix build, internal visibility
On Oct 9, 2012, at 6:48 AM, Dominique Dhumieres domi...@lps.ens.fr wrote: These tests are still failing on darwin. I think tha target { ! *-*-solaris2* } { ! *-*-darwin* } sould be replaced with target { ! { *-*-solaris2* *-*-darwin* } } Could someone with a darwin box handy make the appropriate change? I have never really understood the logic of the target syntax, so IMO the problem with the proposed change is not with darwin, but with other platforms I don't have access to. Ok. I think it is pretty safe, if darwin works.
Re: RFA: darwin PATCH to fix build, internal visibility
It appears that the patch should also special case the scan-assembler .internal.*Foo.methodEv tests in g++.dg/ext/visibility/pragma-override1.C and g++.dg/ext/visibility/pragma-override2.C on darwin as well... Done, thanks. Jason, These tests are still failing on darwin. I think that target { ! *-*-solaris2* } { ! *-*-darwin* } sould be replaced with target { ! { *-*-solaris2* *-*-darwin* } } TIA Dominique
Re: RFA: darwin PATCH to fix build, internal visibility
On 10/08/2012 08:28 AM, Dominique Dhumieres wrote: These tests are still failing on darwin. I think that target { ! *-*-solaris2* } { ! *-*-darwin* } sould be replaced with target { ! { *-*-solaris2* *-*-darwin* } } Could someone with a darwin box handy make the appropriate change? Thanks. Jason
Re: RFA: darwin PATCH to fix build, internal visibility
On Wed, Oct 03, 2012 at 03:26:14PM -0700, Mike Stump wrote: On Oct 3, 2012, at 12:04 PM, Jason Merrill ja...@redhat.com wrote: This patch fixes a couple of Darwin issues I noticed with a cross-compiler: 1) Adds a couple of consts to avoid const-correctness errors. 2) Treats visibility internal like hidden rather than like default. The documentation says that internal is hidden + processor-specific semantics, so treating it as just hidden makes sense to me. OK for trunk? Ok. FYI, the x86_64-apple-darwin12 testsuite results with the proposed patch are at... http://gcc.gnu.org/ml/gcc-testresults/2012-10/msg00434.html It appears that the patch should also special case the scan-assembler .internal.*Foo.methodEv tests in g++.dg/ext/visibility/pragma-override1.C and g++.dg/ext/visibility/pragma-override2.C on darwin as well... FAIL: g++.dg/ext/visibility/pragma-override1.C -std=c++98 scan-assembler .internal.*Foo.methodEv FAIL: g++.dg/ext/visibility/pragma-override1.C -std=c++11 scan-assembler .internal.*Foo.methodEv FAIL: g++.dg/ext/visibility/pragma-override2.C -std=c++98 scan-assembler .internal.*Foo.methodEv FAIL: g++.dg/ext/visibility/pragma-override2.C -std=c++11 scan-assembler .internal.*Foo.methodEv Jack
RFA: darwin PATCH to fix build, internal visibility
This patch fixes a couple of Darwin issues I noticed with a cross-compiler: 1) Adds a couple of consts to avoid const-correctness errors. 2) Treats visibility internal like hidden rather than like default. The documentation says that internal is hidden + processor-specific semantics, so treating it as just hidden makes sense to me. OK for trunk? Jason commit 907f8d9588da2e65cf938985639bfaf0dde53c6f Author: Jason Merrill ja...@redhat.com Date: Wed Oct 3 09:55:25 2012 -0400 * config/darwin.c (darwin_assemble_visibility): Treat VISIBILITY_INTERNAL as hidden. * config/darwin-c.c (find_subframework_file): Add missing const. (framework_construct_pathname): Likewise. diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c index a642f66..8e48c30 100644 --- a/gcc/config/darwin-c.c +++ b/gcc/config/darwin-c.c @@ -267,7 +267,7 @@ static struct framework_header framework_header_dirs[] = { static char * framework_construct_pathname (const char *fname, cpp_dir *dir) { - char *buf; + const char *buf; size_t fname_len, frname_len; cpp_dir *fast_dir; char *frname; @@ -344,7 +344,7 @@ find_subframework_file (const char *fname, const char *pname) { char *sfrname; const char *dot_framework = .framework/; - char *bufptr; + const char *bufptr; int sfrname_len, i, fname_len; struct cpp_dir *fast_dir; static struct cpp_dir subframe_dir; diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index 54c92d1..5a9f50a 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -2623,7 +2623,7 @@ darwin_assemble_visibility (tree decl, int vis) { if (vis == VISIBILITY_DEFAULT) ; - else if (vis == VISIBILITY_HIDDEN) + else if (vis == VISIBILITY_HIDDEN || vis == VISIBILITY_INTERNAL) { fputs (\t.private_extern , asm_out_file); assemble_name (asm_out_file, @@ -2631,7 +2631,7 @@ darwin_assemble_visibility (tree decl, int vis) fputs (\n, asm_out_file); } else -warning (OPT_Wattributes, internal and protected visibility attributes +warning (OPT_Wattributes, protected visibility attribute not supported in this configuration; ignored); }
Re: RFA: darwin PATCH to fix build, internal visibility
On Oct 3, 2012, at 12:04 PM, Jason Merrill ja...@redhat.com wrote: This patch fixes a couple of Darwin issues I noticed with a cross-compiler: 1) Adds a couple of consts to avoid const-correctness errors. 2) Treats visibility internal like hidden rather than like default. The documentation says that internal is hidden + processor-specific semantics, so treating it as just hidden makes sense to me. OK for trunk? Ok.