Download raw body.
new devel/llvm-openmp
I made llvm-openmp and applied the patch to libexec/ld.so and ran
make install. I got the following result from make test of
llvm-openmp:
-- Testing: 305 tests, 8 workers --
Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
********************
Unsupported Tests (18):
libomp :: affinity/disabled.c
libomp :: affinity/format/affinity_values.c
libomp :: affinity/format/nested.c
libomp :: affinity/format/proc_bind.c
libomp :: affinity/kmp-affinity-reset.c
libomp :: affinity/kmp-affinity.c
libomp :: affinity/kmp-hw-subset.c
libomp :: affinity/omp-places-invalid-syntax.c
libomp :: affinity/omp-places.c
libomp :: affinity/redetect.c
libomp :: affinity/root-threads-affinity.c
libomp :: affinity/teams-affinity.c
libomp :: env/kmp_aff_disable_hwloc.c
libomp :: ompt/misc/api_calls_from_other_thread.cpp
libomp :: ompt/misc/api_calls_places.c
libomp :: tasking/hidden_helper_task/affinity.cpp
libomp :: tasking/hidden_helper_task/gtid.cpp
libomp :: teams/teams.c
Testing Time: 61.00s
Total Discovered Tests: 305
Unsupported: 18 (5.90%)
Passed : 287 (94.10%)
ok asou@
--
ASOU Masato
On Sat, Dec 7, 2024 at 8:06 AM Alexander Bluhm <alexander.bluhm@gmx.net> wrote:
>
> On Thu, Dec 05, 2024 at 02:15:28PM +0100, Alexander Bluhm wrote:
> > On Thu, Dec 05, 2024 at 10:01:42AM +0900, ASOU Masato wrote:
> > > Ok, I will make devel/llvm-lit.
> >
> > Attached is a llvm-openmp that uses llvm-lit as test dependency.
> >
> > Unfortunately some tests are failing.
> >
> > Total Discovered Tests: 305
> > Unsupported: 18 (5.90%)
> > Passed : 246 (80.66%)
> > Failed : 41 (13.44%)
> >
> > Nevertheless I want to get some of these ports commited and debug
> > problems in tree. llvm-lit passes all self tests.
>
> Most of the tests fail as our ld.so does not call the destructors.
> Patch below decrements object refcount so callbacks from dynamic
> loader to the openmp destructors work. As the order of the thread
> teardown callbacks are different from linux I need some patches in
> kmp_runtime.cpp to avoid crashes.
>
> Not sure if all may patches are correct, but OpenMP tests pass now.
>
> bluhm
>
> Index: libexec/ld.so/library_subr.c
> ===================================================================
> RCS file: /mount/openbsd/cvs/src/libexec/ld.so/library_subr.c,v
> diff -u -p -r1.55 library_subr.c
> --- libexec/ld.so/library_subr.c 27 Apr 2023 12:27:56 -0000 1.55
> +++ libexec/ld.so/library_subr.c 6 Dec 2024 20:28:11 -0000
> @@ -533,6 +533,17 @@ _dl_link_child(elf_object_t *dep, elf_ob
> }
>
> void
> +_dl_unlink_children(void)
> +{
> + elf_object_t *node;
> +
> + for (node = _dl_objects; node != NULL; node = node->next) {
> + if (node->refcount > 0)
> + _dl_child_refcnt_decrement(node);
> + }
> +}
> +
> +void
> object_vec_grow(struct object_vector *vec, int more)
> {
> vec->alloc += more;
> Index: libexec/ld.so/loader.c
> ===================================================================
> RCS file: /mount/openbsd/cvs/src/libexec/ld.so/loader.c,v
> diff -u -p -r1.223 loader.c
> --- libexec/ld.so/loader.c 22 Jan 2024 02:08:31 -0000 1.223
> +++ libexec/ld.so/loader.c 6 Dec 2024 20:25:07 -0000
> @@ -202,6 +202,7 @@ _dl_dtors(void)
>
> /* ORDER? */
> _dl_unload_dlopen();
> + _dl_unlink_children();
>
> DL_DEB(("doing dtors\n"));
>
> Index: libexec/ld.so/resolve.h
> ===================================================================
> RCS file: /mount/openbsd/cvs/src/libexec/ld.so/resolve.h,v
> diff -u -p -r1.108 resolve.h
> --- libexec/ld.so/resolve.h 21 May 2024 05:00:47 -0000 1.108
> +++ libexec/ld.so/resolve.h 6 Dec 2024 20:23:31 -0000
> @@ -318,6 +318,7 @@ int _dl_load_dep_libs(elf_object_t *obje
> int _dl_rtld(elf_object_t *object);
> void _dl_call_init(elf_object_t *object);
> void _dl_link_child(elf_object_t *dep, elf_object_t *p);
> +void _dl_unlink_children(void);
> void _dl_link_grpsym(elf_object_t *object);
> void _dl_cache_grpsym_list_setup(elf_object_t *_object);
> void _dl_link_grpref(elf_object_t *load_group, elf_object_t *load_object);
new devel/llvm-openmp