diff --git a/autoconf/ast_gcc_attribute.m4 b/autoconf/ast_gcc_attribute.m4
index d3f05be5b8d1d759056813e3ed9e423d324a8822..f291dbbd671e2df4c41ebe25b01498e722caf1e7 100644
--- a/autoconf/ast_gcc_attribute.m4
+++ b/autoconf/ast_gcc_attribute.m4
@@ -1,11 +1,12 @@
 # Helper function to check for gcc attributes.
-# AST_GCC_ATTRIBUTE([attribute name], [attribute syntax], [attribute scope])
+# AST_GCC_ATTRIBUTE([attribute name], [attribute syntax], [attribute scope], [makeopts flag])
 
 AC_DEFUN([AST_GCC_ATTRIBUTE],
 [
 AC_MSG_CHECKING(for compiler 'attribute $1' support)
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
+m4_ifval([$4],$4=0)
 
 if test "x$2" = "x"
 then
@@ -13,6 +14,7 @@ AC_COMPILE_IFELSE(
 	AC_LANG_PROGRAM([$3 void __attribute__(($1)) *test(void *muffin, ...) {return (void *) 0;}],
 			[]),
 	AC_MSG_RESULT(yes)
+	m4_ifval([$4],$4=1)
 	AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]),
 	AC_MSG_RESULT(no)
 )
@@ -21,11 +23,13 @@ AC_COMPILE_IFELSE(
 	AC_LANG_PROGRAM([$3 void __attribute__(($2)) *test(void *muffin, ...) {return (void *) 0;}],
 			[]),
 	AC_MSG_RESULT(yes)
+	m4_ifval([$4],$4=1)
 	AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]),
 	AC_MSG_RESULT(no)
 )
 fi
 
+m4_ifval([$4],AC_SUBST($4))
 CFLAGS="$saved_CFLAGS"
 ]
 )
diff --git a/configure b/configure
index cbedbe74731b4dc1af63b5d66854fd65f0de14a6..c63e12076ee84174242efbe3253fd88b23759fe3 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 271657 .
+# From configure.ac Revision: 273055 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for asterisk trunk.
 #
@@ -1087,6 +1087,8 @@ POW_LIB
 HAS_POLL
 PBX_PTHREAD_RWLOCK_INITIALIZER
 PBX_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+
+PBX_WEAKREF
 GC_CFLAGS
 GC_LDFLAGS
 AST_DECLARATION_AFTER_STATEMENT
@@ -19820,6 +19822,7 @@ echo $ECHO_N "checking for compiler 'attribute pure' support... $ECHO_C" >&6; }
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -19857,6 +19860,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_pure 1
 _ACEOF
@@ -19907,6 +19911,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_pure 1
 _ACEOF
@@ -19923,6 +19928,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -19932,6 +19938,7 @@ echo $ECHO_N "checking for compiler 'attribute malloc' support... $ECHO_C" >&6;
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -19969,6 +19976,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_malloc 1
 _ACEOF
@@ -20019,6 +20027,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_malloc 1
 _ACEOF
@@ -20035,6 +20044,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -20044,6 +20054,7 @@ echo $ECHO_N "checking for compiler 'attribute const' support... $ECHO_C" >&6; }
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -20081,6 +20092,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_const 1
 _ACEOF
@@ -20131,6 +20143,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_const 1
 _ACEOF
@@ -20147,6 +20160,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -20156,6 +20170,7 @@ echo $ECHO_N "checking for compiler 'attribute unused' support... $ECHO_C" >&6;
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -20193,6 +20208,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_unused 1
 _ACEOF
@@ -20243,6 +20259,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_unused 1
 _ACEOF
@@ -20259,6 +20276,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -20268,6 +20286,7 @@ echo $ECHO_N "checking for compiler 'attribute always_inline' support... $ECHO_C
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -20305,6 +20324,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_always_inline 1
 _ACEOF
@@ -20355,6 +20375,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_always_inline 1
 _ACEOF
@@ -20371,6 +20392,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -20380,6 +20402,7 @@ echo $ECHO_N "checking for compiler 'attribute deprecated' support... $ECHO_C" >
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -20417,6 +20440,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_deprecated 1
 _ACEOF
@@ -20467,6 +20491,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_deprecated 1
 _ACEOF
@@ -20483,6 +20508,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -20492,6 +20518,7 @@ echo $ECHO_N "checking for compiler 'attribute sentinel' support... $ECHO_C" >&6
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -20529,6 +20556,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_sentinel 1
 _ACEOF
@@ -20579,6 +20607,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_sentinel 1
 _ACEOF
@@ -20595,6 +20624,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -20604,6 +20634,7 @@ echo $ECHO_N "checking for compiler 'attribute warn_unused_result' support... $E
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
 
+
 if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
@@ -20641,6 +20672,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_warn_unused_result 1
 _ACEOF
@@ -20691,6 +20723,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
 
+
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ATTRIBUTE_warn_unused_result 1
 _ACEOF
@@ -20707,16 +20740,18 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
 
-{ echo "$as_me:$LINENO: checking for compiler 'attribute weakref' support" >&5
-echo $ECHO_N "checking for compiler 'attribute weakref' support... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking for compiler 'attribute weak_import' support" >&5
+echo $ECHO_N "checking for compiler 'attribute weak_import' support... $ECHO_C" >&6; }
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
+PBX_WEAKREF=0
 
-if test "xweakref("foo")" = "x"
+if test "x" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -20724,7 +20759,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-static void __attribute__((weakref)) *test(void *muffin, ...) {return (void *) 0;}
+ void __attribute__((weak_import)) *test(void *muffin, ...) {return (void *) 0;}
 int
 main ()
 {
@@ -20752,9 +20787,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest.$ac_objext; then
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
+	PBX_WEAKREF=1
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_ATTRIBUTE_weakref 1
+#define HAVE_ATTRIBUTE_weak_import 1
 _ACEOF
 
 else
@@ -20774,7 +20810,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-static void __attribute__((weakref("foo"))) *test(void *muffin, ...) {return (void *) 0;}
+ void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
 int
 main ()
 {
@@ -20802,9 +20838,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest.$ac_objext; then
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
+	PBX_WEAKREF=1
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_ATTRIBUTE_weakref 1
+#define HAVE_ATTRIBUTE_weak_import 1
 _ACEOF
 
 else
@@ -20819,16 +20856,18 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
 
-{ echo "$as_me:$LINENO: checking for compiler 'attribute weak_import' support" >&5
-echo $ECHO_N "checking for compiler 'attribute weak_import' support... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking for compiler 'attribute weakref' support" >&5
+echo $ECHO_N "checking for compiler 'attribute weakref' support... $ECHO_C" >&6; }
 saved_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Wno-unused -Werror"
+PBX_WEAKREF=0
 
-if test "x" = "x"
+if test "xweakref("foo")" = "x"
 then
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -20836,7 +20875,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
- void __attribute__((weak_import)) *test(void *muffin, ...) {return (void *) 0;}
+static void __attribute__((weakref)) *test(void *muffin, ...) {return (void *) 0;}
 int
 main ()
 {
@@ -20864,9 +20903,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest.$ac_objext; then
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
+	PBX_WEAKREF=1
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_ATTRIBUTE_weak_import 1
+#define HAVE_ATTRIBUTE_weakref 1
 _ACEOF
 
 else
@@ -20886,7 +20926,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
- void __attribute__(()) *test(void *muffin, ...) {return (void *) 0;}
+static void __attribute__((weakref("foo"))) *test(void *muffin, ...) {return (void *) 0;}
 int
 main ()
 {
@@ -20914,9 +20954,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest.$ac_objext; then
   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
+	PBX_WEAKREF=1
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_ATTRIBUTE_weak_import 1
+#define HAVE_ATTRIBUTE_weakref 1
 _ACEOF
 
 else
@@ -20931,6 +20972,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+
 CFLAGS="$saved_CFLAGS"
 
 
@@ -52693,6 +52735,7 @@ POW_LIB!$POW_LIB$ac_delim
 HAS_POLL!$HAS_POLL$ac_delim
 PBX_PTHREAD_RWLOCK_INITIALIZER!$PBX_PTHREAD_RWLOCK_INITIALIZER$ac_delim
 PBX_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP!$PBX_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP$ac_delim
+PBX_WEAKREF!$PBX_WEAKREF$ac_delim
 GC_CFLAGS!$GC_CFLAGS$ac_delim
 GC_LDFLAGS!$GC_LDFLAGS$ac_delim
 AST_DECLARATION_AFTER_STATEMENT!$AST_DECLARATION_AFTER_STATEMENT$ac_delim
@@ -52712,7 +52755,6 @@ CONFIG_NEON!$CONFIG_NEON$ac_delim
 CONFIG_NEON29!$CONFIG_NEON29$ac_delim
 CONFIG_NETSNMP!$CONFIG_NETSNMP$ac_delim
 PG_CONFIG!$PG_CONFIG$ac_delim
-PTLIB_CONFIG!$PTLIB_CONFIG$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -52754,6 +52796,7 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+PTLIB_CONFIG!$PTLIB_CONFIG$ac_delim
 PWLIBDIR!$PWLIBDIR$ac_delim
 PWLIB_INCDIR!$PWLIB_INCDIR$ac_delim
 PWLIB_LIBDIR!$PWLIB_LIBDIR$ac_delim
@@ -52793,7 +52836,7 @@ PBX_SYSLOG!$PBX_SYSLOG$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 37; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 38; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index be80977a56ef00f951d2544e25ca18f732ce276c..98005f015fff32e07aab5dfd5f9fbce77091e102 100644
--- a/configure.ac
+++ b/configure.ac
@@ -703,8 +703,8 @@ AST_GCC_ATTRIBUTE(always_inline)
 AST_GCC_ATTRIBUTE(deprecated)
 AST_GCC_ATTRIBUTE(sentinel)
 AST_GCC_ATTRIBUTE(warn_unused_result)
-AST_GCC_ATTRIBUTE(weakref, [weakref("foo")], static)
-AST_GCC_ATTRIBUTE(weak_import)
+AST_GCC_ATTRIBUTE(weak_import, [], [], PBX_WEAKREF)
+AST_GCC_ATTRIBUTE(weakref, [weakref("foo")], static, PBX_WEAKREF)
 
 AC_MSG_CHECKING(for -ffunction-sections support)
 saved_CFLAGS="${CFLAGS}"
diff --git a/main/Makefile b/main/Makefile
index 361b0dc40979aec19a98e8f130411b4705fe91e0..1ec018bb35017407dff10e9770ebfbd559184105 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -26,6 +26,9 @@ OBJS=$(filter-out $(OBJSFILTER),$(SRC:.c=.o))
 # otherwise modules will not have them available if none of the static
 # objects use it.
 OBJS+=stdtime/localtime.o
+ifneq ($(WEAKREF),1:1)
+OBJS+=../res/res_adsi.o
+endif
 
 AST_LIBS += $(OPENSSL_LIB)
 AST_LIBS += $(BKTR_LIB)
diff --git a/makeopts.in b/makeopts.in
index 99fc89e4f5da64fabedc44eac778d5c8fe884d83..71a7c353b33877239f9596bd2a6106f79f2d1749 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -57,6 +57,7 @@ CONFIG_CFLAGS=@CONFIG_CFLAGS@
 CONFIG_LDFLAGS=@CONFIG_LDFLAGS@
 
 GNU_LD=@GNU_LD@
+WEAKREF=@PBX_WEAKREF@
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@