tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

How to get __lwp_getprivate_fast()?



On Fri, Nov 29, 2024 at 08:04:18PM -0500, Christos Zoulas wrote:
> Module Name:	src
> Committed By:	christos
> Date:		Sat Nov 30 01:04:16 UTC 2024
...
> Log Message:
> Create a new header lwp_private.h to contain _lwp_getprivate_fast,
> _lwp_gettcb_fast, _lwp_settcb and remove them from mcontext.h, so that:
> 1. we don't need special hacks to hide them
> 2. we can include <lwp.h> where needed to get the necessary prototypes
>    without redefining them locally.

I think this commit broke the compilation of lang/compiler-rt, which
now shows:

FAILED: lib/sanitizer_common/CMakeFiles/RTSanitizerCommonLibc.x86_64.dir/sanitizer_linux_libcdep.cpp.o
/scratch/lang/compiler-rt/work/.cwrapper/bin/c++ -DHAVE_RPC_XDR_H=0 -I/scratch/lang/compiler-rt/work/compiler-rt-18.1.8.src/lib/sanitizer_common/.. -O2 -g -fstack-clash-protection -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/python3.13 -Wall -Wno-unused-parameter -DNDEBUG -std=c++17 -m64 -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fvisibility=hidden -fno-lto -O3 -g -Wno-variadic-macros -nostdinc++ -Wno-format -fno-rtti -Wframe-larger-than=570 -MD -MT lib/sanitizer_common/CMakeFiles/RTSanitizerCommonLibc.x86_64.dir/sanitizer_linux_libcdep.cpp.o -MF lib/sanitizer_common/CMakeFiles/RTSanitizerCommonLibc.x86_64.dir/sanitizer_linux_libcdep.cpp.o.d -o lib/sanitizer_common/CMakeFiles/RTSanitizerCommonLibc.x86_64.dir/sanitizer_linux_libcdep.cpp.o -c /scratch/lang/compiler-rt/work/compiler-rt-18.1.8.src/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
/scratch/lang/compiler-rt/work/compiler-rt-18.1.8.src/lib/sanitizer_common/sanitizer_linux_libcdep.cpp: In function 'tls_tcb* __sanitizer::ThreadSelfTlsTcb()':
/scratch/lang/compiler-rt/work/compiler-rt-18.1.8.src/lib/sanitizer_common/sanitizer_linux_libcdep.cpp:452:27: error: '__lwp_getprivate_fast' was not declared in this scope; did you mean '_lwp_getprivate'?
  452 |   tcb = (struct tls_tcb *)__lwp_getprivate_fast();
      |                           ^~~~~~~~~~~~~~~~~~~~~
      |                           _lwp_getprivate


Adding an <lwp.h> include is not sufficient, build fails the same way
(I had misunderstood the commit message that that should work).

What is the proper fix for compiler-rt?
 Thomas


Home | Main Index | Thread Index | Old Index