END_EXTERN_C
-#if !defined(PERL_CORE)
+#if defined(PERL_CORE)
-/* accessor functions for Perl variables (provides binary compatibility) */
+/* accessor functions for Perl variables (provide binary compatibility) */
+
+/* these need to be mentioned here, or most linkers won't put them in
+ the perl executable */
+
+#ifndef PERL_NO_FORCE_LINK
+
+START_EXTERN_C
+
+#ifndef DOINIT
+EXT void *PL_force_link_funcs[];
+#else
+EXT void *PL_force_link_funcs[] = {
+#undef PERLVAR
+#undef PERLVARA
+#undef PERLVARI
+#undef PERLVARIC
+#define PERLVAR(v,t) (void*)Perl_##v##_ptr,
+#define PERLVARA(v,n,t) PERLVAR(v,t)
+#define PERLVARI(v,t,i) PERLVAR(v,t)
+#define PERLVARIC(v,t,i) PERLVAR(v,t)
+
+#include "thrdvar.h"
+#include "intrpvar.h"
+#include "perlvars.h"
+
+#undef PERLVAR
+#undef PERLVARA
+#undef PERLVARI
+#undef PERLVARIC
+};
+#endif /* DOINIT */
+
+START_EXTERN_C
+
+#endif /* PERL_NO_FORCE_LINK */
+
+#else /* !PERL_CORE */
#undef PL_Argv
#define PL_Argv (*Perl_IArgv_ptr(aTHXo))
#define PL_basetime (*Perl_Ibasetime_ptr(aTHXo))
#undef PL_beginav
#define PL_beginav (*Perl_Ibeginav_ptr(aTHXo))
+#undef PL_beginav_save
+#define PL_beginav_save (*Perl_Ibeginav_save_ptr(aTHXo))
#undef PL_bitcount
#define PL_bitcount (*Perl_Ibitcount_ptr(aTHXo))
#undef PL_bufend
#define PL_bufend (*Perl_Ibufend_ptr(aTHXo))
#undef PL_bufptr
#define PL_bufptr (*Perl_Ibufptr_ptr(aTHXo))
+#undef PL_checkav
+#define PL_checkav (*Perl_Icheckav_ptr(aTHXo))
#undef PL_collation_ix
#define PL_collation_ix (*Perl_Icollation_ix_ptr(aTHXo))
#undef PL_collation_name
#define PL_expect (*Perl_Iexpect_ptr(aTHXo))
#undef PL_fdpid
#define PL_fdpid (*Perl_Ifdpid_ptr(aTHXo))
+#undef PL_fdpid_mutex
+#define PL_fdpid_mutex (*Perl_Ifdpid_mutex_ptr(aTHXo))
#undef PL_filemode
#define PL_filemode (*Perl_Ifilemode_ptr(aTHXo))
#undef PL_forkprocess
#define PL_nthreads (*Perl_Inthreads_ptr(aTHXo))
#undef PL_nthreads_cond
#define PL_nthreads_cond (*Perl_Inthreads_cond_ptr(aTHXo))
+#undef PL_nullstash
+#define PL_nullstash (*Perl_Inullstash_ptr(aTHXo))
#undef PL_numeric_local
#define PL_numeric_local (*Perl_Inumeric_local_ptr(aTHXo))
#undef PL_numeric_name
#define PL_stderrgv (*Perl_Istderrgv_ptr(aTHXo))
#undef PL_stdingv
#define PL_stdingv (*Perl_Istdingv_ptr(aTHXo))
-#undef PL_stopav
-#define PL_stopav (*Perl_Istopav_ptr(aTHXo))
#undef PL_strtab
#define PL_strtab (*Perl_Istrtab_ptr(aTHXo))
#undef PL_strtab_mutex
#define PL_sv_arenaroot (*Perl_Isv_arenaroot_ptr(aTHXo))
#undef PL_sv_count
#define PL_sv_count (*Perl_Isv_count_ptr(aTHXo))
+#undef PL_sv_lock_mutex
+#define PL_sv_lock_mutex (*Perl_Isv_lock_mutex_ptr(aTHXo))
#undef PL_sv_mutex
#define PL_sv_mutex (*Perl_Isv_mutex_ptr(aTHXo))
#undef PL_sv_no
#define PL_sys_intern (*Perl_Isys_intern_ptr(aTHXo))
#undef PL_tainting
#define PL_tainting (*Perl_Itainting_ptr(aTHXo))
-#undef PL_thr_key
-#define PL_thr_key (*Perl_Ithr_key_ptr(aTHXo))
#undef PL_threadnum
#define PL_threadnum (*Perl_Ithreadnum_ptr(aTHXo))
#undef PL_threads_mutex
#define PL_uudmap (*Perl_Iuudmap_ptr(aTHXo))
#undef PL_warnhook
#define PL_warnhook (*Perl_Iwarnhook_ptr(aTHXo))
+#undef PL_widesyscalls
+#define PL_widesyscalls (*Perl_Iwidesyscalls_ptr(aTHXo))
#undef PL_xiv_arenaroot
#define PL_xiv_arenaroot (*Perl_Ixiv_arenaroot_ptr(aTHXo))
#undef PL_xiv_root
#define PL_hexdigit (*Perl_Ghexdigit_ptr(NULL))
#undef PL_malloc_mutex
#define PL_malloc_mutex (*Perl_Gmalloc_mutex_ptr(NULL))
+#undef PL_op_mutex
+#define PL_op_mutex (*Perl_Gop_mutex_ptr(NULL))
#undef PL_patleave
#define PL_patleave (*Perl_Gpatleave_ptr(NULL))
+#undef PL_thr_key
+#define PL_thr_key (*Perl_Gthr_key_ptr(NULL))
#endif /* !PERL_CORE */
#endif /* PERL_OBJECT || MULTIPLICITY */