Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Mar 2022 23:39:18 +0100
From:      Piotr Kubaj <pkubaj@anongoth.pl>
To:        "Pokala, Ravi" <rpokala@panasas.com>
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: 3781e77995e9 - main - riscv: actually enable sanitizers
Message-ID:  <Yi5ylmbzvvLmqqie@KGPE-D16>
In-Reply-To: <67FE3738-E963-4EBF-B01F-ECEA897CB154@panasas.com>
References:  <202203131207.22DC7dTY000316@gitrepo.freebsd.org> <67FE3738-E963-4EBF-B01F-ECEA897CB154@panasas.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--LGfbR8XehoS3xmpG
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 22-03-13 21:29:19, Pokala, Ravi wrote:
> Hi Piotr,
>=20
> > --- a/lib/Makefile
> > +++ b/lib/Makefile
> > @@ -184,7 +184,7 @@ SUBDIR.${MK_STATS}+=3D	libstats
> > .if ${COMPILER_TYPE} =3D=3D "clang" && ${MK_CXX} !=3D "no" && \
> >      (${MACHINE_CPUARCH} =3D=3D "aarch64" || ${MACHINE_CPUARCH} =3D=3D =
"amd64" || \
> >      ${MACHINE_CPUARCH} =3D=3D "arm" || ${MACHINE_CPUARCH} =3D=3D "i386=
" || \
> > -    ${MACHINE_CPUARCH} =3D=3D "powerpc")
> > +    ${MACHINE_CPUARCH} =3D=3D "powerpc" || ${MACHINE_CPUARCH} =3D=3D "=
riscv")
> > _libclang_rt=3D	libclang_rt
> > .elif (${MK_ASAN} !=3D "no" || ${MK_UBSAN} !=3D "no") && make(all)
> > .error Requested build with sanitizers but cannot build runtime librari=
es!
>=20
> I believe the conditional now covers all architectures. Couldn't / should=
n't it simply be removed?
It can, but I left it as it is for MFC'ing purposes.

13 still supports mips.


>=20
> Thanks,
>=20
> Ravi (rpokala@)
>=20
> =EF=BB=BF-----Original Message-----
> From: <owner-src-committers@freebsd.org> on behalf of Piotr Kubaj <pkubaj=
@FreeBSD.org>
> Date: 2022-03-13, Sunday at 05:07
> To: <src-committers@FreeBSD.org>, <dev-commits-src-all@FreeBSD.org>, <dev=
-commits-src-main@FreeBSD.org>
> Subject: git: 3781e77995e9 - main - riscv: actually enable sanitizers
>=20
>     The branch main has been updated by pkubaj (ports committer):
>=20
>     URL: https://cgit.FreeBSD.org/src/commit/?id=3D3781e77995e9b81afcbf7b=
3dc84b33b864c48794
>=20
>     commit 3781e77995e9b81afcbf7b3dc84b33b864c48794
>     Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
>     AuthorDate: 2022-03-13 03:31:35 +0000
>     Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
>     CommitDate: 2022-03-13 12:06:57 +0000
>=20
>         riscv: actually enable sanitizers
>=20
>         1. Backport https://github.com/llvm/llvm-project/commit/b475ce39e=
8b1de3a70ea242473f136a567be46e3.
>         2. Enable libclang_rt for riscv.
>=20
>         Previous commit missed it.
>=20
>         MFC after:      3 days
>         Reviewed by:    dim
>         Differential Revision: https://reviews.freebsd.org/D34543
>     ---
>      .../lib/sanitizer_common/sanitizer_linux.cpp       | 22 ++++++++++++=
+++++-----
>      lib/Makefile                                       |  2 +-
>      2 files changed, 18 insertions(+), 6 deletions(-)
>=20
>     diff --git a/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sa=
nitizer_linux.cpp b/contrib/llvm-project/compiler-rt/lib/sanitizer_common/s=
anitizer_linux.cpp
>     index daa07c15490e..769e8029dfcb 100644
>     --- a/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer=
_linux.cpp
>     +++ b/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer=
_linux.cpp
>     @@ -416,7 +416,7 @@ uptr internal_unlink(const char *path) {
>      }
>=20
>      uptr internal_rename(const char *oldpath, const char *newpath) {
>     -#if defined(__riscv)
>     +#if defined(__riscv) && defined(__linux__)
>        return internal_syscall(SYSCALL(renameat2), AT_FDCWD, (uptr)oldpat=
h, AT_FDCWD,
>                                (uptr)newpath, 0);
>      #elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
>     @@ -1218,7 +1218,8 @@ void ForEachMappedRegion(link_map *map, void (*=
cb)(const void *, uptr)) {
>      }
>      #endif
>=20
>     -#if defined(__x86_64__) && SANITIZER_LINUX
>     +#if SANITIZER_LINUX
>     +#if defined(__x86_64__)
>      // We cannot use glibc's clone wrapper, because it messes with the c=
hild
>      // task's TLS. It writes the PID and TID of the child task to its th=
read
>      // descriptor, but in our case the child task shares the thread desc=
riptor with
>     @@ -1557,7 +1558,7 @@ uptr internal_clone(int (*fn)(void *), void *ch=
ild_stack, int flags, void *arg,
>                   : "cr0", "cr1", "memory", "ctr", "r0", "r27", "r28", "r=
29");
>        return res;
>      }
>     -#elif defined(__i386__) && SANITIZER_LINUX
>     +#elif defined(__i386__)
>      uptr internal_clone(int (*fn)(void *), void *child_stack, int flags,=
 void *arg,
>                          int *parent_tidptr, void *newtls, int *child_tid=
ptr) {
>        int res;
>     @@ -1622,7 +1623,7 @@ uptr internal_clone(int (*fn)(void *), void *ch=
ild_stack, int flags, void *arg,
>                             : "memory");
>        return res;
>      }
>     -#elif defined(__arm__) && SANITIZER_LINUX
>     +#elif defined(__arm__)
>      uptr internal_clone(int (*fn)(void *), void *child_stack, int flags,=
 void *arg,
>                          int *parent_tidptr, void *newtls, int *child_tid=
ptr) {
>        unsigned int res;
>     @@ -1688,7 +1689,8 @@ uptr internal_clone(int (*fn)(void *), void *ch=
ild_stack, int flags, void *arg,
>                             : "memory");
>        return res;
>      }
>     -#endif  // defined(__x86_64__) && SANITIZER_LINUX
>     +#endif
>     +#endif  // SANITIZER_LINUX
>=20
>      #if SANITIZER_LINUX
>      int internal_uname(struct utsname *buf) {
>     @@ -1918,7 +1920,11 @@ SignalContext::WriteFlag SignalContext::GetWri=
teFlag() const {
>        u32 instr =3D *(u32 *)pc;
>        return (instr >> 21) & 1 ? WRITE: READ;
>      #elif defined(__riscv)
>     +#if SANITIZER_FREEBSD
>     +  unsigned long pc =3D ucontext->uc_mcontext.mc_gpregs.gp_sepc;
>     +#else
>        unsigned long pc =3D ucontext->uc_mcontext.__gregs[REG_PC];
>     +#endif
>        unsigned faulty_instruction =3D *(uint16_t *)pc;
>=20
>      #if defined(__riscv_compressed)
>     @@ -2137,9 +2143,15 @@ static void GetPcSpBp(void *context, uptr *pc,=
 uptr *sp, uptr *bp) {
>        *sp =3D ucontext->uc_mcontext.gregs[15];
>      #elif defined(__riscv)
>        ucontext_t *ucontext =3D (ucontext_t*)context;
>     +#    if SANITIZER_FREEBSD
>     +  *pc =3D ucontext->uc_mcontext.mc_gpregs.gp_sepc;
>     +  *bp =3D ucontext->uc_mcontext.mc_gpregs.gp_s[0];
>     +  *sp =3D ucontext->uc_mcontext.mc_gpregs.gp_sp;
>     +#    else
>        *pc =3D ucontext->uc_mcontext.__gregs[REG_PC];
>        *bp =3D ucontext->uc_mcontext.__gregs[REG_S0];
>        *sp =3D ucontext->uc_mcontext.__gregs[REG_SP];
>     +#    endif
>      #else
>      # error "Unsupported arch"
>      #endif
>     diff --git a/lib/Makefile b/lib/Makefile
>     index d34f40616396..816374552f0a 100644
>     --- a/lib/Makefile
>     +++ b/lib/Makefile
>     @@ -184,7 +184,7 @@ SUBDIR.${MK_STATS}+=3D	libstats
>      .if ${COMPILER_TYPE} =3D=3D "clang" && ${MK_CXX} !=3D "no" && \
>          (${MACHINE_CPUARCH} =3D=3D "aarch64" || ${MACHINE_CPUARCH} =3D=
=3D "amd64" || \
>          ${MACHINE_CPUARCH} =3D=3D "arm" || ${MACHINE_CPUARCH} =3D=3D "i3=
86" || \
>     -    ${MACHINE_CPUARCH} =3D=3D "powerpc")
>     +    ${MACHINE_CPUARCH} =3D=3D "powerpc" || ${MACHINE_CPUARCH} =3D=3D=
 "riscv")
>      _libclang_rt=3D	libclang_rt
>      .elif (${MK_ASAN} !=3D "no" || ${MK_UBSAN} !=3D "no") && make(all)
>      .error Requested build with sanitizers but cannot build runtime libr=
aries!
>=20

--LGfbR8XehoS3xmpG
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEycyIeNkkgohzsoorelmbhSCDnJ0FAmIucpYACgkQelmbhSCD
nJ1xzA/+IHdKWtUkGxRkQQW1j/YXCB0z5UVWLA8hyC1RXoLT6hXyjgDfMN/HhkyR
yylR14zZP0VSgS+m/tohqnPdNSfSGOo7B/ZltPXUZ7lYKP6D++yyesBYanJMzKOl
bgT85ULTYYWxu1+VXHECzcyxYLY+C67KlIUiJuBmZON77iZl5kdVTfdyOFlzDnU+
YBJj9XbsGZRnk4Rc0ogu90r8NRvRdAsNDjkrAmaVBmjt2DK/b/1ix65hyiwo7Pwl
SaVS0k/wEaGj1DRUYvQn/mjCJu2zrEE9v1YFqu2HosA5OXbtx9ZtxiyjXdN77Gun
tsCRnE5NtLsQ4rDTwJ2FxHit6lWJ8KVJfMr35vXkrnrh43UlXEVWfrR4kHBrilLo
eGucpi1zlbvIVjCr06cI/fo10DATV/y1leJATegkpcVyXQN5tR7q6AfnIE+P1n+O
Y1rxrmwTehHRnduTQlOEIoPHqcMXUzIC+z1z7EPClJwnmDnCE+TEQCflzppIV05f
aVvmyY+CqdoFEWFX9Y+s+c3JOWsiy9oW7qUYcmg3hhk7/OkK09jeESD+lscmh7sH
1TpPqmYslSkq1k8tw0kRpD/R508o0X2TAGz3BnRr7zIef/6cHAInxCPCMrDL67YX
rZCbXBuhPEJi5rqa7H6GOJ3+RuySyNNNr9lB/RF3bPEStJOYV9Y=
=Nn7E
-----END PGP SIGNATURE-----

--LGfbR8XehoS3xmpG--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Yi5ylmbzvvLmqqie>