Hi Iain! On 2024-01-16T15:00:16+0000, Iain Sandoe <iains....@gmail.com> wrote: > Currently, these section names have wrong syntax for Mach-O. > Although they were added some time ago; recently added tests are > now emitting them leading to new fails on Darwin. > > This adds a Mach-O variant for each.
> gcc/lto-section-names.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/gcc/lto-section-names.h b/gcc/lto-section-names.h > index a743deb4efb..1cdadf36ec0 100644 > --- a/gcc/lto-section-names.h > +++ b/gcc/lto-section-names.h > @@ -25,7 +25,11 @@ along with GCC; see the file COPYING3. If not see > name for the functions and static_initializers. For other types of > sections a '.' and the section type are appended. */ > #define LTO_SECTION_NAME_PREFIX ".gnu.lto_" > +#if OBJECT_FORMAT_MACHO > +#define OFFLOAD_SECTION_NAME_PREFIX "__GNU_OFFLD_LTO," > +#else > #define OFFLOAD_SECTION_NAME_PREFIX ".gnu.offload_lto_" > +#endif > > /* Can be either OFFLOAD_SECTION_NAME_PREFIX when we stream IR for offload > compiler, or LTO_SECTION_NAME_PREFIX for LTO case. */ > @@ -35,8 +39,14 @@ extern const char *section_name_prefix; > > #define LTO_SEGMENT_NAME "__GNU_LTO" > > +#if OBJECT_FORMAT_MACHO > +#define OFFLOAD_VAR_TABLE_SECTION_NAME "__GNU_OFFLOAD,__vars" > +#define OFFLOAD_FUNC_TABLE_SECTION_NAME "__GNU_OFFLOAD,__funcs" > +#define OFFLOAD_IND_FUNC_TABLE_SECTION_NAME "__GNU_OFFLOAD,__ind_fns" > +#else > #define OFFLOAD_VAR_TABLE_SECTION_NAME ".gnu.offload_vars" > #define OFFLOAD_FUNC_TABLE_SECTION_NAME ".gnu.offload_funcs" > #define OFFLOAD_IND_FUNC_TABLE_SECTION_NAME ".gnu.offload_ind_funcs" > +#endif > > #endif /* GCC_LTO_SECTION_NAMES_H */ Just to note that, per my understanding, this will require corresponding changes elsewhere, once you attempt to actually enable offloading compilation for Darwin (which -- ;-) I suspect -- is not on your agenda right now): $ git grep --cached -F .gnu.offload_ gcc/config/gcn/mkoffload.cc: if (sscanf (buf, " .section .gnu.offload_vars%c", &dummy) > 0) gcc/config/gcn/mkoffload.cc: else if (sscanf (buf, " .section .gnu.offload_funcs%c", &dummy) > 0) gcc/config/gcn/mkoffload.cc: /* Likewise for .gnu.offload_vars; used for reverse offload. */ gcc/config/gcn/mkoffload.cc: else if (sscanf (buf, " .section .gnu.offload_ind_funcs%c", &dummy) > 0) ['gcc/lto-section-names.h' adjusted per above.] libgcc/offloadstuff.c:#define OFFLOAD_FUNC_TABLE_SECTION_NAME ".gnu.offload_funcs" libgcc/offloadstuff.c:#define OFFLOAD_IND_FUNC_TABLE_SECTION_NAME ".gnu.offload_ind_funcs" libgcc/offloadstuff.c:#define OFFLOAD_VAR_TABLE_SECTION_NAME ".gnu.offload_vars" lto-plugin/lto-plugin.c: if (startswith (name, ".gnu.offload_lto_.opts")) Grüße Thomas