I now also pushed this back to the gcc-14 and gcc-13 release branches.

(The gcc-12 branch is presumably to end in a couple of months, so I have 
not pushed it there yet, but can do so if there is desire.)


Sorry this fell through the cracks originally - and thank you for the
contribution, Andreas!

Gerald


On Sun, 9 Jun 2024, Gerald Pfeifer wrote:
> On Fri, 13 Aug 2021, Andreas Tobler via Gcc-patches wrote:
>> I would like to commit the attached patch to trunk and after a settling 
>> period also to all open branches.
>> Is this ok?
> Our MAINTAINERS file has the following entry:
> 
>   freebsd   Andreas Tobler   <andre...@gcc.gnu.org>
> 
> So ... yes. :-)
>  
> Seeing this did not make it into our tree, I applied the patchset,
> bootstrapped on x86_64-unknown-freebsd13.2 and pushed with a minor 
> simplification to the ChangeLog. Patch as pushed below...
> 
> Gerald
> 
> 
> commit 48abb540701447b0cd9df7542720ab65a34fc1b1
> Author: Andreas Tobler <andre...@gcc.gnu.org>
> Date:   Sun Jun 9 23:18:04 2024 +0200
> 
>     FreeBSD: Stop linking _p libs for -pg as of FreeBSD 14
>     
>     As of FreeBSD version 14, FreeBSD no longer provides profiled system
>     libraries like libc_p and libpthread_p. Stop linking against them if
>     the FreeBSD major version is 14 or more.
>     
>     gcc:
>             * config/freebsd-spec.h: Change fbsd-lib-spec for FreeBSD > 13,
>             do not link against profiled system libraries if -pg is invoked.
>             Add a define to note about this change.
>             * config/aarch64/aarch64-freebsd.h: Use the note to inform if
>             -pg is invoked on FreeBSD > 13.
>             * config/arm/freebsd.h: Likewise.
>             * config/i386/freebsd.h: Likewise.
>             * config/i386/freebsd64.h: Likewise.
>             * config/riscv/freebsd.h: Likewise.
>             * config/rs6000/freebsd64.h: Likewise.
>             * config/rs6000/sysv4.h: Likeise.
> 
> diff --git a/gcc/config/aarch64/aarch64-freebsd.h 
> b/gcc/config/aarch64/aarch64-freebsd.h
> index 53cc17a1caf..e26d69ce46c 100644
> --- a/gcc/config/aarch64/aarch64-freebsd.h
> +++ b/gcc/config/aarch64/aarch64-freebsd.h
> @@ -35,6 +35,7 @@
>  #undef  FBSD_TARGET_LINK_SPEC
>  #define FBSD_TARGET_LINK_SPEC "                                 \
>      %{p:%nconsider using `-pg' instead of `-p' with gprof (1)}  \
> +    " FBSD_LINK_PG_NOTE "                                    \
>      %{v:-V}                                                     \
>      %{assert*} %{R*} %{rpath*} %{defsym*}                       \
>      %{shared:-Bshareable %{h*} %{soname*}}                      \
> diff --git a/gcc/config/arm/freebsd.h b/gcc/config/arm/freebsd.h
> index 9d0a5a842ab..ee4860ae637 100644
> --- a/gcc/config/arm/freebsd.h
> +++ b/gcc/config/arm/freebsd.h
> @@ -47,6 +47,7 @@
>  #undef       LINK_SPEC
>  #define LINK_SPEC "                                                  \
>    %{p:%nconsider using `-pg' instead of `-p' with gprof (1)}         \
> +  " FBSD_LINK_PG_NOTE "                                                      
> \
>    %{v:-V}                                                            \
>    %{assert*} %{R*} %{rpath*} %{defsym*}                                      
> \
>    %{shared:-Bshareable %{h*} %{soname*}}                             \
> diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h
> index a6d1ad1280f..f43056bf2cf 100644
> --- a/gcc/config/freebsd-spec.h
> +++ b/gcc/config/freebsd-spec.h
> @@ -92,19 +92,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  
> If not, see
>     libc, depending on whether we're doing profiling or need threads support.
>     (similar to the default, except no -lg, and no -p).  */
>  
> +#if FBSD_MAJOR < 14
> +#define FBSD_LINK_PG_NOTHREADS       "%{!pg: -lc}  %{pg: -lc_p}"
> +#define FBSD_LINK_PG_THREADS "%{!pg: %{pthread:-lpthread} -lc} "     \
> +                             "%{pg: %{pthread:-lpthread} -lc_p}"
> +#define FBSD_LINK_PG_NOTE ""
> +#else
> +#define FBSD_LINK_PG_NOTHREADS "%{-lc} "
> +#define FBSD_LINK_PG_THREADS   "%{pthread:-lpthread} -lc "
> +#define FBSD_LINK_PG_NOTE "%{pg:%nFreeBSD no longer provides profiled "\
> +                       "system libraries}"
> +#endif
> +
>  #ifdef FBSD_NO_THREADS
>  #define FBSD_LIB_SPEC "                                                      
> \
>    %{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \
>  is built with the --enable-threads configure-time option.}           \
>    %{!shared:                                                         \
> -    %{!pg: -lc}                                                              
> \
> -    %{pg:  -lc_p}                                                    \
> +    " FBSD_LINK_PG_NOTHREADS "                                               
> \
>    }"
>  #else
>  #define FBSD_LIB_SPEC "                                                      
> \
>    %{!shared:                                                         \
> -    %{!pg: %{pthread:-lpthread} -lc}                                 \
> -    %{pg:  %{pthread:-lpthread_p} -lc_p}                             \
> +    " FBSD_LINK_PG_THREADS "                                         \
>    }                                                                  \
>    %{shared:                                                          \
>      %{pthread:-lpthread} -lc                                         \
> diff --git a/gcc/config/i386/freebsd.h b/gcc/config/i386/freebsd.h
> index 3c57dc7cfae..583c752bb76 100644
> --- a/gcc/config/i386/freebsd.h
> +++ b/gcc/config/i386/freebsd.h
> @@ -80,6 +80,7 @@ along with GCC; see the file COPYING3.  If not see
>  #undef       LINK_SPEC
>  #define LINK_SPEC "\
>    %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
> +  " FBSD_LINK_PG_NOTE " \
>    %{v:-V} \
>    %{assert*} %{R*} %{rpath*} %{defsym*} \
>    %{shared:-Bshareable %{h*} %{soname*}} \
> diff --git a/gcc/config/i386/freebsd64.h b/gcc/config/i386/freebsd64.h
> index af3fc3018b7..12985e22ef9 100644
> --- a/gcc/config/i386/freebsd64.h
> +++ b/gcc/config/i386/freebsd64.h
> @@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
>  #define LINK_SPEC "\
>    %{m32:-m elf_i386_fbsd}%{!m32:-m elf_x86_64_fbsd} \
>    %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
> +  " FBSD_LINK_PG_NOTE " \
>    %{v:-V} \
>    %{assert*} %{R*} %{rpath*} %{defsym*} \
>    %{shared:-Bshareable %{h*} %{soname*}} \
> diff --git a/gcc/config/riscv/freebsd.h b/gcc/config/riscv/freebsd.h
> index 5dd4d51c42b..6063861e704 100644
> --- a/gcc/config/riscv/freebsd.h
> +++ b/gcc/config/riscv/freebsd.h
> @@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
>  #define LINK_SPEC "                                          \
>    -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv                        \
>    %{p:%nconsider using `-pg' instead of `-p' with gprof (1)} \
> +  " FBSD_LINK_PG_NOTES "                                             \
>    %{v:-V}                                                    \
>    %{assert*} %{R*} %{rpath*} %{defsym*}                              \
>    -X                                                         \
> diff --git a/gcc/config/rs6000/freebsd64.h b/gcc/config/rs6000/freebsd64.h
> index 55e75cfb66a..6740170d3cc 100644
> --- a/gcc/config/rs6000/freebsd64.h
> +++ b/gcc/config/rs6000/freebsd64.h
> @@ -112,6 +112,7 @@ extern int dot_symbols;
>  
>  #define LINK_OS_FREEBSD_SPEC_DEF "\
>    %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \
> +  " FBSD_LINK_PG_NOTE " \
>    %{v:-V} \
>    %{assert*} %{R*} %{rpath*} %{defsym*} \
>    %{shared:-Bshareable %{h*} %{soname*}} \
> diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
> index bcafa9d0cf4..e997dd77e5e 100644
> --- a/gcc/config/rs6000/sysv4.h
> +++ b/gcc/config/rs6000/sysv4.h
> @@ -748,6 +748,7 @@ GNU_USER_TARGET_CC1_SPEC
>  
>  #define LINK_OS_FREEBSD_SPEC "\
>    %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
> +  " FBSD_LINK_PG_NOTE " \
>    %{v:-V} \
>    %{assert*} %{R*} %{rpath*} %{defsym*} \
>    %{shared:-Bshareable %{h*} %{soname*}} \

Reply via email to