Re: Profiled libraries on freebsd-current
- Reply: John Baldwin : "Re: Profiled libraries on freebsd-current"
- In reply to: John Baldwin : "Re: Profiled libraries on freebsd-current"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 04 May 2022 20:38:36 UTC
On Wed, May 04, 2022 at 01:22:57PM -0700, John Baldwin wrote:
> On 5/4/22 12:53 PM, Steve Kargl wrote:
> > On Wed, May 04, 2022 at 11:12:55AM -0700, John Baldwin wrote:
> >
> > I don't know the entire FreeBSD ecosystem. Do people
> > use FreeBSD on embedded systems (e.g., nanobsd) where
> > libthr may be stripped out? Thus, --enable-threads=no
> > is needed.
>
> If they do, they are also using a constrained userland and
> probably are not shipping a GCC binary either. However, it's
> not clear to me what --enable-threads means.
>
> Does this enable -pthread as an option? If so, that should
> definitely just always be on. It's still an option users have
> to opt into via a command line flag and doesn't prevent
> building non-threaded programs.
>
> If it's enabling use of threads at runtime within GCC itself,
> I'd say that also should probably just be allowed to be on.
>
> I can't really imagine what else it might mean (and I doubt
> it means the latter).
>
AFAICT, it controls whether -lpthread is automatically added to
the command line. In the case of -pg, it is -lpthread_p.
The relevant lines are
#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} \
}"
#else
#define FBSD_LIB_SPEC " \
%{!shared: \
%{!pg: %{pthread:-lpthread} -lc} \
%{pg: %{pthread:-lpthread_p} -lc_p} \
} \
%{shared: \
%{pthread:-lpthread} -lc \
}"
#endif
Ed is wondering if one can get rid of FBSD_NO_THREADS. With the
pending removal of WITH_PROFILE, the above reduces to
#define FBSD_LIB_SPEC " \
%{!shared: \
%{pthread:-lpthread} -lc \
} \
%{shared: \
%{pthread:-lpthread} -lc \
}"
If one can do the above, then freebsd-nthr.h is no longer needed
and can be deleted and config.gcc's handling of --enable-threads
can be updated/removed.
--
Steve