Re: RETITLED/edited/shorter: Building lang/gcc14 fails only on main [so: 15], works on 14.2-Release and 14.2-Stable, why?

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sun, 27 Apr 2025 22:39:36 UTC
On Apr 27, 2025, at 11:34, Mark Millard <marklmi@yahoo.com> wrote:

> On Apr 27, 2025, at 09:21, Mark Millard <marklmi@yahoo.com> wrote:
> 
>> [I've also dropped mmel@ from the To: list.]
>> 
>> Why does building lang/gcc14 work on each of:
>> 
>> 14.1-Release
>> 14.2-Release
>> 14.2-Stable
>> 
>> but not on main [so: 15]?
> 
> To be more explicit . . .
> 
> For all the combinations of:
> 
> FreeBSD 14.2-* vs. main and lang/gcc13 vs. lang/gcc14
> 
> the only combination that fails is:
> 
> FreeBSD main building lang/gcc14 .
> 
> So changes to both FreeBSD and to lang/gcc* are involved.
> 
> mell@ noted that -static-libgcc use (and, so, libgcc_eh.a
> use) in the build of lang/gcc14 is involved, something
> lang/gcc13 does not use at what is the lang/gcc14 failure
> point.
> 
> I've not managed isolate what contributing difference
> in FreeBSD 14.2 vs. FreeBSD main is also involved.
> 
>> Only main has armv7 lang/gcc14* build failures
>> on the official builders. Seems odd if it is just
>> lang/gcc1[45]* 's problem.
>> 
>> main gets a failure where the config.log shows
>> that it found but rejected a hidden symbol:
>> 
>> configure:3479:  /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/xgcc -B/wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/ -B/usr/local/armv7-portbld-freebsd15.0/bin/ -B/usr/local/armv7-portbl
>> d-freebsd15.0/bin/ -B/usr/local/armv7-portbld-freebsd15.0/lib/ -isystem /usr/local/armv7-portbld-freebsd15.0/include -isystem /usr/local/armv7-portbld-freebsd15.0/sys-include   -fno-checking -o confte
>> st -g -O2 -fno-checking -gtoggle -mcpu=cortex-a7 -DLIBICONV_PLUG -static-libstdc++ -static-libgcc  conftest.c  >&5
>> /usr/local/bin/ld: warning: libunwind.o: missing .note.GNU-stack section implies executable stack
>> /usr/local/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
>> /usr/local/bin/ld: conftest: hidden symbol `__aeabi_unwind_cpp_pr0' in /wrkdirs/usr/ports/lang/gcc14/work/.build/./prev-gcc/libgcc_eh.a(unwind-arm.o) is referenced by DSO
>> /usr/local/bin/ld: final link failed: bad value
>> collect2: error: ld returned 1 exit status
>> 
>> Per mmel@: Note the -static-libgcc is involved,
>> something that only happens for lang/gcc1[45]* .
>> (This explains lang/gcc13 building on main.)
>> 
>> Official 14.1R builder success logs include:
>> 
>> https://pkg-status.freebsd.org/ampere3/data/141releng-armv7-default/a66c1b68c862/logs/gcc14-14.2.0_3.log
>> 
>> ---Begin OPTIONS List---
>> ===> The following configuration options are available for gcc14-14.2.0_3:
>>  GRAPHITE=off: Support for Graphite loop optimizations
>> ====> Options available for the radio BOOTSTRAP: you can only select none or one of them
>>  LTO_BOOTSTRAP=off: Build using a full LTO bootstrap
>>  STANDARD_BOOTSTRAP=on: Build using a full bootstrap without LTO
>> ===> Use 'make config' to modify these settings
>> ---End OPTIONS List---
>> 
>> https://pkg-status.freebsd.org/ampere3/data/141releng-armv7-default/a66c1b68c862/logs/gcc14-devel-14.2.1.s20250308,1.log
>> 
>> ---Begin OPTIONS List---
>> ===> The following configuration options are available for gcc14-devel-14.2.1.s20250308,1:
>>  GRAPHITE=off: Support for Graphite loop optimizations
>> ====> Options available for the single BOOTSTRAP: you have to select exactly one of them
>>  LTO_BOOTSTRAP=off: Build using a full LTO bootstrap
>>  STANDARD_BOOTSTRAP=on: Build using a full bootstrap without LTO
>> ===> Use 'make config' to modify these settings
>> ---End OPTIONS List---
>> 
>> Note: armv7 has not had much build time in 2025-Apr so far, thus
>> the lack of 14.2R examples.
>> 
>> 
>> And local builds via:
>> 
>> release-armv7    14.2-RELEASE-p2           armv7         pkgbase 2025-03-13 21:50:17 /usr/local/poudriere/jails/release-armv7
>> 
>> [01:58:58] [01] [01:34:53] Finished   lang/gcc14 | gcc14-14.2.0_3: Success
>> 
>> and via:
>> 
>> official-armv7   14.2-STABLE               armv7         pkgbase 2025-03-13 21:47:04 /usr/local/poudriere/jails/official-armv7
>> 
>> [01:53:58] [01] [01:32:13] Finished   lang/gcc14 | gcc14-14.2.0_3: Success
>> 
>> work as well.
>> 
>> The failing context on main has (involving a grep for
>> lines of interest):
>> 
>> File: /wrkdirs/usr/ports/lang/gcc14/work/.build/prev-gcc/libgcc_eh.a(unwind-arm.o)
>> 000000f8 00002f1a R_ARM_GOT_BREL      00000c30 __aeabi_unwind_cpp_pr2
>> 000000fc 0000301a R_ARM_GOT_BREL      00000c28 __aeabi_unwind_cpp_pr1
>> 46: 0000000000000c20     8 FUNC    GLOBAL HIDDEN     1 __aeabi_unwind_cpp_pr0
>> 47: 0000000000000c30     8 FUNC    WEAK   HIDDEN     1 __aeabi_unwind_cpp_pr2
>> 48: 0000000000000c28     8 FUNC    WEAK   HIDDEN     1 __aeabi_unwind_cpp_pr1
>> 
>> That looks the same as what is install by the working
>> builds on:
>> 
>> 14.1-Release
>> 14.2-Release
>> 14.2-Stable
>> 
>> The official build logs show the following also
>> fail --just on main:
>> 
>> lang/gcc14-devel
>> lang/gcc15-devel
> 

One armv7 FreeBSD 14.2 vs. main difference that I've just noticed is . . .


armv7 FreeBSD stable/14 based:

# readelf -a /usr/lib/libgcc_s.so | grep -e '__aeabi_unwind_cpp_pr' -e '^File:' | grep -v -e ' R_ARM_NONE ' -e ' UND ' | less
0002c568 00001715 R_ARM_GLOB_DAT      000187c4 __aeabi_unwind_cpp_pr2
0002c558 00005715 R_ARM_GLOB_DAT      000184b4 __aeabi_unwind_cpp_pr0
0002c560 00005e15 R_ARM_GLOB_DAT      000187b8 __aeabi_unwind_cpp_pr1
    23: 00000000000187c4    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr2@@GCC_3.5 (8)
    87: 00000000000184b4    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr0@@GCC_3.5 (8)
    94: 00000000000187b8    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr1@@GCC_3.5 (8)


armv7 FreeBSD main based:

# readelf -a /usr/lib/libgcc_s.so | grep -e '__aeabi_unwind_cpp_pr' -e '^File:' | grep -v -e ' R_ARM_NONE ' -e ' UND ' | less
00028f98 00001515 R_ARM_GLOB_DAT      0001674c __aeabi_unwind_cpp_pr2
00028f88 00005515 R_ARM_GLOB_DAT      00016570 __aeabi_unwind_cpp_pr0
00028f90 00005c15 R_ARM_GLOB_DAT      00016740 __aeabi_unwind_cpp_pr1
    21: 000000000001674c    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr2@@GCC_3.5 (8)
    85: 0000000000016570    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr0@@GCC_3.5 (8)
    92: 0000000000016740    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr1@@GCC_3.5 (8)
   256: 0000000000016570    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr0
   273: 0000000000016740    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr1
   326: 000000000001674c    12 FUNC    GLOBAL DEFAULT   14 __aeabi_unwind_cpp_pr2


So main has __aeabi_unwind_cpp_p* symbols without @@GCC_3.5 notation included
in libgcc_s.so but stable/14 does not have those.


===
Mark Millard
marklmi at yahoo.com