diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
index b2192e4066..9c8de4636b 100644
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -2423,10 +2423,11 @@ set_define("_LIBCPP_ALWAYS_INLINE", libcxx_override_visibility.empty)
 set_define("_LIBCPP_HIDE_FROM_ABI", libcxx_override_visibility.hide_from_abi)
 
 
-@depends(target, build_environment)
-def visibility_flags(target, env):
+@depends(target, build_environment,
+         try_compile(language="C++", includes=["new"], body="#ifndef _LIBCPP_VERSION\n#error 1\n#endif"))
+def visibility_flags(target, env, using_libcxx):
     if target.os != "WINNT":
-        if target.kernel in ("Darwin", "FreeBSD", "OpenBSD"):
+        if using_libcxx:
             return ("-fvisibility=hidden", "-fvisibility-inlines-hidden")
         return (
             "-I%s/system_wrappers" % os.path.join(env.dist),
