diff options
author | Joseph Myers <jsm@polyomino.org.uk> | 2012-05-29 15:58:14 +0000 |
---|---|---|
committer | Joseph Myers <jsm@polyomino.org.uk> | 2012-05-29 15:58:14 +0000 |
commit | 7fa0f5962846707b14575a84ed3898f961ed6254 (patch) | |
tree | 7d6c00865c089d1b09530ac170f6e871e1d49e2c /config/weakref.m4 | |
parent | c4e6c4dbda51f01845052bd6829afd217a59fcca (diff) | |
download | gdb-7fa0f5962846707b14575a84ed3898f961ed6254.tar.gz |
Resync config/ from GCC.
Diffstat (limited to 'config/weakref.m4')
-rw-r--r-- | config/weakref.m4 | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/config/weakref.m4 b/config/weakref.m4 new file mode 100644 index 00000000000..ecb85672805 --- /dev/null +++ b/config/weakref.m4 @@ -0,0 +1,47 @@ + +dnl Check if the target supports weak. +AC_DEFUN([GCC_CHECK_ATTRIBUTE_WEAK], [ + AC_CACHE_CHECK([whether the target supports weak], + ac_cv_have_attribute_weak, [ + weakref_m4_saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_TRY_COMPILE([void __attribute__((weak)) foo(void) { }], + [], ac_cv_have_attribute_weak=yes, + ac_cv_have_attribute_weak=no) + CFLAGS="$weakref_m4_saved_CFLAGS"]) + if test x"$ac_cv_have_attribute_weak" = xyes; then + AC_DEFINE(HAVE_ATTRIBUTE_WEAK, 1, + [Define to 1 if the target supports __attribute__((weak)).]) + fi]) + +dnl Check whether weak refs work like the ELF ones. +dnl This means that the weak reference works without having to satify +dnl linkage for the item. +dnl There are targets (at least Darwin) where we have fully functional +dnl weakrefs at runtime, but must supply the referenced item at link time. +AC_DEFUN([GCC_CHECK_ELF_STYLE_WEAKREF], [ + AC_CACHE_CHECK([whether weak refs work like ELF], + ac_cv_have_elf_style_weakref, [ + weakref_m4_saved_CFLAGS="$CFLAGS" + case "${host}" in + *-apple-darwin*) CFLAGS="$CFLAGS -Wl,-undefined,dynamic_lookup" ;; + *) ;; + esac + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +extern void fNotToBeFound(void) __attribute__((weak)); +int main () +{ + if (fNotToBeFound) + return 1; + else + return 0; +} +]])], ac_cv_have_elf_style_weakref=yes, ac_cv_have_elf_style_weakref=no, [ +case "${host}" in + *-apple-darwin[[89]]*) ac_cv_have_elf_style_weakref=no ;; + *) ac_cv_have_elf_style_weakref=yes;; +esac])CFLAGS="$weakref_m4_saved_CFLAGS"]) +if test x"$ac_cv_have_elf_style_weakref" = xyes; then + AC_DEFINE(HAVE_ELF_STYLE_WEAKREF, 1, [Define to 1 if target has a weakref that works like the ELF one.]) +fi]) + |