New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
more -DNO_MATHOMS breakage on Win32 #16513
Comments
From @bulk88Created by @bulk88This is a 5.28 blocker. Round #2 of https://rt.perl.org/Public/Bug/Display.html?id=133098 . The patch "fix -DNO_MATHOMS build, mathomed syms were not removed from
APItest.obj : error LNK2001: unresolved external symbol These link errors bring up a question of what is a mathom-ed function The link error I see is because of The top of embed.fnc so what is the definition of "b"? I did a diff of my "fix -DNO_MATHOMS build, mathomed syms were not Perl_do_aexec|Perl_do_open|Perl_gv_AVadd|Perl_gv_HVadd|Perl_gv_IOadd|Perl_gv_SVadd|Perl_gv_efullname3|Perl_gv_fetchmethod|Perl_gv_fullname3|Perl_hv_delete|Perl_hv_delete_ent|Perl_hv_exists|Perl_hv_exists_ent|Perl_hv_fetch|Perl_hv_fetch_ent|Perl_hv_iternext|Perl_hv_magic|Perl_hv_store|Perl_hv_store_ent|Perl_hv_store_flags|Perl_instr|Perl_is_utf8_char_buf|Perl_is_utf8_string_loc|Perl_mem_collxfrm|Perl_my_lstat|Perl_my_stat|Perl_newAV|Perl_newHV|Perl_newIO|Perl_newSUB|Perl_ref|Perl_save_freeop|Perl_save_freepv|Perl_save_freesv|Perl_save_mortalizesv|Perl_save_op|Perl_sv_2iv|Perl_sv_2pv|Perl_sv_2pv_nolen|Perl_sv_2pvbyte_nolen|Perl_sv_2pvutf8_nolen|Perl_sv_2uv|Perl_sv_catpvn|Perl_sv_catpvn_mg|Perl_sv_catsv|Perl_sv_catsv_mg|Perl_sv_copypv|Perl_sv_force_normal|Perl_sv_insert|Perl_sv_mortalcopy|Perl_sv_nolocking|Perl_sv_pv|Perl_sv_pvbyte|Perl_sv_pvn_force|Perl_sv_pvutf8|Perl_sv_setsv|Perl_sv_taint|Perl_sv_unref|Perl_sv_usepvn|Perl_sv_usepvn_mg|Perl_sv_utf8_upgrade|Perl_to_utf8_fold|P but grep.metacpan.org doesn't pull up anything unless I narrow the So again, I wonder, what is the definition of "b"? Is A decision must be made for 5.28. Perl Info
|
From @bulk88On Thu, 19 Apr 2018 20:43:35 -0700, bulk88 wrote:
If nobody can come with any discussion or design, here is a patch that I think is the right solution and on the conservative side (assume you can use Perl_FOO() funcs freely as if they are public API when I dont think they are). -- |
From @bulk880001-133125-revise-DNO_MATHOM-logic-again-in-makedef.pl.patchFrom fc2890081ff90cf3a8d02927a682fd1341fb9ba0 Mon Sep 17 00:00:00 2001
From: Daniel Dragan <bulk88@hotmail.com>
Date: Fri, 20 Apr 2018 10:46:39 -0400
Subject: [PATCH] #133125 revise -DNO_MATHOM logic again in makedef.pl
Revision of patch in #133098.
There is a problem described in #133125 with XS-APITest using with "Perl_"
mathomed C symbols instead of the Perl_-less ones which would get
preprocessor redirected to newer C funcs, then link failure of XS-APITest
on Win32 because missing symbols. These symbols were missing because they
were marked "m" and I thought in commit 1545ba5b04 "m" means no C symbol,
ever, but that isn't true. It seems that "b" means must export on a
with-mathoms default perl. So put back part of the original code before
commit 1545ba5b04 from commit 3f1866a8f6, so that on with mathoms builds
all "b"s are exported, but on no mathom builds, all "b"s are removed/not
exported.
There are some logic holes here for strange or impossible combinations
of flags, like flags "Abi" or just "b" without "A", that I wont address
here.
---
makedef.pl | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/makedef.pl b/makedef.pl
index daf6b40..dbd756d 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -736,7 +736,8 @@ unless ($define{'USE_QUADMATH'}) {
foreach (@$embed) {
my ($flags, $retval, $func, @args) = @$_;
next unless $func;
- if ($flags =~ /[AX]/ && $flags !~ $excludedre)
+ if (($flags =~ /[AX]/ && $flags !~ $excludedre)
+ || (!$define{'NO_MATHOMS'} && $flags =~ /b/))
{
# public API, so export
--
2.5.0.windows.1
|
From @craigberryOn Fri, Apr 20, 2018 at 9:50 AM, bulk88 via RT
FWIW, VMS is broken the same way. I'll try to take your patch for a Link /Debug/Trace/Map |
The RT System itself - Status changed from 'new' to 'open' |
From @craigberryOn Fri, Apr 20, 2018 at 10:05 AM, Craig A. Berry
bulk88's patch works for me and also seems like the right thing to do. |
From @xsawyerxOn 04/20/2018 09:42 PM, Craig A. Berry wrote:
Yes. And you have it. Go for it. Thanks, Craig. |
From @craigberryOn Sat, Apr 21, 2018 at 3:22 AM, Sawyer X <xsawyerx@gmail.com> wrote:
Thanks. Now done as c41ed02. |
@iabyn - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#133125 (status was 'resolved')
Searchable as RT133125$
The text was updated successfully, but these errors were encountered: