Commit 73e1414c by Martin Sebor Committed by Martin Sebor

PR bootstrap/77819 - undefined reference to gnu_libc_printf_pointer_format with uClibc

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
parent 9563bfcd
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> 2016-10-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* fold-const.c (native_encode_real): Fix logic for selecting offset * fold-const.c (native_encode_real): Fix logic for selecting offset
......
...@@ -24,9 +24,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -24,9 +24,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h" #include "tree.h"
#include "linux-protos.h" #include "linux-protos.h"
#undef TARGET_PRINTF_POINTER_FORMAT
#define TARGET_PRINTF_POINTER_FORMAT gnu_libc_printf_pointer_format
bool bool
linux_libc_has_function (enum function_class fn_class) linux_libc_has_function (enum function_class fn_class)
{ {
...@@ -40,16 +37,3 @@ linux_libc_has_function (enum function_class fn_class) ...@@ -40,16 +37,3 @@ linux_libc_has_function (enum function_class fn_class)
return false; 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";
}
...@@ -209,6 +209,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -209,6 +209,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#endif #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 #undef TARGET_PRINTF_POINTER_FORMAT
#define TARGET_PRINTF_POINTER_FORMAT gnu_libc_printf_pointer_format #define TARGET_PRINTF_POINTER_FORMAT linux_printf_pointer_format
...@@ -1523,6 +1523,22 @@ default_printf_pointer_format (tree, const char **flags) ...@@ -1523,6 +1523,22 @@ default_printf_pointer_format (tree, const char **flags)
return "%zx"; 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 tree
default_builtin_tm_load_store (tree ARG_UNUSED (type)) default_builtin_tm_load_store (tree ARG_UNUSED (type))
{ {
......
...@@ -192,7 +192,7 @@ extern bool no_c99_libc_has_function (enum function_class); ...@@ -192,7 +192,7 @@ extern bool no_c99_libc_has_function (enum function_class);
extern bool gnu_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* 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 const char* solaris_printf_pointer_format (tree, const char **);
extern tree default_builtin_tm_load_store (tree); extern tree default_builtin_tm_load_store (tree);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment