On May 16, 2025, at 08:52, Lorenzo Salvadore <develo...@lorenzosalvadore.it> wrote:
> On Monday, May 5th, 2025 at 07:13, Mark Millard <mark...@yahoo.com> wrote: > >> >> >> On May 4, 2025, at 03:13, Mark Millard mark...@yahoo.com wrote: >> >>> On May 4, 2025, at 01:18, Lorenzo Salvadore develo...@lorenzosalvadore.it >>> wrote: >>> >>>> On Sunday, May 4th, 2025 at 05:07, Mark Millard mark...@yahoo.com wrote: >>>> >>>>> FYI: >>>>> >>>>> /wrkdirs/usr/ports/lang/gcc15/work/gcc-15.1.0/libgcc/unwind-dw2-fde-dip.c:69:10: >>>>> error: 'ElfW' redefined [-Werror] >>>>> 69 | # define ElfW __ElfN >>>>> | ^~~~ >>>>> In file included from /usr/include/machine/elf.h:45, >>>>> from /usr/include/elf.h:37, >>>>> from >>>>> /wrkdirs/usr/ports/lang/gcc15/work/gcc-15.1.0/libgcc/unwind-dw2-fde-dip.c:36: >>>>> /usr/include/sys/elf_generic.h:59:9: note: this is the location of the >>>>> previous definition >>>>> 59 | #define ElfW(x) __ElfN(x) >>>>> | ^~~~ >>>> >>>> Hi Mark, >>>> >>>> Could you please test the patch below? >>> >>> FYI . . . >>> >>> I've been using: >>> >>> # git -C /usr/ports/ status lang/gcc15-devel/ >>> On branch main >>> Your branch is up to date with 'freebsd/main'. >>> >>> Untracked files: >>> (use "git add <file>..." to include in what will be committed) >>> lang/gcc15-devel/files/patch-libgcc_unwind-dw2-fde-dip.c >>> >>> nothing added to commit but untracked files present (use "git add" to track) >>> >>> # cat /usr/ports/lang/gcc15-devel/files/patch-libgcc_unwind-dw2-fde-dip.c >>> --- >>> /wrkdirs/usr/ports/lang/gcc15-devel/work/gcc-15-20250209/libgcc/unwind-dw2-fde-dip.c.orig >>> 2025-02-27 22:35:01.497828000 -0800 >>> +++ >>> /wrkdirs/usr/ports/lang/gcc15-devel/work/gcc-15-20250209/libgcc/unwind-dw2-fde-dip.c >>> 2025-02-27 22:37:07.418603000 -0800 >>> @@ -66,7 +66,6 @@ >>> #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ >>> && defined(TARGET_DL_ITERATE_PHDR) \ >>> && (defined(DragonFly) || defined(FreeBSD)) >>> -# define ElfW __ElfN >>> # define USE_PT_GNU_EH_FRAME >>> #endif >>> >>> for my rare builds of lang/gcc15-devel/ prior to lang/gcc15 >>> existing. I've used the patch on amd64 as well, even though >>> it does not get the error. >>> >>> For lang/gcc15/ I'm now using: >>> >>> # cat /usr/ports/lang/gcc15/files/patch-libgcc_unwind-dw2-fde-dip.c >>> --- >>> /wrkdirs/usr/ports/lang/gcc15/work/gcc-15.1.0/libgcc/unwind-dw2-fde-dip.c.orig >>> 2025-04-25 01:18:04.000000000 -0700 >>> +++ >>> /wrkdirs/usr/ports/lang/gcc15/work/gcc-15.1.0/libgcc/unwind-dw2-fde-dip.c >>> 2025-05-03 22:11:41.826654000 -0700 >>> @@ -66,7 +66,6 @@ >>> #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ >>> && defined(TARGET_DL_ITERATE_PHDR) \ >>> && (defined(DragonFly) || defined(FreeBSD)) >>> -# define ElfW __ElfN >>> # define USE_PT_GNU_EH_FRAME >>> #endif >>> >>> FreeBSD defines ElfW(x) to translate Linux's convention >>> to FreeBSD's convention. gcc15 defines ElfW to convert >>> its convention to FreeBSD's convention. The above take >>> the point of view that just one of the 2 conversions >>> should be in use and that leaving the FreeBSD code alone >>> should be preferred. >>> >>> I'll note that the range of things built via lang/gcc15*/ >>> in my context is small so my use is not all that general >>> of a test. > > Thanks for the detailed explanation. I prefer your patch to the > one I had proposed (but thanks for testing it!). In this > week GCC 15 snapshot I am going to commit a slightly different > version of it, that I believe is more upstream friendly. I did not and do not know what the status should be for __DragonFly__ . So I just used an edit that directly showed just what I was controlling for FreeBSD. Such is a type of issue that can make it messier to have things known-ready for an upstream. I did not have any expectation that the details would necessarily survive upstream. > --- libgcc/unwind-dw2-fde-dip.c.orig 2025-05-16 15:47:38 UTC > +++ libgcc/unwind-dw2-fde-dip.c > @@ -59,13 +59,13 @@ > > #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ > && defined(TARGET_DL_ITERATE_PHDR) \ > - && defined(__linux__) > + && (defined(__linux__) || defined(__FreeBSD__)) > # define USE_PT_GNU_EH_FRAME > #endif > > #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ > && defined(TARGET_DL_ITERATE_PHDR) \ > - && (defined(__DragonFly__) || defined(__FreeBSD__)) > + && defined(__DragonFly__) > # define ElfW __ElfN > # define USE_PT_GNU_EH_FRAME > #endif In my ignorance of what is appropriate for __DragonFly__ , looks good to me. > Once the patch is successfully tested for a while in our > ports tree, I will attempt to upstream it. Sounds good. === Mark Millard marklmi at yahoo.com