diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-03-29 03:37:17 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-03-29 03:37:17 +0000 |
commit | c31d004ece80e82c4d6f27d611e2de48bbc307ae (patch) | |
tree | 64d3fe1d991116ee3357d44f368564195ac3d015 /clang/lib | |
parent | 763acfcb8aac418b789543ff3911b13fe8b6d93b (diff) | |
download | bcm5719-llvm-c31d004ece80e82c4d6f27d611e2de48bbc307ae.tar.gz bcm5719-llvm-c31d004ece80e82c4d6f27d611e2de48bbc307ae.zip |
unwind.h fix for -fvisibility=hidden users. This fixes firefox build in a system
with libunwind installed.
Patch by Jeffrey Yasskin!
llvm-svn: 153633
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Headers/unwind.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/Headers/unwind.h b/clang/lib/Headers/unwind.h index a99c8a11761..a0659203b15 100644 --- a/clang/lib/Headers/unwind.h +++ b/clang/lib/Headers/unwind.h @@ -31,7 +31,19 @@ # define _SHOULD_UNDEFINE_GNU_SOURCE # define _GNU_SOURCE # endif -# include_next <unwind.h> +// libunwind's unwind.h reflects the current visibility. However, Mozilla +// builds with -fvisibility=hidden and relies on gcc's unwind.h to reset the +// visibility to default and export its contents. gcc also allows users to +// override its override by #defining HIDE_EXPORTS (but note, this only obeys +// the user's -fvisibility setting; it doesn't hide any exports on its own). We +// imitate gcc's header here: +# ifdef HIDE_EXPORTS +# include_next <unwind.h> +# else +# pragma GCC visibility push(default) +# include_next <unwind.h> +# pragma GCC visibility pop +# endif # ifdef _SHOULD_UNDEFINE_GNU_SOURCE # undef _GNU_SOURCE # undef _SHOULD_UNDEFINE_GNU_SOURCE |