Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Feb 2024 20:52:36 +0000
From:      Jessica Clarke <jrtc27@freebsd.org>
To:        Brooks Davis <brooks@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: 0d4f7723bc43 - main - libc: link libsys as a auxiliary filter library
Message-ID:  <68B8B759-E01F-498A-850B-23EAE4A3DABC@freebsd.org>
In-Reply-To: <202402052038.415KckEC069716@gitrepo.freebsd.org>
References:  <202402052038.415KckEC069716@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 5 Feb 2024, at 20:38, Brooks Davis <brooks@FreeBSD.org> wrote:
>=20
> The branch main has been updated by brooks:
>=20
> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3D0d4f7723bc43e06ca22025740cb826a7=
f282ea11
>=20
> commit 0d4f7723bc43e06ca22025740cb826a7f282ea11
> Author:     Brooks Davis <brooks@FreeBSD.org>
> AuthorDate: 2023-11-15 23:35:16 +0000
> Commit:     Brooks Davis <brooks@FreeBSD.org>
> CommitDate: 2024-02-05 20:34:56 +0000
>=20
>    libc: link libsys as a auxiliary filter library
>=20
>    At runtime, when rtld loads libc it will also load libsys.  For =
each
>    symbol that is present in both, the libsys one will override the =
libc
>    one.  It continues to be the case that program need only link =
against
>    libc (usually implicitly).  The linkage to libsys is automatic.
>=20
>    Reviewed by:    kib, emaste, imp
>    Pull Request:   https://github.com/freebsd/freebsd-src/pull/908
> ---
> Makefile.inc1            | 2 ++
> UPDATING                 | 6 ++++++
> lib/Makefile             | 2 +-
> lib/libc/Makefile        | 3 +++
> share/mk/src.libnames.mk | 2 +-
> 5 files changed, 13 insertions(+), 2 deletions(-)
>=20
> diff --git a/Makefile.inc1 b/Makefile.inc1
> index 7a9917fd8a74..f97e53cc7f9a 100644
> --- a/Makefile.inc1
> +++ b/Makefile.inc1
> @@ -3125,10 +3125,12 @@ _startup_libs=3D lib/csu
> _startup_libs+=3D lib/libc
> _startup_libs+=3D lib/libc_nonshared
> _startup_libs+=3D lib/libcxxrt
> +_startup_libs+=3D lib/libsys
>=20
> _prereq_libs+=3D lib/libgcc_eh lib/libgcc_s
> _startup_libs+=3D lib/libgcc_eh lib/libgcc_s
>=20
> +lib/libc__L: lib/libsys__L
> lib/libgcc_s__L: lib/libc__L
> lib/libgcc_s__L: lib/libc_nonshared__L
> lib/libcxxrt__L: lib/libgcc_s__L
> diff --git a/UPDATING b/UPDATING
> index 33bae2a42b9d..aae30936a8b5 100644
> --- a/UPDATING
> +++ b/UPDATING
> @@ -27,6 +27,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 15.x IS SLOW:
> world, or to merely disable the most expensive debugging functionality
> at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
>=20
> +20240205:
> + For dynamically linked programs, system calls are now made from
> + libsys rather than libc.  No change in linkage is required as
> + libsys is an auxiliary filter for libc.  People building custom
> + images must ensure that libsys.so.7 is included.
> +
> 20240202:
> Loader now also read configuration files listed in =
local_loader_conf_files.
> Files listed here are the last ones read. And /boot/loader.conf.local =
was
> diff --git a/lib/Makefile b/lib/Makefile
> index db07883e2b10..9d2531820c8b 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -123,7 +123,7 @@ SUBDIR_DEPEND_libbsnmp=3D ${_libnetgraph}
> SUBDIR_DEPEND_libc++:=3D libcxxrt
> # libssp_nonshared doesn't need to be linked into libc on every arch, =
but it is
> # small enough to build that this bit of serialization is likely =
insignificant.
> -SUBDIR_DEPEND_libc=3D libcompiler_rt libssp_nonshared
> +SUBDIR_DEPEND_libc=3D libsys libcompiler_rt libssp_nonshared
> SUBDIR_DEPEND_libcam=3D libsbuf
> SUBDIR_DEPEND_libcasper=3D libnv
> SUBDIR_DEPEND_libdevstat=3D libkvm
> diff --git a/lib/libc/Makefile b/lib/libc/Makefile
> index 72300e88d3d7..6a54f7641087 100644
> --- a/lib/libc/Makefile
> +++ b/lib/libc/Makefile
> @@ -62,6 +62,9 @@ CFLAGS+=3D -ftls-model=3Dinitial-exec
> #
> LDFLAGS+=3D -nodefaultlibs
> LIBADD+=3D compiler_rt
> +LIBADD+=3D sys
> +
> +LDFLAGS+=3D-Wl,--auxiliary,libsys.so

=46rom reading documentation and implementation code (LLD + rtld), =
should
this not be the soname, i.e. libsys.so.7?

Jess

> .if ${MK_SSP} !=3D "no" && \
>     (${LIBC_ARCH} =3D=3D "i386" || ${LIBC_ARCH:Mpowerpc*} !=3D "")
> diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk
> index 5a6932614b29..3c19a4c45da3 100644
> --- a/share/mk/src.libnames.mk
> +++ b/share/mk/src.libnames.mk
> @@ -393,7 +393,7 @@ _DP_xo=3D util
> _DP_ztest=3D geom m nvpair umem zpool pthread avl zfs_core spl zutil =
zfs uutil icp
> # The libc dependencies are not strictly needed but are defined to =
make the
> # assert happy.
> -_DP_c=3D compiler_rt
> +_DP_c=3D sys compiler_rt
> # Use libssp_nonshared only on i386 and power*.  Other archs emit =
direct calls
> # to __stack_chk_fail, not __stack_chk_fail_local provided by =
libssp_nonshared.
> .if ${MK_SSP} !=3D "no" && \




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?68B8B759-E01F-498A-850B-23EAE4A3DABC>