On 5/4/22 1:38 PM, Steve Kargl wrote:
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.

Ok, so it's just if -pthread is supported (%{pthread:-lpthread} only
adds -lpthread if -pthread was given on the command line).  That can just
be on all the time and Ed is correct that it is safe to remove the
FBSD_NO_THREADS case and assume it is always present instead.

--
John Baldwin

Reply via email to