http://qs321.pair.com?node_id=11120697


in reply to Re^14: XS.c: loadable library and perl binaries are mismatched (got handshake key 0xc100000, needed 0xc180000)
in thread XS.c: loadable library and perl binaries are mismatched (got handshake key 0xc100000, needed 0xc180000)

I tried to explore possibilities related to gcc-3.4.5 by building perl-5.32.0 on Windows with gcc-3.4.5, but the build failed when trying to compile Time::HiRes.

Hi,

I encountered the same thing

Its worth sending a link to this thread to p5p ...

But

RHEL4 is a couple of years out of End of Extended Lifecycle Support

And gcc-3.4.5 is from 2004

2004

remember 2004?

Oh wow :D

Replies are listed 'Best First'.
Re^16: XS.c: loadable library and perl binaries are mismatched (got handshake key 0xc100000, needed 0xc180000)
by syphilis (Archbishop) on Aug 14, 2020 at 01:20 UTC
    I encountered the same thing

    I got excited there for a moment, thinking that you had encountered the same problem as the OP ;-)
    But, after further consideration, I realized you had probably merely encountered the same problem as I did.

    That problem (ie ours, not the OP's) turns out to be fairly simple to resolve.
    In HiRes.xs at lines 142 and 143 we have:
    /* Visual C++ 2013 and older don't have the timespec structure */ # if defined(MSC_VER) && _MSC_VER < 1900
    Turns out that gcc-3.4.5 also doesn't have the timespec structure, so I just changed line 143 to:
    # if defined(_WIN32)
    which is not a portable solution, but is good enough to get the job done if the version of gcc is 3.4.5.
    The portable solution would be:
    Updated (ie checked and corrected): #if (defined(MSC_VER) && _MSC_VER < 1900) || (defined(__MINGW32__) && +__GNUC__ < 4)
    Anyway, List::MoreUtils::XS-0.428 builds and tests fine on my gcc-3.4.5 built perl-5.32.0.
    At least I now have a functional gcc-3.4.5 build of perl-5.32.0.
    Imagine how useful that will be !! (Not very..)

    BTW, this gcc-3.4.5 build of perl-5.32.0 tested fairly well (IMO).
    The cpan/IO-Compress/t/105oneshot-gzip.t script hangs and has to be slaughtered - but then the same thing happens for me with 64-bit gcc-8.3.0 builds of perl, too.
    Test Summary Report ------------------- porting/pod_rules.t (Wsta +t: 0 Tests: 8 Failed: 1) Failed test: 2 porting/regen.t (Wsta +t: 65280 Tests: 13 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 45 tests but ran 13. ../cpan/IO-Compress/t/105oneshot-gzip.t (Wsta +t: 256 Tests: 239 Failed: 0) Non-zero exit status: 1 Parse errors: Bad plan. You planned 1007 tests but ran 239. ../ext/IPC-Open3/t/IPC-Open3.t (Wsta +t: 0 Tests: 45 Failed: 0) TODO passed: 25 ../ext/XS-APItest/t/call_checker.t (Wsta +t: 256 Tests: 78 Failed: 1) Failed test: 1 Non-zero exit status: 1 Files=2678, Tests=1148685, 2459 wallclock secs (71.23 usr + 4.68 sys += 75.91 CPU) Result: FAIL dmake: Error code 130, while making 'test'

    Cheers,
    Rob

      I think the gcc version may have been a red herring. I just got a RHEL 5.11 system with gcc 4.1.2 and received the same handshake mismatch on XS.c when I tried to use cpanm to install List::MoreUtils.

        I think the gcc version may have been a red herring

        Quite possibly, but it seems that there's something about these old RHEL systems and gcc compilers that's triggering a bug - either a bug in List-MoreUtilsXS-0.428 or a bug in the way the handshake compatibility is being established.

        I would suggest building perl with that handshake mechanism disabled - just to see if there is anything that is actually incompatible about XS.c. (Perhaps there's absolutely nothing wrong with XS.c.)
        However, I don't know how to build such a perl without hacking at util.c (in the top level directory of the perl source).
        If you think it's worth the effort, try changing (in util.c):
        noperl_die("%s: loadable library and perl binaries are mismatched"
        to a non-fatal:
        Perl_warn(aTHX_ "%s: loadable library and perl binaries are mismatched +"
        or even just:
        printf("%s: loadable library and perl binaries are mismatched"
        And then rebuild perl and see how List-MoreUtils-XS-0.428 fares.
        (I haven't tested either of those suggested hacks.)

        Could you also post the config.log of the L::MU::XS build that is generated by the perl Makefile.PL step. (You'll find that config.log in the same directory as the Makefile.PL).
        It might provide some clue as to the cause of the problem.
        And it might be worth filing a bug report about this at https://rt.cpan.org/Public/Dist/Display.html?Name=List-MoreUtils-XS in case the author has some ideas.

        Thanks for updating us !!

        Cheers,
        Rob