Index: Makefile.am
===================================================================
--- Makefile.am	(revision 226429)
+++ Makefile.am	(working copy)
@@ -57,7 +57,7 @@ libquadmath_la_SOURCES = \
   math/erfq.c math/logq.c math/sqrtq.c math/expm1q.c math/lroundq.c \
   math/tanhq.c math/expq.c math/modfq.c math/tanq.c math/fabsq.c \
   math/nanq.c math/tgammaq.c math/finiteq.c math/nextafterq.c \
-  math/truncq.c math/floorq.c math/powq.c math/fmaq.c \
+  math/truncq.c math/floorq.c math/powq.c math/fmaq.c math/logbq.c \
   math/cacoshq.c math/cacosq.c math/casinhq.c math/casinq.c \
   math/catanhq.c math/catanq.c math/cimagq.c math/conjq.c math/cprojq.c \
   math/crealq.c math/fdimq.c math/fmaxq.c math/fminq.c math/ilogbq.c \
Index: libquadmath.texi
===================================================================
--- libquadmath.texi	(revision 226429)
+++ libquadmath.texi	(working copy)
@@ -180,6 +180,7 @@ The following mathematical functions are
 @item @code{lgammaq}: logarithmic gamma function
 @item @code{llrintq}: round to nearest integer value
 @item @code{llroundq}: round to nearest integer value away from zero
+@item @code{logbq}: get exponent of the value
 @item @code{logq}: natural logarithm function
 @item @code{log10q}: base 10 logarithm function
 @item @code{log1pq}: compute natural logarithm of the value plus one
Index: math/logbq.c
===================================================================
--- math/logbq.c	(revision 0)
+++ math/logbq.c	(working copy)
@@ -0,0 +1,47 @@
+/* s_logbl.c -- long double version of s_logb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * long double logbl(x)
+ * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
+ * Use ilogb instead.
+ */
+
+#include "quadmath-imp.h"
+
+__float128
+logbq (__float128 x)
+{
+  int64_t lx, hx, ex;
+
+  GET_FLT128_WORDS64 (hx, lx, x);
+  hx &= 0x7fffffffffffffffLL;	/* high |x| */
+  if ((hx | lx) == 0)
+    return -1.0 / fabsq (x);
+  if (hx >= 0x7fff000000000000LL)
+    return x * x;
+  if ((ex = hx >> 48) == 0)	/* IEEE 754 logb */
+    {
+      /* POSIX specifies that denormal number is treated as
+         though it were normalized.  */
+      int ma;
+      if (hx == 0)
+	ma = __builtin_clzll (lx) + 64;
+      else
+	ma = __builtin_clzll (hx);
+      ex -= ma - 16;
+    }
+  return (__float128) (ex - 16383);
+}
Index: quadmath.h
===================================================================
--- quadmath.h	(revision 226429)
+++ quadmath.h	(working copy)
@@ -76,6 +76,7 @@ extern __float128 ldexpq (__float128, in
 extern __float128 lgammaq (__float128) __quadmath_throw;
 extern long long int llrintq (__float128) __quadmath_throw;
 extern long long int llroundq (__float128) __quadmath_throw;
+extern __float128 logbq (__float128) __quadmath_throw;
 extern __float128 logq (__float128) __quadmath_throw;
 extern __float128 log10q (__float128) __quadmath_throw;
 extern __float128 log2q (__float128) __quadmath_throw;
Index: quadmath.map
===================================================================
--- quadmath.map	(revision 226429)
+++ quadmath.map	(working copy)
@@ -96,3 +96,8 @@ QUADMATH_1.0 {
   local:
     *;
 };
+
+QUADMATH_1.1 {
+  global:
+    logbq;
+} QUADMATH_1.0;
Index: quadmath_weak.h
===================================================================
--- quadmath_weak.h	(revision 226429)
+++ quadmath_weak.h	(working copy)
@@ -72,6 +72,7 @@ __qmath3 (ldexpq)
 __qmath3 (lgammaq)
 __qmath3 (llrintq)
 __qmath3 (llroundq)
+__qmath3 (logbq)
 __qmath3 (logq)
 __qmath3 (log10q)
 __qmath3 (log1pq)
