From b495835cbc395323a8465e365604d338ffcb34e2 Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Thu, 27 Apr 2023 18:38:25 -0400 Subject: [PATCH] Export offsets necessary for external codegen --- src/init.c | 4 ++++ src/jl_exported_data.inc | 2 ++ src/julia.h | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/init.c b/src/init.c index efa2d51110548..c1ce022b10802 100644 --- a/src/init.c +++ b/src/init.c @@ -759,6 +759,10 @@ JL_DLLEXPORT void julia_init(JL_IMAGE_SEARCH rel) jl_init_intrinsic_properties(); + // Important offset for external codegen. + jl_task_gcstack_offset = offsetof(jl_task_t, gcstack); + jl_task_ptls_offset = offsetof(jl_task_t, ptls); + jl_prep_sanitizers(); void *stack_lo, *stack_hi; jl_init_stack_limits(1, &stack_lo, &stack_hi); diff --git a/src/jl_exported_data.inc b/src/jl_exported_data.inc index 52f6cb11d8c0f..1be185c2aa37d 100644 --- a/src/jl_exported_data.inc +++ b/src/jl_exported_data.inc @@ -132,5 +132,7 @@ XX(jl_n_threadpools, int) \ XX(jl_n_threads, _Atomic(int)) \ XX(jl_options, jl_options_t) \ + XX(jl_task_gcstack_offset, int) \ + XX(jl_task_ptls_offset, int) \ // end of file diff --git a/src/julia.h b/src/julia.h index 216628c9aebdc..81a4330711c24 100644 --- a/src/julia.h +++ b/src/julia.h @@ -1984,6 +1984,9 @@ JL_DLLEXPORT void JL_NORETURN jl_no_exc_handler(jl_value_t *e, jl_task_t *ct); JL_DLLEXPORT JL_CONST_FUNC jl_gcframe_t **(jl_get_pgcstack)(void) JL_GLOBALLY_ROOTED JL_NOTSAFEPOINT; #define jl_current_task (container_of(jl_get_pgcstack(), jl_task_t, gcstack)) +extern JL_DLLIMPORT int jl_task_gcstack_offset; +extern JL_DLLIMPORT int jl_task_ptls_offset; + #include "julia_locks.h" // requires jl_task_t definition JL_DLLEXPORT void jl_enter_handler(jl_handler_t *eh);