Ashutosh Sharma <ashu.coek88@gmail.com> writes:
> On Wed, Jul 19, 2017 at 9:42 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I imagine the route to a solution is to fix things so that the relevant
>> macros are all defined correctly in both cases. But why they aren't
>> already is certainly an interesting question. Have you identified just
>> which fields are added or missing relative to what libperl thinks?
> Here are the list of macros and variables from 'intrpvar.h' file that
> are just defined in perl module but not in plperl on Windows,
> #ifdef PERL_USES_PL_PIDSTATUS
> PERLVAR(I, pidstatus, HV *) /* pid-to-status mappings for waitpid */
> #endif
> #ifdef PERL_SAWAMPERSAND
> PERLVAR(I, sawampersand, U8) /* must save all match strings */
> #endif
> #ifdef FCRYPT
> PERLVARI(I, cryptseen, bool, FALSE) /* has fast crypt() been initialized? */
> #else
> /* One byte hole in the interpreter structure. */
> #endif
> #ifdef USE_REENTRANT_API
> PERLVAR(I, reentrant_buffer, REENTR *) /* here we store the _r buffers */
> #endif
> #ifdef PERL_GLOBAL_STRUCT_PRIVATE
> PERLVARI(I, my_cxt_keys, const char **, NULL) /* per-module array of
> pointers to MY_CXT_KEY constants */
> # endif
> #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
> /* File descriptor to talk to the child which dumps scalars. */
> PERLVARI(I, dumper_fd, int, -1)
> #endif
> #ifdef DEBUG_LEAKING_SCALARS
> PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */
> #endif
> #ifdef PERL_TRACE_OPS
> PERLVARA(I, op_exec_cnt, OP_max+2, UV)
> #endif
Huh. So those seem like symbols that ought to be exposed somewhere in
Perl's headers. Perhaps we're failing to #include some "perl_config.h" or
equivalent file that records these ABI options?
regards, tom lane