https://gcc.gnu.org/g:525c3940ffbde88050107bd102231e58369a47ea

commit r17-5117-g525c3940ffbde88050107bd102231e58369a47ea
Author: Keith Packard <[email protected]>
Date:   Tue Oct 13 07:26:03 2026 -0600

    [picolibc] Include stdc-predef.h in hosted mode
    
    This mirrors the existing mechanism used by glibc to to set various
    required definitions when no C library header file has been included
    directly.
    
    Signed-off-by: Keith Packard <[email protected]>
    
    gcc/
            * config/picolibc-c.cc: New file.
            * config/t-picolibc: New file
            * config.gcc: Use new files.

Diff:
---
 gcc/config.gcc           |  4 ++++
 gcc/config/picolibc-c.cc | 37 +++++++++++++++++++++++++++++++++++++
 gcc/config/t-picolibc    | 22 ++++++++++++++++++++++
 3 files changed, 63 insertions(+)

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 328c49ac3839..13a0757c5a61 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3673,6 +3673,10 @@ case "${target}_${with_picolibc}" in
 *-picolibc-*|*_yes)
        default_use_cxa_atexit=yes
        use_gcc_stdint=none
+       tmake_file="${tmake_file} t-picolibc"
+       c_target_objs="${c_target_objs} picolibc-c.o"
+       cxx_target_objs="${cxx_target_objs} picolibc-c.o"
+       target_has_targetcm=yes
        # add newlib-stdint.h if not already present
        case "${tm_file}" in
        *newlib-stdint.h*)
diff --git a/gcc/config/picolibc-c.cc b/gcc/config/picolibc-c.cc
new file mode 100644
index 000000000000..b1ea02b3fd36
--- /dev/null
+++ b/gcc/config/picolibc-c.cc
@@ -0,0 +1,37 @@
+/* C-family target hooks initializer for targets possibly using picolibc.
+   Copyright © 2026 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "c-family/c-target.h"
+#include "c-family/c-target-def.h"
+
+/* Implement TARGET_C_PREINCLUDE for picolibc targets.  */
+
+static const char *
+picolibc_c_preinclude (void)
+{
+  return "stdc-predef.h";
+}
+
+#undef TARGET_C_PREINCLUDE
+#define TARGET_C_PREINCLUDE picolibc_c_preinclude
+
+struct gcc_targetcm targetcm = TARGETCM_INITIALIZER;
diff --git a/gcc/config/t-picolibc b/gcc/config/t-picolibc
new file mode 100644
index 000000000000..137a423cafce
--- /dev/null
+++ b/gcc/config/t-picolibc
@@ -0,0 +1,22 @@
+#
+# Copyright © 2026 Keith Packard <[email protected]>
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+picolibc-c.o: config/picolibc-c.cc
+       $(COMPILE) $<
+       $(POSTCOMPILE)

Reply via email to