https://gcc.gnu.org/g:352cc9b57b2cfd62e37c962b6d2a83ed6d4827d2
commit r16-3336-g352cc9b57b2cfd62e37c962b6d2a83ed6d4827d2 Author: Dimitar Dimitrov <dimi...@dinux.eu> Date: Sat Aug 16 21:52:52 2025 +0300 pru: Define multilib for different core variants Enable multilib builds for contemporary PRU core versions (AM335x and later), and older versions present in AM18xx. gcc/ChangeLog: * config.gcc: Include pru/t-multilib. * config/pru/pru.h (MULTILIB_DEFAULTS): Define. * config/pru/t-multilib: New file. Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu> Diff: --- gcc/config.gcc | 2 +- gcc/config/pru/pru.h | 3 +++ gcc/config/pru/t-multilib | 29 +++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index 517df40e5dee..db813a7b561c 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3207,7 +3207,7 @@ powerpcle-*-eabi*) ;; pru*-*-*) tm_file="elfos.h newlib-stdint.h ${tm_file}" - tmake_file="${tmake_file} pru/t-pru" + tmake_file="${tmake_file} pru/t-multilib pru/t-pru" extra_objs="pru-pragma.o pru-passes.o" use_gcc_stdint=wrap ;; diff --git a/gcc/config/pru/pru.h b/gcc/config/pru/pru.h index 6c0719b5c1dc..9d547ed3bad0 100644 --- a/gcc/config/pru/pru.h +++ b/gcc/config/pru/pru.h @@ -65,6 +65,9 @@ #undef ENDFILE_SPEC #define ENDFILE_SPEC "%{!mabi=ti:-lgloss} " +#undef MULTILIB_DEFAULTS +#define MULTILIB_DEFAULTS { "mloop", "mmul", "mfillzero" } + /* TI ABI mandates that ELF symbols do not start with any prefix. */ #undef USER_LABEL_PREFIX #define USER_LABEL_PREFIX "" diff --git a/gcc/config/pru/t-multilib b/gcc/config/pru/t-multilib new file mode 100644 index 000000000000..1e3c2b8abaa7 --- /dev/null +++ b/gcc/config/pru/t-multilib @@ -0,0 +1,29 @@ +# Copyright (C) 2025 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/>. + +MULTILIB_OPTIONS = +MULTILIB_OPTIONS += mloop/mno-loop +MULTILIB_OPTIONS += mmul/mno-mul +MULTILIB_OPTIONS += mfillzero/mno-fillzero + +# Build two variants: +# - Newer PRU core versions, present in AM335x and later. +# - Older PRU core versions, present in AM18xx. +MULTILIB_REQUIRED = +MULTILIB_REQUIRED += mloop/mmul/mfillzero +MULTILIB_REQUIRED += mno-loop/mno-mul/mno-fillzero