PR bootstrap/77819 - undefined reference to gnu_libc_printf_pointer_format with uClibc
authorMartin Sebor <msebor@redhat.com>
Wed, 5 Oct 2016 15:21:40 +0000 (15:21 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Wed, 5 Oct 2016 15:21:40 +0000 (09:21 -0600)
gcc/ChangeLog:

PR bootstrap/77819
* config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Define macro.
* config/linux.c (gnu_libc_printf_pointer_format): Remove.
* targhooks.c [DEFAULT_LIBC == LIBC_UCLIBC) && SINGLE_LIBC]
(default_printf_pointer_format): Define function.
* targhooks.c (linux_printf_pointer_format): Define new function.
* targhooks.h (linux_printf_pointer_format): Declare.
(gnu_libc_printf_pointer_format): Remove declaration.

From-SVN: r240793

gcc/ChangeLog
gcc/config/linux.c
gcc/config/linux.h
gcc/targhooks.c
gcc/targhooks.h

index 6b4dc9cd14504fe2663af27fd11b7212b31ca87e..2b568782c338618c957dae0e0f0710908872cc91 100644 (file)
@@ -1,3 +1,14 @@
+2016-10-05  Martin Sebor  <msebor@redhat.com>
+
+       PR bootstrap/77819
+       * config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Define macro.
+       * config/linux.c (gnu_libc_printf_pointer_format): Remove.
+       * targhooks.c [DEFAULT_LIBC == LIBC_UCLIBC) && SINGLE_LIBC]
+       (default_printf_pointer_format): Define function.
+       * targhooks.c (linux_printf_pointer_format): Define new function.
+       * targhooks.h (linux_printf_pointer_format): Declare.
+       (gnu_libc_printf_pointer_format): Remove declaration.
+
 2016-10-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * fold-const.c (native_encode_real): Fix logic for selecting offset
index 9aac38b8658d58ad707a256c505c3b3ae55c2794..a393d3b78bab8bf98c153e168e0b27ef7b2c4787 100644 (file)
@@ -24,9 +24,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "linux-protos.h"
 
-#undef TARGET_PRINTF_POINTER_FORMAT
-#define TARGET_PRINTF_POINTER_FORMAT gnu_libc_printf_pointer_format
-
 bool
 linux_libc_has_function (enum function_class fn_class)
 {
@@ -40,16 +37,3 @@ linux_libc_has_function (enum function_class fn_class)
 
   return false;
 }
-
-/* Glibc formats pointers as if by "%zx" except for the null pointer
-   which outputs "(nil)".  It ignores the pound ('#') format flag but
-   interprets the space and plus flags the same as in the integer
-   directive.  */
-
-const char*
-gnu_libc_printf_pointer_format (tree arg, const char **flags)
-{
-  *flags = " +";
-
-  return arg && integer_zerop (arg) ? "(nil)" : "%#zx";
-}
index 3ff005b90a2acde65fc5444137647a2483c909f9..7211da2008978f75cca3c639dcd92e9dc9d3a481 100644 (file)
@@ -209,6 +209,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #endif
 
-/* The format string to which "%p" corresponds.  */
+/* The format string to which "%p" corresponds (same in Glibc and
+   uClibc.  */
 #undef TARGET_PRINTF_POINTER_FORMAT
-#define TARGET_PRINTF_POINTER_FORMAT gnu_libc_printf_pointer_format
+#define TARGET_PRINTF_POINTER_FORMAT linux_printf_pointer_format
index d75650fede333ecdc3d727ba107a0447ef9a1923..c7977be57d47fc9ce30f5ed1f22e9de86d08d7b3 100644 (file)
@@ -1523,6 +1523,22 @@ default_printf_pointer_format (tree, const char **flags)
   return "%zx";
 }
 
+/* For Glibc and uClibc targets also define the hook here because
+   otherwise it would have to be duplicated in each target's .c file
+   (such as in bfin/bfin.c and c6x/c6x.c, etc.)
+   Glibc and uClibc format pointers as if by "%zx" except for the null
+   pointer which outputs "(nil)".  It ignores the pound ('#') format
+   flag but interprets the space and plus flags the same as in the integer
+   directive.  */
+
+const char*
+linux_printf_pointer_format (tree arg, const char **flags)
+{
+  *flags = " +";
+
+  return arg && integer_zerop (arg) ? "(nil)" : "%#zx";
+}
+
 tree
 default_builtin_tm_load_store (tree ARG_UNUSED (type))
 {
index 3356f0afe0fbb523c7917969f5f84a48fd4d97ab..afb1c00caf491687e3645b192e6bba0a33cbc2ec 100644 (file)
@@ -192,7 +192,7 @@ extern bool no_c99_libc_has_function (enum function_class);
 extern bool gnu_libc_has_function (enum function_class);
 
 extern const char* default_printf_pointer_format (tree, const char **);
-extern const char* gnu_libc_printf_pointer_format (tree, const char **);
+extern const char* linux_printf_pointer_format (tree, const char **);
 extern const char* solaris_printf_pointer_format (tree, const char **);
 
 extern tree default_builtin_tm_load_store (tree);