[Bug 297601] lang/gcc15: fix build after base d08296c7ab0d

[email protected]
Newsgroups gmane.os.freebsd.devel.ports.bugs
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297601

            Bug ID: 297601
           Summary: lang/gcc15: fix build after base d08296c7ab0d
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: [email protected]
          Reporter: [email protected]
             Flags: maintainer-feedback?([email protected])
          Assignee: [email protected]

After base d08296c7ab0d7bb259bf7b8cdf9ffb819c1929ab ("libc: Implement
qualifier-preserving standard library functions"), lang/gcc15 fails to build
with errors like:

  /wrkdirs/usr/ports/lang/gcc15/work/gcc-15.2.0/libgomp/affinity-fmt.c: In
function 'gomp_display_affinity':
  /wrkdirs/usr/ports/lang/gcc15/work/gcc-15.2.0/libgomp/affinity-fmt.c:330:25:
error: initialization discards 'const' qualifier from pointer target type
[-Werror=discarded-qualifiers]
    330 |               char *q = strchr (p + 1, '}');
        |                         ^~~~~~

and:

  In file included from
/wrkdirs/usr/ports/lang/gcc15/work/.build/gcc/include-fixed/stdio.h:52,
                   from cp-demangle.c:109:
 
/wrkdirs/usr/ports/lang/gcc15/work/gcc-15.2.0/libstdc++-v3/../include/libiberty.h:225:14:
error: expected identifier or '(' before '_Generic'
    225 | extern void *memrchr(const void *, int, size_t);
        |              ^~~~~~~

The former is because strchr with a 'const char *' input now returns a 'const
char*'. This is easily fixed by making 'q' a 'const char *' too.

The latter is because memrchr is now a macro, similar to the other functions in
<string.h>, and libiberty.h attempts to incorrectly redeclare it.

This is because cp-demangle.c includes libiberty.h, but does not include the
config.h generated for libiberty.h, instead using the config.h generated for
libstdc++.

The problem is really with the way upstream creates its config.h headers: they
should either make libiberty.h automatically include its own config.h file, or
rename that one to libiberty-config.h, so it can be included at the same time
as the libstdc++ config.h header.

The easiest way to fix it is to add a '!defined(__FreeBSD__)' conditional to
the #if statement that attempts to declare the incompatible memrchr.

-- 
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.