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


Reply via email to