This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
move functions marked as mathomed in embed.fnc to mathoms.c
authorDaniel Dragan <bulk88@hotmail.com>
Tue, 20 Jan 2015 12:51:13 +0000 (07:51 -0500)
committerSteve Hay <steve.m.hay@googlemail.com>
Tue, 27 Jan 2015 08:19:22 +0000 (08:19 +0000)
Ever since commit 075eb5c9b6 mathom functions must be in mathoms.c for
their symbols to be skipped in makedef.pl on Win32 Perl. If a function is
marked 'b' in embed.fnc, regen.pl does NOT add its prototype to proto.h
(it is commented out). Without the proto.h entry, EXTERN_C will be missing
and a -DNO_MATHOMS + C++ Win32 Perl build will not link, since the C
function will have a mangled name and the symbol will not be found for
creating the perl linking library.

Also add EXTERN_C to Win32CORE, the init_Win32CORE symbol is special cased
for exporting in makedef.pl.

Perl_is_utf8_char_buf was marked as 'b' in commit 3cedd9d930
Perl_sv_copypv was marked as 'b' in commit 4bac9ae47b

ext/Win32CORE/Win32CORE.c
mathoms.c
sv.c
utf8.c

index 64104d3..524cf3f 100644 (file)
@@ -47,6 +47,8 @@ XS_EXTERNAL(boot_Win32CORE)
      * should never be called though, as Win32CORE.pm doesn't use DynaLoader.
      */
 }
+
+EXTERN_C
 #if !defined(__CYGWIN__) || defined(USEIMPORTLIB)
 __declspec(dllexport)
 #endif
index 96b3ac3..cd2da84 100644 (file)
--- a/mathoms.c
+++ b/mathoms.c
@@ -1217,6 +1217,14 @@ Perl_sv_mortalcopy(pTHX_ SV *const oldstr)
     return Perl_sv_mortalcopy_flags(aTHX_ oldstr, SV_GMAGIC);
 }
 
+void
+Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv)
+{
+    PERL_ARGS_ASSERT_SV_COPYPV;
+
+    sv_copypv_flags(dsv, ssv, 0);
+}
+
 UV      /* Made into a function, so can be deprecated */
 NATIVE_TO_NEED(const UV enc, const UV ch)
 {
@@ -1695,6 +1703,22 @@ Perl_is_utf8_char(const U8 *s)
     return isUTF8_CHAR(s, s + UTF8SKIP(s));
 }
 
+/*
+=for apidoc is_utf8_char_buf
+
+This is identical to the macro L</isUTF8_CHAR>.
+
+=cut */
+
+STRLEN
+Perl_is_utf8_char_buf(const U8 *buf, const U8* buf_end)
+{
+
+    PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF;
+
+    return isUTF8_CHAR(buf, buf_end);
+}
+
 /* DEPRECATED!
  * Like L</utf8_to_uvuni_buf>(), but should only be called when it is known that
  * there are no malformations in the input UTF-8 string C<s>.  Surrogates,
diff --git a/sv.c b/sv.c
index d936dfc..1e85a72 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -3250,14 +3250,6 @@ include SV_GMAGIC.
 */
 
 void
-Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv)
-{
-    PERL_ARGS_ASSERT_SV_COPYPV;
-
-    sv_copypv_flags(dsv, ssv, 0);
-}
-
-void
 Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags)
 {
     STRLEN len;
diff --git a/utf8.c b/utf8.c
index 8182e63..bf5a36e 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -319,22 +319,6 @@ Perl_uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags)
 }
 
 /*
-=for apidoc is_utf8_char_buf
-
-This is identical to the macro L</isUTF8_CHAR>.
-
-=cut */
-
-STRLEN
-Perl_is_utf8_char_buf(const U8 *buf, const U8* buf_end)
-{
-
-    PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF;
-
-    return isUTF8_CHAR(buf, buf_end);
-}
-
-/*
 =for apidoc is_utf8_string
 
 Returns true if the first C<len> bytes of string C<s> form a valid