? gnu/usr.bin/perl/cpan/File-Path/t/Path-Class.t
? gnu/usr.bin/perl/dist/base/t/lib/BaseIncMandatory.pm
? gnu/usr.bin/perl/dist/base/t/lib/BaseIncOptional.pm
? gnu/usr.bin/perl/pod/perl5223delta.pod
? gnu/usr.bin/perl/pod/perl5224delta.pod
? gnu/usr.bin/perl/pod/perl5241delta.pod
? gnu/usr.bin/perl/pod/perl5242delta.pod
Index: gnu/usr.bin/perl/AUTHORS
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/AUTHORS,v
retrieving revision 1.3
diff -u -p -r1.3 AUTHORS
--- gnu/usr.bin/perl/AUTHORS	5 Feb 2017 00:31:51 -0000	1.3
+++ gnu/usr.bin/perl/AUTHORS	14 Sep 2017 02:21:28 -0000
@@ -298,6 +298,7 @@ Darrell Kindred			<dkindred+@cmu.edu>
 Darrell Schiebel		<drs@nrao.edu>
 Darren/Torin/Who Ever...	<torin@daft.com>
 Dave Bianchi
+Dave Cross			<dave@mag-sol.com>
 Dave Hartnoll			<Dave_Hartnoll@3b2.com>
 Dave Liney			<dave.liney@gbr.conoco.com>
 Dave Nelson			<David.Nelson@bellcow.com>
@@ -1147,6 +1148,7 @@ Steve Purkis			<Steve.Purkis@multimap.co
 Steve Vinoski
 Stevan Little			<stevan@cpan.org>
 Steven Hirsch			<hirschs@btv.ibm.com>
+Steven Humphrey			<catchperl@33k.co.uk>
 Steven Knight			<knight@theopera.baldmt.citilink.com>
 Steven Morlock			<newspost@morlock.net>
 Steven N. Hirsch		<hirschs@stargate.btv.ibm.com>
Index: gnu/usr.bin/perl/Configure
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Configure,v
retrieving revision 1.40
diff -u -p -r1.40 Configure
--- gnu/usr.bin/perl/Configure	14 Aug 2017 13:49:42 -0000	1.40
+++ gnu/usr.bin/perl/Configure	14 Sep 2017 02:21:29 -0000
@@ -5239,6 +5239,20 @@ case "$usequadmath" in
 *)                    usequadmath="$undef"  ;;
 esac
 
+: Fail if both uselongdouble and usequadmath are requested
+case "$usequadmath:$uselongdouble" in
+define:define)
+	$cat <<EOM >&4
+
+*** You requested the use of the quadmath library and use
+*** of long doubles.
+***
+*** Please select one or the other.
+EOM
+	exit 1
+        ;;
+esac
+
 : Looking for optional libraries
 echo " "
 echo "Checking for optional libraries..." >&4
@@ -6817,13 +6831,13 @@ yes)
 		if $contains $tlook $tf >/dev/null 2>&1; then
 			tval=true;
 		elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
-			echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p() && p() != (void *)main) return(0); else return(1); }"> try.c;
+			echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main(int argc, char **argv) { if(p() && p() != (void *)argv[0]) return(0); else return(1); }"> try.c;
 			$cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
 			$test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
 			$rm_try;
 		fi;
 	else
-		echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p() && p() != (void *)main) return(0); else return(1); }"> try.c;
+		echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main(int argc, char **argv) { if(p() && p() != (void *)argv[0]) return(0); else return(1); }"> try.c;
 		$cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
 		$rm_try;
 	fi;
@@ -7204,7 +7218,7 @@ case "$usequadmath" in
 $define)
 	echo "quadmath selected." >&4
 	case "$archname" in
-	*-ld*) echo "...and architecture name already has -quadmath." >&4
+	*-quadmath*) echo "...and architecture name already has -quadmath." >&4
 		;;
 	*)      archname="$archname-quadmath"
 		echo "...setting architecture name to $archname." >&4
Index: gnu/usr.bin/perl/INSTALL
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/INSTALL,v
retrieving revision 1.20
diff -u -p -r1.20 INSTALL
--- gnu/usr.bin/perl/INSTALL	14 Aug 2017 13:48:45 -0000	1.20
+++ gnu/usr.bin/perl/INSTALL	14 Sep 2017 02:21:30 -0000
@@ -581,7 +581,7 @@ The directories set up by Configure fall
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.24.2.
+By default, Configure will use the following directories for 5.24.3.
 $version is the full perl version number, including subversion, e.g.
 5.12.3, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
@@ -2437,7 +2437,8 @@ http://www.chiark.greenend.org.uk/~sgtat
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.24.2 is not binary compatible with earlier versions of Perl.
+Perl 5.24.3 is not binary compatible with versions of Perl earlier than
+5.24.0.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl
@@ -2512,9 +2513,9 @@ won't interfere with another version.  (
 libraries after 5.6.0, but not for executables. TODO?)  One convenient
 way to do this is by using a separate prefix for each version, such as
 
-	sh Configure -Dprefix=/opt/perl5.24.2
+	sh Configure -Dprefix=/opt/perl5.24.3
 
-and adding /opt/perl5.24.2/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.24.3/bin to the shell PATH variable.  Such users
 may also wish to add a symbolic link /usr/local/bin/perl so that
 scripts can still start with #!/usr/local/bin/perl.
 
@@ -2527,13 +2528,13 @@ seriously consider using a separate dire
 subversions may not have all the compatibility wrinkles ironed out
 yet.
 
-=head2 Upgrading from v5.22 or earlier
+=head2 Upgrading from 5.23.9 or earlier
 
-B<Perl 5.24.2 may not be binary compatible with Perl v5.22 or
+B<Perl 5.24.3 may not be binary compatible with Perl 5.23.9 or
 earlier Perl releases.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.24.2.  If you find you do need to rebuild an extension with
-5.24.2, you may safely do so without disturbing the older
+used with 5.24.3.  If you find you do need to rebuild an extension with
+5.24.3, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
@@ -2566,15 +2567,15 @@ Firstly, the bare minimum to run this sc
      print("$f\n");
   }
 
-in Linux with perl-5.24.2 is as follows (under $Config{prefix}):
+in Linux with perl-5.24.3 is as follows (under $Config{prefix}):
 
   ./bin/perl
-  ./lib/perl5/5.24.2/strict.pm
-  ./lib/perl5/5.24.2/warnings.pm
-  ./lib/perl5/5.24.2/i686-linux/File/Glob.pm
-  ./lib/perl5/5.24.2/feature.pm
-  ./lib/perl5/5.24.2/XSLoader.pm
-  ./lib/perl5/5.24.2/i686-linux/auto/File/Glob/Glob.so
+  ./lib/perl5/5.24.3/strict.pm
+  ./lib/perl5/5.24.3/warnings.pm
+  ./lib/perl5/5.24.3/i686-linux/File/Glob.pm
+  ./lib/perl5/5.24.3/feature.pm
+  ./lib/perl5/5.24.3/XSLoader.pm
+  ./lib/perl5/5.24.3/i686-linux/auto/File/Glob/Glob.so
 
 Secondly, for perl-5.10.1, the Debian perl-base package contains 591
 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
Index: gnu/usr.bin/perl/MANIFEST
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/MANIFEST,v
retrieving revision 1.45
diff -u -p -r1.45 MANIFEST
--- gnu/usr.bin/perl/MANIFEST	14 Aug 2017 13:50:31 -0000	1.45
+++ gnu/usr.bin/perl/MANIFEST	14 Sep 2017 02:21:30 -0000
@@ -3576,6 +3576,7 @@ dist/Time-HiRes/t/time.t		Test for Time:
 dist/Time-HiRes/t/tv_interval.t		Test for Time::HiRes
 dist/Time-HiRes/t/ualarm.t		Test for Time::HiRes
 dist/Time-HiRes/t/usleep.t		Test for Time::HiRes
+dist/Time-HiRes/t/utime.t		Test for Time::HiRes
 dist/Time-HiRes/t/Watchdog.pm		Test for Time::HiRes
 dist/Time-HiRes/typemap			Time::HiRes extension
 dist/XSLoader/Makefile.PL	Dynamic Loader makefile writer
@@ -5127,8 +5128,10 @@ pod/perl5220delta.pod		Perl changes in v
 pod/perl5221delta.pod		Perl changes in version 5.22.1
 pod/perl5222delta.pod		Perl changes in version 5.22.2
 pod/perl5223delta.pod		Perl changes in version 5.22.3
+pod/perl5224delta.pod		Perl changes in version 5.22.4
 pod/perl5240delta.pod		Perl changes in version 5.24.0
 pod/perl5241delta.pod		Perl changes in version 5.24.1
+pod/perl5242delta.pod		Perl changes in version 5.24.2
 pod/perl561delta.pod		Perl changes in version 5.6.1
 pod/perl56delta.pod		Perl changes in version 5.6
 pod/perl581delta.pod		Perl changes in version 5.8.1
Index: gnu/usr.bin/perl/META.json
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/META.json,v
retrieving revision 1.4
diff -u -p -r1.4 META.json
--- gnu/usr.bin/perl/META.json	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/META.json	14 Sep 2017 02:21:30 -0000
@@ -111,7 +111,7 @@
          "vxs.inc"
       ]
    },
-   "release_status" : "stable",
+   "release_status" : "testing",
    "resources" : {
       "bugtracker" : {
          "web" : "https://rt.perl.org/"
@@ -124,6 +124,6 @@
          "url" : "http://perl5.git.perl.org/"
       }
    },
-   "version" : "5.024002",
+   "version" : "5.024003",
    "x_serialization_backend" : "JSON::PP version 2.27300_01"
 }
Index: gnu/usr.bin/perl/META.yml
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/META.yml,v
retrieving revision 1.4
diff -u -p -r1.4 META.yml
--- gnu/usr.bin/perl/META.yml	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/META.yml	14 Sep 2017 02:21:30 -0000
@@ -111,5 +111,5 @@ resources:
   homepage: http://www.perl.org/
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
-version: '5.024002'
+version: '5.024003'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
Index: gnu/usr.bin/perl/Makefile.SH
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Makefile.SH,v
retrieving revision 1.39
diff -u -p -r1.39 Makefile.SH
--- gnu/usr.bin/perl/Makefile.SH	14 Aug 2017 13:50:31 -0000	1.39
+++ gnu/usr.bin/perl/Makefile.SH	14 Sep 2017 02:21:30 -0000
@@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(
 perllib_objs  = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
 perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
 
-perltoc_pod_prereqs = extra.pods pod/perl5242delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod
+perltoc_pod_prereqs = extra.pods pod/perl5243delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -1079,9 +1079,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) auto
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
 	$(MINIPERL) pod/perlmodlib.PL -q
 
-pod/perl5242delta.pod: pod/perldelta.pod
-	$(RMS) pod/perl5242delta.pod
-	$(LNS) perldelta.pod pod/perl5242delta.pod
+pod/perl5243delta.pod: pod/perldelta.pod
+	$(RMS) pod/perl5243delta.pod
+	$(LNS) perldelta.pod pod/perl5243delta.pod
 
 extra.pods: $(MINIPERL_EXE)
 	-@test ! -f extra.pods || rm -f `cat extra.pods`
Index: gnu/usr.bin/perl/README.haiku
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/README.haiku,v
retrieving revision 1.4
diff -u -p -r1.4 README.haiku
--- gnu/usr.bin/perl/README.haiku	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/README.haiku	14 Sep 2017 02:21:31 -0000
@@ -22,9 +22,9 @@ The build procedure is completely standa
 Make perl executable and create a symlink for libperl:
 
   chmod a+x /boot/common/bin/perl
-  cd /boot/common/lib; ln -s perl5/5.24.2/BePC-haiku/CORE/libperl.so .
+  cd /boot/common/lib; ln -s perl5/5.24.3/BePC-haiku/CORE/libperl.so .
 
-Replace C<5.24.2> with your respective version of Perl.
+Replace C<5.24.3> with your respective version of Perl.
 
 =head1 KNOWN PROBLEMS
 
Index: gnu/usr.bin/perl/README.macosx
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/README.macosx,v
retrieving revision 1.4
diff -u -p -r1.4 README.macosx
--- gnu/usr.bin/perl/README.macosx	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/README.macosx	14 Sep 2017 02:21:31 -0000
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
 
 This document briefly describes Perl under Mac OS X.
 
-  curl -O http://www.cpan.org/src/perl-5.24.2.tar.gz
-  tar -xzf perl-5.24.2.tar.gz
-  cd perl-5.24.2
+  curl -O http://www.cpan.org/src/perl-5.24.3.tar.gz
+  tar -xzf perl-5.24.3.tar.gz
+  cd perl-5.24.3
   ./Configure -des -Dprefix=/usr/local/
   make
   make test
@@ -20,7 +20,7 @@ This document briefly describes Perl und
 
 =head1 DESCRIPTION
 
-The latest Perl release (5.24.2 as of this writing) builds without changes
+The latest Perl release (5.24.3 as of this writing) builds without changes
 under all versions of Mac OS X from 10.3 "Panther" onwards. 
 
 In order to build your own version of Perl you will need 'make',
Index: gnu/usr.bin/perl/README.os2
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/README.os2,v
retrieving revision 1.20
diff -u -p -r1.20 README.os2
--- gnu/usr.bin/perl/README.os2	14 Aug 2017 13:48:45 -0000	1.20
+++ gnu/usr.bin/perl/README.os2	14 Sep 2017 02:21:31 -0000
@@ -619,7 +619,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>, 
 
 =item Additional Perl modules
 
-  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.24.2/
+  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.24.3/
 
 Same remark as above applies.  Additionally, if this directory is not
 one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
Index: gnu/usr.bin/perl/README.vms
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/README.vms,v
retrieving revision 1.21
diff -u -p -r1.21 README.vms
--- gnu/usr.bin/perl/README.vms	14 Aug 2017 13:48:45 -0000	1.21
+++ gnu/usr.bin/perl/README.vms	14 Sep 2017 02:21:31 -0000
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol 
 choice.  Once you have done so, use a command like the following to
 unpack the archive:
 
-    vmstar -xvf perl-5^.24^.2.tar
+    vmstar -xvf perl-5^.24^.3.tar
 
 Then set default to the top-level source directory like so:
 
-    set default [.perl-5^.24^.2]
+    set default [.perl-5^.24^.3]
 
 and proceed with configuration as described in the next section.
 
Index: gnu/usr.bin/perl/configure.com
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/configure.com,v
retrieving revision 1.5
diff -u -p -r1.5 configure.com
--- gnu/usr.bin/perl/configure.com	5 Feb 2017 00:31:52 -0000	1.5
+++ gnu/usr.bin/perl/configure.com	14 Sep 2017 02:21:33 -0000
@@ -1354,7 +1354,8 @@ $     vms_cc_available = vms_cc_availabl
 $   ENDIF
 $ ELSE
 $   IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) -
-    .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
+    .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line)) -
+    .or.(F$LOCATE("VSI",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
 $   THEN 
 $     vms_cc_dflt = "/decc"
 $     vms_cc_available = vms_cc_available + "cc/decc "
@@ -1491,7 +1492,8 @@ $ THEN
 $   ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE")
 $   Mcc = ans
 $   IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) -
-    .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans))
+    .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans)) -
+    .or.(F$LOCATE("vsi",ans).NE.F$LENGTH(ans))
 $   THEN
 $     Mcc = "cc/decc"
 $! CPQ ?
@@ -1508,7 +1510,8 @@ $   ELSE ! Not_cxx
 $     IF Mcc.NES.dflt
 $     THEN
 $       IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. -
-           F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt)
+           F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt) -
+          .or.(F$LOCATE("vsi",dflt).NE.F$LENGTH(dflt))
 $       THEN 
 $         C_COMPILER_Replace = "CC=cc=''Mcc'"
 $       ELSE
Index: gnu/usr.bin/perl/doio.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/doio.c,v
retrieving revision 1.19
diff -u -p -r1.19 doio.c
--- gnu/usr.bin/perl/doio.c	5 Feb 2017 00:31:52 -0000	1.19
+++ gnu/usr.bin/perl/doio.c	14 Sep 2017 02:21:34 -0000
@@ -1845,18 +1845,8 @@ Perl_apply(pTHX_ I32 type, SV **mark, SV
                         int fd = PerlIO_fileno(IoIFP(GvIOn(gv)));
 			APPLY_TAINT_PROPER();
                         if (fd < 0) {
-			    SETERRNO(EBADF,RMS_IFI);
+                            SETERRNO(EBADF,RMS_IFI);
 			    tot--;
-#if Uid_t_sign == 1
-			} else if (val < 0) {
-			    SETERRNO(EINVAL,LIB_INVARG);
-			    tot--;
-#endif
-#if Gid_t_sign == 1
-			} else if (val2 < 0) {
-			    SETERRNO(EINVAL,LIB_INVARG);
-			    tot--;
-#endif
                         } else if (fchown(fd, val, val2))
 			    tot--;
 #else
Index: gnu/usr.bin/perl/embed.fnc
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/embed.fnc,v
retrieving revision 1.4
diff -u -p -r1.4 embed.fnc
--- gnu/usr.bin/perl/embed.fnc	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/embed.fnc	14 Sep 2017 02:21:34 -0000
@@ -2113,7 +2113,7 @@ s	|OP*	|doform		|NN CV *cv|NN GV *gv|NUL
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 sR	|int	|dooneliner	|NN const char *cmd|NN const char *filename
 #  endif
-s	|SV *	|space_join_names_mortal|NN char *const *array
+s	|SV *	|space_join_names_mortal|NULLOK char *const *array
 #endif
 p	|OP *	|tied_method|NN SV *methname|NN SV **sp \
 				|NN SV *const sv|NN const MAGIC *const mg \
@@ -2282,7 +2282,8 @@ Es	|bool	|put_charclass_bitmap_innards|N
 				|NN char* bitmap		    \
 				|NULLOK SV* nonbitmap_invlist	    \
 				|NULLOK SV* only_utf8_locale_invlist\
-				|NULLOK const regnode * const node
+				|NULLOK const regnode * const node  \
+				|const bool force_as_is_display
 Es	|SV*	|put_charclass_bitmap_innards_common		    \
 				|NN SV* invlist			    \
 				|NULLOK SV* posixes		    \
Index: gnu/usr.bin/perl/embed.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/embed.h,v
retrieving revision 1.20
diff -u -p -r1.20 embed.h
--- gnu/usr.bin/perl/embed.h	14 Aug 2017 13:48:45 -0000	1.20
+++ gnu/usr.bin/perl/embed.h	14 Sep 2017 02:21:34 -0000
@@ -964,7 +964,7 @@
 #define dump_trie_interim_list(a,b,c,d,e)	S_dump_trie_interim_list(aTHX_ a,b,c,d,e)
 #define dump_trie_interim_table(a,b,c,d,e)	S_dump_trie_interim_table(aTHX_ a,b,c,d,e)
 #define dumpuntil(a,b,c,d,e,f,g,h)	S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
-#define put_charclass_bitmap_innards(a,b,c,d,e)	S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e)
+#define put_charclass_bitmap_innards(a,b,c,d,e,f)	S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f)
 #define put_charclass_bitmap_innards_common(a,b,c,d,e,f)	S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f)
 #define put_charclass_bitmap_innards_invlist(a,b)	S_put_charclass_bitmap_innards_invlist(aTHX_ a,b)
 #define put_code_point(a,b)	S_put_code_point(aTHX_ a,b)
Index: gnu/usr.bin/perl/hv.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/hv.c,v
retrieving revision 1.21
diff -u -p -r1.21 hv.c
--- gnu/usr.bin/perl/hv.c	5 Feb 2017 00:31:52 -0000	1.21
+++ gnu/usr.bin/perl/hv.c	14 Sep 2017 02:21:35 -0000
@@ -2476,9 +2476,10 @@ Perl_hv_ename_delete(pTHX_ HV *hv, const
 		return;
 	    }
 	if (
-	    count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8)) 
+	    count > 0 && ((HEK_UTF8(*namep) || (flags & SVf_UTF8)) 
                 ? hek_eq_pvn_flags(aTHX_ *namep, name, (I32)len, flags)
 	        : (HEK_LEN(*namep) == (I32)len && memEQ(HEK_KEY(*namep), name, len))
+            )
 	) {
 	    aux->xhv_name_count = -count;
 	}
Index: gnu/usr.bin/perl/locale.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/locale.c,v
retrieving revision 1.3
diff -u -p -r1.3 locale.c
--- gnu/usr.bin/perl/locale.c	5 Feb 2017 00:31:52 -0000	1.3
+++ gnu/usr.bin/perl/locale.c	14 Sep 2017 02:21:36 -0000
@@ -836,7 +836,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
                        : NULL;
 	sl_result = my_setlocale(LC_MESSAGES, locale_param);
         DEBUG_LOCALE_INIT(LC_MESSAGES, locale_param, sl_result);
-	if (! sl_result)
+	if (! sl_result) {
 	    setlocale_failure = TRUE;
         }
 #       endif /* USE_LOCALE_MESSAGES */
Index: gnu/usr.bin/perl/op.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/op.c,v
retrieving revision 1.21
diff -u -p -r1.21 op.c
--- gnu/usr.bin/perl/op.c	5 Feb 2017 00:31:53 -0000	1.21
+++ gnu/usr.bin/perl/op.c	14 Sep 2017 02:21:37 -0000
@@ -3223,6 +3223,12 @@ S_scalar_mod_type(const OP *o, I32 type)
     case OP_BIT_AND:
     case OP_BIT_XOR:
     case OP_BIT_OR:
+    case OP_NBIT_AND:
+    case OP_NBIT_XOR:
+    case OP_NBIT_OR:
+    case OP_SBIT_AND:
+    case OP_SBIT_XOR:
+    case OP_SBIT_OR:
     case OP_CONCAT:
     case OP_SUBST:
     case OP_TRANS:
@@ -6747,24 +6753,7 @@ S_new_logop(pTHX_ I32 type, I32 flags, O
 	|| type == OP_CUSTOM);
 
     scalarboolean(first);
-    /* optimize AND and OR ops that have NOTs as children */
-    if (first->op_type == OP_NOT
-	&& (first->op_flags & OPf_KIDS)
-	&& ((first->op_flags & OPf_SPECIAL) /* unless ($x) { } */
-	    || (other->op_type == OP_NOT))  /* if (!$x && !$y) { } */
-	) {
-	if (type == OP_AND || type == OP_OR) {
-	    if (type == OP_AND)
-		type = OP_OR;
-	    else
-		type = OP_AND;
-	    op_null(first);
-	    if (other->op_type == OP_NOT) { /* !a AND|OR !b => !(a OR|AND b) */
-		op_null(other);
-		prepend_not = 1; /* prepend a NOT op later */
-	    }
-	}
-    }
+
     /* search for a constant op that could let us fold the test */
     if ((cstop = search_const(first))) {
 	if (cstop->op_private & OPpCONST_STRICT)
@@ -6863,6 +6852,25 @@ S_new_logop(pTHX_ I32 type, I32 flags, O
 
     if (type == OP_ANDASSIGN || type == OP_ORASSIGN || type == OP_DORASSIGN)
 	other->op_private |= OPpASSIGN_BACKWARDS;  /* other is an OP_SASSIGN */
+
+    /* optimize AND and OR ops that have NOTs as children */
+    if (first->op_type == OP_NOT
+        && (first->op_flags & OPf_KIDS)
+        && ((first->op_flags & OPf_SPECIAL) /* unless ($x) { } */
+            || (other->op_type == OP_NOT))  /* if (!$x && !$y) { } */
+        ) {
+        if (type == OP_AND || type == OP_OR) {
+            if (type == OP_AND)
+                type = OP_OR;
+            else
+                type = OP_AND;
+            op_null(first);
+            if (other->op_type == OP_NOT) { /* !a AND|OR !b => !(a OR|AND b) */
+                op_null(other);
+                prepend_not = 1; /* prepend a NOT op later */
+            }
+        }
+    }
 
     logop = S_alloc_LOGOP(aTHX_ type, first, LINKLIST(other));
     logop->op_flags |= (U8)flags;
Index: gnu/usr.bin/perl/opcode.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/opcode.h,v
retrieving revision 1.17
diff -u -p -r1.17 opcode.h
--- gnu/usr.bin/perl/opcode.h	5 Feb 2017 00:31:53 -0000	1.17
+++ gnu/usr.bin/perl/opcode.h	14 Sep 2017 02:21:37 -0000
@@ -642,12 +642,12 @@ EXTCONST char* const PL_op_desc[] = {
 	"bitwise and (&)",
 	"bitwise xor (^)",
 	"bitwise or (|)",
-	"numeric bitiwse and (&)",
+	"numeric bitwise and (&)",
 	"numeric bitwise xor (^)",
 	"numeric bitwise or (|)",
-	"string bitiwse and (&)",
-	"string bitwise xor (^)",
-	"string bitwise or (|)",
+	"string bitwise and (&.)",
+	"string bitwise xor (^.)",
+	"string bitwise or (|.)",
 	"negation (-)",
 	"integer negation (-)",
 	"not",
Index: gnu/usr.bin/perl/patchlevel.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/patchlevel.h,v
retrieving revision 1.44
diff -u -p -r1.44 patchlevel.h
--- gnu/usr.bin/perl/patchlevel.h	14 Aug 2017 13:48:45 -0000	1.44
+++ gnu/usr.bin/perl/patchlevel.h	14 Sep 2017 02:21:38 -0000
@@ -15,7 +15,7 @@
 
 #define PERL_REVISION	5		/* age */
 #define PERL_VERSION	24		/* epoch */
-#define PERL_SUBVERSION	2		/* generation */
+#define PERL_SUBVERSION	3		/* generation */
 
 /* The following numbers describe the earliest compatible version of
    Perl ("compatibility" here being defined as sufficient binary/API
@@ -133,6 +133,7 @@ hunk.
 #  endif
 static const char * const local_patches[] = {
 	NULL
+	,"RC1"
 #ifdef PERL_GIT_UNCOMMITTED_CHANGES
 	,"uncommitted-changes"
 #endif
Index: gnu/usr.bin/perl/perl.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/perl.h,v
retrieving revision 1.21
diff -u -p -r1.21 perl.h
--- gnu/usr.bin/perl/perl.h	5 Feb 2017 00:31:53 -0000	1.21
+++ gnu/usr.bin/perl/perl.h	14 Sep 2017 02:21:38 -0000
@@ -2022,6 +2022,12 @@ extern long double Perl_my_frexpl(long d
 #   define Perl_isinf(x) isinfq(x)
 #   define Perl_isnan(x) isnanq(x)
 #   define Perl_isfinite(x) !(isnanq(x) || isinfq(x))
+#   define Perl_fp_class(x) ((x) == 0.0Q ? 0 : isinfq(x) ? 3 : isnanq(x) ? 4 : PERL_ABS(x) < FLT128_MIN ? 2 : 1)
+#   define Perl_fp_class_inf(x)    (Perl_fp_class(x) == 3)
+#   define Perl_fp_class_nan(x)    (Perl_fp_class(x) == 4)
+#   define Perl_fp_class_norm(x)   (Perl_fp_class(x) == 1)
+#   define Perl_fp_class_denorm(x) (Perl_fp_class(x) == 2)
+#   define Perl_fp_class_zero(x)   (Perl_fp_class(x) == 0)
 #else
 #   define NV_DIG DBL_DIG
 #   ifdef DBL_MANT_DIG
@@ -3064,6 +3070,8 @@ freeing any remaining Perl interpreters.
  */
 #if defined(USE_ITHREADS) && defined(I_PTHREAD) && \
     defined(__clang__) && \
+    !defined(PERL_GLOBAL_STRUCT) && \
+    !defined(PERL_GLOBAL_STRUCT_PRIVATE) && \
     !defined(SWIG) && \
   ((!defined(__apple_build_version__) &&               \
     ((__clang_major__ == 3 && __clang_minor__ >= 6) || \
@@ -6304,7 +6312,7 @@ expression, but with an empty argument l
 #    ifdef __hpux
 #        define strtoll __strtoll	/* secret handshake */
 #    endif
-#    ifdef WIN64
+#    if defined(WIN64) && defined(_MSC_VER)
 #        define strtoll _strtoi64	/* secret handshake */
 #    endif
 #   if !defined(Strtol) && defined(HAS_STRTOLL)
@@ -6338,7 +6346,7 @@ expression, but with an empty argument l
 #    ifdef __hpux
 #        define strtoull __strtoull	/* secret handshake */
 #    endif
-#    ifdef WIN64
+#    if defined(WIN64) && defined(_MSC_VER)
 #        define strtoull _strtoui64	/* secret handshake */
 #    endif
 #    if !defined(Strtoul) && defined(HAS_STRTOULL)
@@ -6756,7 +6764,9 @@ extern void moncontrol(int);
 #endif
 
 /* All the basic IEEE formats have the implicit bit,
- * except for the 80-bit extended formats, which will undef this. */
+ * except for the x86 80-bit extended formats, which will undef this.
+ * Also note that the IEEE 754 subnormals (formerly known as denormals)
+ * do not have the implicit bit of one. */
 #define NV_IMPLICIT_BIT
 
 #ifdef LONG_DOUBLEKIND
@@ -6783,6 +6793,7 @@ extern void moncontrol(int);
 #    define LONGDOUBLE_X86_80_BIT
 #    ifdef USE_LONG_DOUBLE
 #      undef NV_IMPLICIT_BIT
+#      define NV_X86_80_BIT
 #    endif
 #  endif
 
Index: gnu/usr.bin/perl/pp_ctl.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pp_ctl.c,v
retrieving revision 1.19
diff -u -p -r1.19 pp_ctl.c
--- gnu/usr.bin/perl/pp_ctl.c	5 Feb 2017 00:31:53 -0000	1.19
+++ gnu/usr.bin/perl/pp_ctl.c	14 Sep 2017 02:21:39 -0000
@@ -3678,8 +3678,8 @@ PP(pp_require)
 
     if (!IS_SAFE_PATHNAME(name, len, "require")) {
         DIE(aTHX_ "Can't locate %s:   %s",
-            pv_escape(newSVpvs_flags("",SVs_TEMP),SvPVX(sv),SvCUR(sv),
-                      SvCUR(sv)*2,NULL, SvUTF8(sv)?PERL_PV_ESCAPE_UNI:0),
+            pv_escape(newSVpvs_flags("",SVs_TEMP),name,len,len*2,
+                      NULL, SvUTF8(sv)?PERL_PV_ESCAPE_UNI:0),
             Strerror(ENOENT));
     }
     TAINT_PROPER("require");
Index: gnu/usr.bin/perl/pp_hot.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pp_hot.c,v
retrieving revision 1.18
diff -u -p -r1.18 pp_hot.c
--- gnu/usr.bin/perl/pp_hot.c	5 Feb 2017 00:31:53 -0000	1.18
+++ gnu/usr.bin/perl/pp_hot.c	14 Sep 2017 02:21:39 -0000
@@ -1181,6 +1181,7 @@ S_aassign_copy_common(pTHX_ SV **firstle
         assert(svr);
 
         if (UNLIKELY(SvFLAGS(svr) & (SVf_BREAK|SVs_GMG) || copy_all)) {
+            U32 brk = (SvFLAGS(svr) & SVf_BREAK);
 
 #ifdef DEBUGGING
             if (fake) {
@@ -1216,7 +1217,7 @@ S_aassign_copy_common(pTHX_ SV **firstle
             /* ... but restore afterwards in case it's needed again,
              * e.g. ($a,$b,$c) = (1,$a,$a)
              */
-            SvFLAGS(svr) |= SVf_BREAK;
+            SvFLAGS(svr) |= brk;
         }
 
         if (!lcount)
Index: gnu/usr.bin/perl/pp_sys.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pp_sys.c,v
retrieving revision 1.19
diff -u -p -r1.19 pp_sys.c
--- gnu/usr.bin/perl/pp_sys.c	5 Feb 2017 00:31:53 -0000	1.19
+++ gnu/usr.bin/perl/pp_sys.c	14 Sep 2017 02:21:40 -0000
@@ -2497,7 +2497,6 @@ PP(pp_socket)
     TAINT_PROPER("socket");
     fd = PerlSock_socket(domain, type, protocol);
     if (fd < 0) {
-        SETERRNO(EBADF,RMS_IFI);
 	RETPUSHUNDEF;
     }
     IoIFP(io) = PerlIO_fdopen(fd, "r"SOCKET_OPEN_MODE);	/* stdio gets confused about sockets */
@@ -3531,8 +3530,9 @@ PP(pp_fttext)
         }
 	PL_laststatval = PerlLIO_fstat(fd, &PL_statcache);
 	if (PL_laststatval < 0)	{
+            dSAVE_ERRNO;
 	    (void)PerlIO_close(fp);
-            SETERRNO(EBADF,RMS_IFI);
+            RESTORE_ERRNO;
 	    FT_RETURNUNDEF;
 	}
 	PerlIO_binmode(aTHX_ fp, '<', O_BINARY, NULL);
@@ -4934,9 +4934,7 @@ S_space_join_names_mortal(pTHX_ char *co
 {
     SV *target;
 
-    PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL;
-
-    if (*array) {
+    if (array && *array) {
 	target = newSVpvs_flags("", SVs_TEMP);
 	while (1) {
 	    sv_catpv(target, *array);
Index: gnu/usr.bin/perl/proto.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/proto.h,v
retrieving revision 1.20
diff -u -p -r1.20 proto.h
--- gnu/usr.bin/perl/proto.h	14 Aug 2017 13:48:45 -0000	1.20
+++ gnu/usr.bin/perl/proto.h	14 Sep 2017 02:21:40 -0000
@@ -3842,7 +3842,7 @@ STATIC void	S_dump_trie_interim_table(pT
 STATIC const regnode*	S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth);
 #define PERL_ARGS_ASSERT_DUMPUNTIL	\
 	assert(r); assert(start); assert(node); assert(sv)
-STATIC bool	S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node);
+STATIC bool	S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const bool force_as_is_display);
 #define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS	\
 	assert(sv); assert(bitmap)
 STATIC SV*	S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert);
@@ -4693,8 +4693,6 @@ STATIC OP*	S_doform(pTHX_ CV *cv, GV *gv
 #define PERL_ARGS_ASSERT_DOFORM	\
 	assert(cv); assert(gv)
 STATIC SV *	S_space_join_names_mortal(pTHX_ char *const *array);
-#define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL	\
-	assert(array)
 #endif
 #if defined(PERL_IN_REGCOMP_C)
 STATIC void	S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
Index: gnu/usr.bin/perl/regcomp.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/regcomp.c,v
retrieving revision 1.22
diff -u -p -r1.22 regcomp.c
--- gnu/usr.bin/perl/regcomp.c	5 Feb 2017 00:31:53 -0000	1.22
+++ gnu/usr.bin/perl/regcomp.c	14 Sep 2017 02:21:42 -0000
@@ -199,6 +199,7 @@ struct RExC_state_t {
     scan_frame *frame_head;
     scan_frame *frame_last;
     U32         frame_count;
+    AV         *warn_text;
 #ifdef ADD_TO_REGEXEC
     char 	*starttry;		/* -Dr: where regtry was called. */
 #define RExC_starttry	(pRExC_state->starttry)
@@ -222,6 +223,7 @@ struct RExC_state_t {
 #endif
     bool        seen_unfolded_sharp_s;
     bool        strict;
+    bool        study_started;
 };
 
 #define RExC_flags	(pRExC_state->flags)
@@ -288,6 +290,8 @@ struct RExC_state_t {
 #define RExC_frame_last (pRExC_state->frame_last)
 #define RExC_frame_count (pRExC_state->frame_count)
 #define RExC_strict (pRExC_state->strict)
+#define RExC_study_started      (pRExC_state->study_started)
+#define RExC_warn_text (pRExC_state->warn_text)
 
 /* Heuristic check on the complexity of the pattern: if TOO_NAUGHTY, we set
  * a flag to disable back-off on the fixed/floating substrings - if it's
@@ -4102,6 +4106,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_
     GET_RE_DEBUG_FLAGS_DECL;
 
     PERL_ARGS_ASSERT_STUDY_CHUNK;
+    RExC_study_started= 1;
 
 
     if ( depth == 0 ) {
@@ -5899,15 +5904,10 @@ Perl_re_printf( aTHX_  "LHS=%"UVuf" RHS=
 	/* Else: zero-length, ignore. */
 	scan = regnext(scan);
     }
-    /* If we are exiting a recursion we can unset its recursed bit
-     * and allow ourselves to enter it again - no danger of an
-     * infinite loop there.
-    if (stopparen > -1 && recursed) {
-	DEBUG_STUDYDATA("unset:", data,depth);
-        PAREN_UNSET( recursed, stopparen);
-    }
-    */
+
+  finish:
     if (frame) {
+        /* we need to unwind recursion. */
         depth = depth - 1;
 
         DEBUG_STUDYDATA("frame-end:",data,depth);
@@ -5924,7 +5924,6 @@ Perl_re_printf( aTHX_  "LHS=%"UVuf" RHS=
         goto fake_study_recurse;
     }
 
-  finish:
     assert(!frame);
     DEBUG_STUDYDATA("pre-fin:",data,depth);
 
@@ -6767,6 +6766,7 @@ Perl_re_op_compile(pTHX_ SV ** const pat
 #endif
     }
 
+    pRExC_state->warn_text = NULL;
     pRExC_state->code_blocks = NULL;
     pRExC_state->num_code_blocks = 0;
 
@@ -6883,6 +6883,7 @@ Perl_re_op_compile(pTHX_ SV ** const pat
     RExC_contains_locale = 0;
     RExC_contains_i = 0;
     RExC_strict = cBOOL(pm_flags & RXf_PMf_STRICT);
+    RExC_study_started = 0;
     pRExC_state->runtime_code_qr = NULL;
     RExC_frame_head= NULL;
     RExC_frame_last= NULL;
@@ -10619,7 +10620,10 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I
                 RExC_seen |= REG_LOOKBEHIND_SEEN;
 		RExC_in_lookbehind++;
 		RExC_parse++;
-                assert(RExC_parse < RExC_end);
+                if (RExC_parse >= RExC_end) {
+                    vFAIL("Sequence (?... not terminated");
+                }
+
                 /* FALLTHROUGH */
 	    case '=':           /* (?=...) */
 		RExC_seen_zerolen++;
@@ -11918,14 +11922,16 @@ S_grok_bslash_N(pTHX_ RExC_state_t *pREx
 	}
         sv_catpv(substitute_parse, ")");
 
-        RExC_parse = RExC_start = RExC_adjusted_start = SvPV(substitute_parse,
-                                                             len);
+        len = SvCUR(substitute_parse);
 
 	/* Don't allow empty number */
 	if (len < (STRLEN) 8) {
             RExC_parse = endbrace;
 	    vFAIL("Invalid hexadecimal number in \\N{U+...}");
 	}
+
+        RExC_parse = RExC_start = RExC_adjusted_start
+                                              = SvPV_nolen(substitute_parse);
 	RExC_end = RExC_parse + len;
 
         /* The values are Unicode, and therefore not subject to recoding, but
@@ -13018,6 +13024,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_stat
                             goto loopdone;
                         }
                         p = RExC_parse;
+                        RExC_parse = parse_start;
                         if (ender > 0xff) {
                             REQUIRE_UTF8(flagp);
                         }
@@ -13704,8 +13711,8 @@ S_populate_ANYOF_from_invlist(pTHX_ regn
  * routine. q.v. */
 #define ADD_POSIX_WARNING(p, text)  STMT_START {                            \
         if (posix_warnings) {                                               \
-            if (! warn_text) warn_text = newAV();                           \
-            av_push(warn_text, Perl_newSVpvf(aTHX_                          \
+            if (! RExC_warn_text ) RExC_warn_text = (AV *) sv_2mortal((SV *) newAV()); \
+            av_push(RExC_warn_text, Perl_newSVpvf(aTHX_                          \
                                              WARNING_PREFIX                 \
                                              text                           \
                                              REPORT_LOCATION,               \
@@ -13836,7 +13843,6 @@ S_handle_possible_posix(pTHX_ RExC_state
     bool has_opening_colon    = FALSE;
     int class_number          = OOB_NAMEDCLASS; /* Out-of-bounds until find
                                                    valid class */
-    AV* warn_text             = NULL;   /* any warning messages */
     const char * possible_end = NULL;   /* used for a 2nd parse pass */
     const char* name_start;             /* ptr to class name first char */
 
@@ -13852,6 +13858,9 @@ S_handle_possible_posix(pTHX_ RExC_state
 
     PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX;
 
+    if (posix_warnings && RExC_warn_text)
+        av_clear(RExC_warn_text);
+
     if (p >= e) {
         return NOT_MEANT_TO_BE_A_POSIX_CLASS;
     }
@@ -14469,14 +14478,8 @@ S_handle_possible_posix(pTHX_ RExC_state
                 ADD_POSIX_WARNING(p, "there is no terminating ']'");
             }
 
-            if (warn_text) {
-                if (posix_warnings) {
-                    /* mortalize to avoid a leak with FATAL warnings */
-                    *posix_warnings = (AV *) sv_2mortal((SV *) warn_text);
-                }
-                else {
-                    SvREFCNT_dec_NN(warn_text);
-                }
+            if (posix_warnings && RExC_warn_text && av_top_index(RExC_warn_text) > -1) {
+                *posix_warnings = RExC_warn_text;
             }
         }
         else if (class_number != OOB_NAMEDCLASS) {
@@ -14882,8 +14885,8 @@ redo_curchar:
                 }
 
                 /* Stack the position of this undealt-with left paren */
-                fence = top_index + 1;
                 av_push(fence_stack, newSViv(fence));
+                fence = top_index + 1;
                 break;
 
             case '\\':
@@ -14964,7 +14967,12 @@ redo_curchar:
                     vFAIL("Unexpected ')'");
                 }
 
-                 /* If at least two thing on the stack, treat this as an
+                /* If nothing after the fence, is missing an operand */
+                if (top_index - fence < 0) {
+                    RExC_parse++;
+                    goto bad_syntax;
+                }
+                /* If at least two things on the stack, treat this as an
                   * operator */
                 if (top_index - fence >= 1) {
                     goto join_operators;
@@ -18241,7 +18249,9 @@ S_reginsert(pTHX_ RExC_state_t *pRExC_st
 	RExC_size += size;
 	return;
     }
-
+    assert(!RExC_study_started); /* I believe we should never use reginsert once we have started
+                                    studying. If this is wrong then we need to adjust RExC_recurse
+                                    below like we do with RExC_open_parens/RExC_close_parens. */
     src = RExC_emit;
     RExC_emit += size;
     dst = RExC_emit;
@@ -18252,7 +18262,10 @@ S_reginsert(pTHX_ RExC_state_t *pRExC_st
          * iow it is 1 more than the number of parens seen in
          * the pattern so far. */
         for ( paren=0 ; paren < RExC_npar ; paren++ ) {
-            if ( RExC_open_parens[paren] >= opnd ) {
+            /* note, RExC_open_parens[0] is the start of the
+             * regex, it can't move. RExC_close_parens[0] is the end
+             * of the regex, it *can* move. */
+            if ( paren && RExC_open_parens[paren] >= opnd ) {
                 /*DEBUG_PARSE_FMT("open"," - %d",size);*/
                 RExC_open_parens[paren] += size;
             } else {
@@ -18747,7 +18760,8 @@ Perl_regprop(pTHX_ const regexp *prog, S
                                                  : TRIE_BITMAP(trie)),
                                                 NULL,
                                                 NULL,
-                                                NULL
+                                                NULL,
+                                                FALSE
                                                );
             sv_catpvs(sv, "]");
         }
@@ -18846,6 +18860,8 @@ Perl_regprop(pTHX_ const regexp *prog, S
         /* And things that aren't in the bitmap, but are small enough to be */
         SV* bitmap_range_not_in_bitmap = NULL;
 
+        const bool inverted = flags & ANYOF_INVERT;
+
 	if (OP(o) == ANYOFL) {
             if (ANYOFL_UTF8_LOCALE_REQD(flags)) {
                 sv_catpvs(sv, "{utf8-locale-reqd}");
@@ -18890,21 +18906,37 @@ Perl_regprop(pTHX_ const regexp *prog, S
                                               ANYOF_BITMAP(o),
                                               bitmap_range_not_in_bitmap,
                                               only_utf8_locale_invlist,
-                                              o);
+                                              o,
+
+                                              /* Can't try inverting for a
+                                               * better display if there are
+                                               * things that haven't been
+                                               * resolved */
+                                              unresolved != NULL);
         SvREFCNT_dec(bitmap_range_not_in_bitmap);
 
         /* If there are user-defined properties which haven't been defined yet,
-         * output them, in a separate [] from the bitmap range stuff */
+         * output them.  If the result is not to be inverted, it is clearest to
+         * output them in a separate [] from the bitmap range stuff.  If the
+         * result is to be complemented, we have to show everything in one [],
+         * as the inversion applies to the whole thing.  Use {braces} to
+         * separate them from anything in the bitmap and anything above the
+         * bitmap. */
         if (unresolved) {
-            if (do_sep) {
-                Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
+            if (inverted) {
+                if (! do_sep) { /* If didn't output anything in the bitmap */
+                    sv_catpvs(sv, "^");
+                }
+                sv_catpvs(sv, "{");
             }
-            if (flags & ANYOF_INVERT) {
-                sv_catpvs(sv, "^");
+            else if (do_sep) {
+                Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
             }
             sv_catsv(sv, unresolved);
-            do_sep = TRUE;
-            SvREFCNT_dec_NN(unresolved);
+            if (inverted) {
+                sv_catpvs(sv, "}");
+            }
+            do_sep = ! inverted;
         }
 
         /* And, finally, add the above-the-bitmap stuff */
@@ -18921,9 +18953,11 @@ Perl_regprop(pTHX_ const regexp *prog, S
                 Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
             }
 
-            /* And, for easy of understanding, it is always output not-shown as
-             * complemented */
-            if (flags & ANYOF_INVERT) {
+            /* And, for easy of understanding, it is shown in the
+             * uncomplemented form if possible.  The one exception being if
+             * there are unresolved items, where the inversion has to be
+             * delayed until runtime */
+            if (inverted && ! unresolved) {
                 _invlist_invert(nonbitmap_invlist);
                 _invlist_subtract(nonbitmap_invlist, PL_InBitmap, &nonbitmap_invlist);
             }
@@ -18960,6 +18994,8 @@ Perl_regprop(pTHX_ const regexp *prog, S
 
         /* And finally the matching, closing ']' */
 	Perl_sv_catpvf(aTHX_ sv, "%s]", PL_colors[1]);
+
+        SvREFCNT_dec(unresolved);
     }
     else if (k == POSIXD || k == NPOSIXD) {
         U8 index = FLAGS(o) * 2;
@@ -19884,7 +19920,9 @@ S_put_charclass_bitmap_innards_common(pT
 )
 {
     /* Create and return an SV containing a displayable version of the bitmap
-     * and associated information determined by the input parameters. */
+     * and associated information determined by the input parameters.  If the
+     * output would have been only the inversion indicator '^', NULL is instead
+     * returned. */
 
     SV * output;
 
@@ -19943,9 +19981,8 @@ S_put_charclass_bitmap_innards_common(pT
         }
     }
 
-    /* If the only thing we output is the '^', clear it */
     if (invert && SvCUR(output) == 1) {
-        SvCUR_set(output, 0);
+        return NULL;
     }
 
     return output;
@@ -19956,7 +19993,8 @@ S_put_charclass_bitmap_innards(pTHX_ SV 
                                      char *bitmap,
                                      SV *nonbitmap_invlist,
                                      SV *only_utf8_locale_invlist,
-                                     const regnode * const node)
+                                     const regnode * const node,
+                                     const bool force_as_is_display)
 {
     /* Appends to 'sv' a displayable version of the innards of the bracketed
      * character class defined by the other arguments:
@@ -19972,13 +20010,16 @@ S_put_charclass_bitmap_innards(pTHX_ SV 
      *  'node' is the regex pattern node.  It is needed only when the above two
      *      parameters are not null, and is passed so that this routine can
      *      tease apart the various reasons for them.
+     *  'force_as_is_display' is TRUE if this routine should definitely NOT try
+     *      to invert things to see if that leads to a cleaner display.  If
+     *      FALSE, this routine is free to use its judgment about doing this.
      *
      * It returns TRUE if there was actually something output.  (It may be that
      * the bitmap, etc is empty.)
      *
      * When called for outputting the bitmap of a non-ANYOF node, just pass the
-     * bitmap, with the succeeding parameters set to NULL.
-     *
+     * bitmap, with the succeeding parameters set to NULL, and the final one to
+     * FALSE.
      */
 
     /* In general, it tries to display the 'cleanest' representation of the
@@ -19986,7 +20027,7 @@ S_put_charclass_bitmap_innards(pTHX_ SV 
      * whether the class itself is to be inverted.  However,  there are some
      * cases where it can't try inverting, as what actually matches isn't known
      * until runtime, and hence the inversion isn't either. */
-    bool inverting_allowed = TRUE;
+    bool inverting_allowed = ! force_as_is_display;
 
     int i;
     STRLEN orig_sv_cur = SvCUR(sv);
@@ -20115,7 +20156,10 @@ S_put_charclass_bitmap_innards(pTHX_ SV 
 
     /* If have to take the output as-is, just do that */
     if (! inverting_allowed) {
-        sv_catsv(sv, as_is_display);
+        if (as_is_display) {
+            sv_catsv(sv, as_is_display);
+            SvREFCNT_dec_NN(as_is_display);
+        }
     }
     else { /* But otherwise, create the output again on the inverted input, and
               use whichever version is shorter */
@@ -20173,17 +20217,19 @@ S_put_charclass_bitmap_innards(pTHX_ SV 
 
         /* Use the shortest representation, taking into account our bias
          * against showing it inverted */
-        if (SvCUR(inverted_display) + inverted_bias
-            < SvCUR(as_is_display) + as_is_bias)
+        if (   inverted_display
+            && (   ! as_is_display
+                || (  SvCUR(inverted_display) + inverted_bias
+                    < SvCUR(as_is_display)    + as_is_bias)))
         {
 	    sv_catsv(sv, inverted_display);
         }
-        else {
+        else if (as_is_display) {
 	    sv_catsv(sv, as_is_display);
         }
 
-        SvREFCNT_dec_NN(as_is_display);
-        SvREFCNT_dec_NN(inverted_display);
+        SvREFCNT_dec(as_is_display);
+        SvREFCNT_dec(inverted_display);
     }
 
     SvREFCNT_dec_NN(invlist);
Index: gnu/usr.bin/perl/sv.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/sv.c,v
retrieving revision 1.23
diff -u -p -r1.23 sv.c
--- gnu/usr.bin/perl/sv.c	5 Feb 2017 00:31:53 -0000	1.23
+++ gnu/usr.bin/perl/sv.c	14 Sep 2017 02:21:43 -0000
@@ -9706,6 +9706,8 @@ Perl_sv_resetpvn(pTHX_ const char *s, ST
 		if (!todo[(U8)*HeKEY(entry)])
 		    continue;
 		gv = MUTABLE_GV(HeVAL(entry));
+		if (!isGV(gv))
+		    continue;
 		sv = GvSV(gv);
 		if (sv && !SvREADONLY(sv)) {
 		    SV_CHECK_THINKFIRST_COW_DROP(sv);
@@ -10983,8 +10985,9 @@ Perl_sv_vcatpvfn(pTHX_ SV *const sv, con
  * the hexadecimal values (for %a/%A).  The nv is the NV where the value
  * are being extracted from (either directly from the long double in-memory
  * presentation, or from the uquad computed via frexp+ldexp).  frexp also
- * is used to update the exponent.  vhex is the pointer to the beginning
- * of the output buffer (of VHEX_SIZE).
+ * is used to update the exponent.  The subnormal is set to true
+ * for IEEE 754 subnormals/denormals (including the x86 80-bit format).
+ * The vhex is the pointer to the beginning of the output buffer of VHEX_SIZE.
  *
  * The tricky part is that S_hextract() needs to be called twice:
  * the first time with vend as NULL, and the second time with vend as
@@ -10994,14 +10997,15 @@ Perl_sv_vcatpvfn(pTHX_ SV *const sv, con
  * (the extraction of the hexadecimal values) takes place.
  * Sanity failures cause fatal failures during both rounds. */
 STATIC U8*
-S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
+S_hextract(pTHX_ const NV nv, int* exponent, bool *subnormal,
+           U8* vhex, U8* vend)
 {
     U8* v = vhex;
     int ix;
     int ixmin = 0, ixmax = 0;
 
-    /* XXX Inf/NaN/denormal handling in the HEXTRACT_IMPLICIT_BIT,
-     * and elsewhere. */
+    /* XXX Inf/NaN are not handled here, since it is
+     * assumed they are to be output as "Inf" and "NaN". */
 
     /* These macros are just to reduce typos, they have multiple
      * repetitions below, but usually only one (or sometimes two)
@@ -11034,13 +11038,20 @@ S_hextract(pTHX_ const NV nv, int* expon
     for (ix = a; ix >= b; ix--) { HEXTRACT_BYTE(ix); }
 #define HEXTRACT_BYTES_BE(a, b) \
     for (ix = a; ix <= b; ix++) { HEXTRACT_BYTE(ix); }
+#define HEXTRACT_GET_SUBNORMAL(nv) *subnormal = Perl_fp_class_denorm(nv)
 #define HEXTRACT_IMPLICIT_BIT(nv) \
     STMT_START { \
-        if (vend) *v++ = ((nv) == 0.0) ? 0 : 1; else v++; \
+        if (!*subnormal) { \
+            if (vend) *v++ = ((nv) == 0.0) ? 0 : 1; else v++; \
+        } \
    } STMT_END
 
-/* Most formats do.  Those which don't should undef this. */
+/* Most formats do.  Those which don't should undef this.
+ *
+ * But also note that IEEE 754 subnormals do not have it, or,
+ * expressed alternatively, their implicit bit is zero. */
 #define HEXTRACT_HAS_IMPLICIT_BIT
+
 /* Many formats do.  Those which don't should undef this. */
 #define HEXTRACT_HAS_TOP_NYBBLE
 
@@ -11054,6 +11065,7 @@ S_hextract(pTHX_ const NV nv, int* expon
     const U8* vmaxend = vhex + HEXTRACTSIZE;
     PERL_UNUSED_VAR(ix); /* might happen */
     (void)Perl_frexp(PERL_ABS(nv), exponent);
+    *subnormal = FALSE;
     if (vend && (vend <= vhex || vend > vmaxend)) {
         /* diag_listed_as: Hexadecimal float: internal error (%s) */
         Perl_croak(aTHX_ "Hexadecimal float: internal error (entry)");
@@ -11063,10 +11075,11 @@ S_hextract(pTHX_ const NV nv, int* expon
 #if defined(USE_LONG_DOUBLE) && (NVSIZE > DOUBLESIZE)
 #  if LONG_DOUBLEKIND == LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
         /* Used in e.g. VMS and HP-UX IA-64, e.g. -0.1L:
-         * 9a 99 99 99 99 99 99 99 99 99 99 99 99 99 fb 3f */
+         * 9a 99 99 99 99 99 99 99 99 99 99 99 99 99 fb bf */
         /* The bytes 13..0 are the mantissa/fraction,
          * the 15,14 are the sign+exponent. */
         const U8* nvp = (const U8*)(&nv);
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_IMPLICIT_BIT(nv);
 #   undef HEXTRACT_HAS_TOP_NYBBLE
         HEXTRACT_BYTES_LE(13, 0);
@@ -11076,18 +11089,21 @@ S_hextract(pTHX_ const NV nv, int* expon
         /* The bytes 2..15 are the mantissa/fraction,
          * the 0,1 are the sign+exponent. */
         const U8* nvp = (const U8*)(&nv);
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_IMPLICIT_BIT(nv);
 #   undef HEXTRACT_HAS_TOP_NYBBLE
         HEXTRACT_BYTES_BE(2, 15);
 #  elif LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
         /* x86 80-bit "extended precision", 64 bits of mantissa / fraction /
-         * significand, 15 bits of exponent, 1 bit of sign.  NVSIZE can
-         * be either 12 (ILP32, Solaris x86) or 16 (LP64, Linux and OS X),
-         * meaning that 2 or 6 bytes are empty padding. */
-        /* The bytes 7..0 are the mantissa/fraction */
+         * significand, 15 bits of exponent, 1 bit of sign.  No implicit bit.
+         * NVSIZE can be either 12 (ILP32, Solaris x86) or 16 (LP64, Linux
+         * and OS X), meaning that 2 or 6 bytes are empty padding. */
+        /* The bytes 0..1 are the sign+exponent,
+	 * the bytes 2..9 are the mantissa/fraction. */
         const U8* nvp = (const U8*)(&nv);
 #    undef HEXTRACT_HAS_IMPLICIT_BIT
 #    undef HEXTRACT_HAS_TOP_NYBBLE
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_BYTES_LE(7, 0);
 #  elif LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
         /* Does this format ever happen? (Wikipedia says the Motorola
@@ -11097,6 +11113,7 @@ S_hextract(pTHX_ const NV nv, int* expon
         const U8* nvp = (const U8*)(&nv);
 #    undef HEXTRACT_HAS_IMPLICIT_BIT
 #    undef HEXTRACT_HAS_TOP_NYBBLE
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_BYTES_BE(0, 7);
 #  else
 #    define HEXTRACT_FALLBACK
@@ -11132,18 +11149,21 @@ S_hextract(pTHX_ const NV nv, int* expon
 #    ifdef HEXTRACT_LITTLE_ENDIAN
         /* 0 1 2 3 4 5 6 7 (MSB = 7, LSB = 0, 6+7 = exponent+sign) */
         const U8* nvp = (const U8*)(&nv);
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_IMPLICIT_BIT(nv);
         HEXTRACT_TOP_NYBBLE(6);
         HEXTRACT_BYTES_LE(5, 0);
 #    elif defined(HEXTRACT_BIG_ENDIAN)
         /* 7 6 5 4 3 2 1 0 (MSB = 7, LSB = 0, 6+7 = exponent+sign) */
         const U8* nvp = (const U8*)(&nv);
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_IMPLICIT_BIT(nv);
         HEXTRACT_TOP_NYBBLE(1);
         HEXTRACT_BYTES_BE(2, 7);
 #    elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
         /* 4 5 6 7 0 1 2 3 (MSB = 7, LSB = 0, 6:7 = nybble:exponent:sign) */
         const U8* nvp = (const U8*)(&nv);
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_IMPLICIT_BIT(nv);
         HEXTRACT_TOP_NYBBLE(2); /* 6 */
         HEXTRACT_BYTE(1); /* 5 */
@@ -11155,6 +11175,7 @@ S_hextract(pTHX_ const NV nv, int* expon
 #    elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
         /* 3 2 1 0 7 6 5 4 (MSB = 7, LSB = 0, 7:6 = sign:exponent:nybble) */
         const U8* nvp = (const U8*)(&nv);
+	HEXTRACT_GET_SUBNORMAL(nv);
         HEXTRACT_IMPLICIT_BIT(nv);
         HEXTRACT_TOP_NYBBLE(5); /* 6 */
         HEXTRACT_BYTE(6); /* 5 */
@@ -11171,6 +11192,7 @@ S_hextract(pTHX_ const NV nv, int* expon
 #  endif
 #endif /* #if defined(USE_LONG_DOUBLE) && (NVSIZE > DOUBLESIZE) #else */
 #  ifdef HEXTRACT_FALLBACK
+	HEXTRACT_GET_SUBNORMAL(nv);
 #    undef HEXTRACT_HAS_TOP_NYBBLE /* Meaningless, but consistent. */
         /* The fallback is used for the double-double format, and
          * for unknown long double formats, and for unknown double
@@ -12296,7 +12318,13 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
                     need = BIT_DIGITS(i);
                 } /* if i < 0, the number of digits is hard to predict. */
 	    }
-	    need += has_precis ? precis : 6; /* known default */
+
+            {
+                STRLEN pr = has_precis ? precis : 6; /* known default */
+                if (need >= ((STRLEN)~0) - pr)
+                    croak_memory_wrap();
+                need += pr;
+            }
 
 	    if (need < width)
 		need = width;
@@ -12367,10 +12395,12 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
 
 #endif /* HAS_LDBL_SPRINTF_BUG */
 
-	    need += 20; /* fudge factor */
+            if (need >= ((STRLEN)~0) - 40)
+                croak_memory_wrap();
+	    need += 40; /* fudge factor */
 	    if (PL_efloatsize < need) {
 		Safefree(PL_efloatbuf);
-		PL_efloatsize = need + 20; /* more fudge */
+		PL_efloatsize = need;
 		Newx(PL_efloatbuf, PL_efloatsize, char);
 		PL_efloatbuf[0] = '\0';
 	    }
@@ -12402,6 +12432,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
                 U8* vend; /* pointer to one beyond last digit of vhex */
                 U8* vfnz = NULL; /* first non-zero */
                 U8* vlnz = NULL; /* last non-zero */
+                U8* v0 = NULL; /* first output */
                 const bool lower = (c == 'a');
                 /* At output the values of vhex (up to vend) will
                  * be mapped through the xdig to get the actual
@@ -12410,33 +12441,47 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
                 int zerotail = 0; /* how many extra zeros to append */
                 int exponent = 0; /* exponent of the floating point input */
                 bool hexradix = FALSE; /* should we output the radix */
+                bool subnormal = FALSE; /* IEEE 754 subnormal/denormal */
+                bool negative = FALSE;
 
-                /* XXX: denormals, NaN, Inf.
+                /* XXX: NaN, Inf -- though they are printed as "NaN" and "Inf".
                  *
                  * For example with denormals, (assuming the vanilla
                  * 64-bit double): the exponent is zero. 1xp-1074 is
                  * the smallest denormal and the smallest double, it
-                 * should be output as 0x0.0000000000001p-1022 to
+                 * could be output also as 0x0.0000000000001p-1022 to
                  * match its internal structure. */
 
-                vend = S_hextract(aTHX_ nv, &exponent, vhex, NULL);
-                S_hextract(aTHX_ nv, &exponent, vhex, vend);
+                vend = S_hextract(aTHX_ nv, &exponent, &subnormal, vhex, NULL);
+                S_hextract(aTHX_ nv, &exponent, &subnormal, vhex, vend);
 
 #if NVSIZE > DOUBLESIZE
 #  ifdef HEXTRACT_HAS_IMPLICIT_BIT
                 /* In this case there is an implicit bit,
-                 * and therefore the exponent is shifted shift by one. */
+                 * and therefore the exponent is shifted by one. */
                 exponent--;
 #  else
-                /* In this case there is no implicit bit,
-                 * and the exponent is shifted by the first xdigit. */
-                exponent -= 4;
+#   ifdef NV_X86_80_BIT
+                if (subnormal) {
+                    /* The subnormals of the x86-80 have a base exponent of -16382,
+                     * (while the physical exponent bits are zero) but the frexp()
+                     * returned the scientific-style floating exponent.  We want
+                     * to map the last one as:
+                     * -16831..-16384 -> -16382 (the last normal is 0x1p-16382)
+                     * -16835..-16388 -> -16384
+                     * since we want to keep the first hexdigit
+                     * as one of the [8421]. */
+                    exponent = -4 * ( (exponent + 1) / -4) - 2;
+                } else {
+                    exponent -= 4;
+                }
+#   endif
+                /* TBD: other non-implicit-bit platforms than the x86-80. */
 #  endif
 #endif
 
-                if (fv < 0
-                    || Perl_signbit(nv)
-                  )
+                negative = fv < 0 || Perl_signbit(nv);
+                if (negative)
                     *p++ = '-';
                 else if (plus)
                     *p++ = plus;
@@ -12471,50 +12516,98 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
                         exponent--;
 #endif
 
-                    if (precis > 0) {
-                        if ((SSize_t)(precis + 1) < vend - vhex) {
-                            bool round;
-
-                            v = vhex + precis + 1;
-                            /* Round away from zero: if the tail
-                             * beyond the precis xdigits is equal to
-                             * or greater than 0x8000... */
-                            round = *v > 0x8;
-                            if (!round && *v == 0x8) {
-                                for (v++; v < vend; v++) {
-                                    if (*v) {
-                                        round = TRUE;
-                                        break;
-                                    }
+                    if (subnormal) {
+#ifndef NV_X86_80_BIT
+                      if (vfnz[0] > 1) {
+                        /* IEEE 754 subnormals (but not the x86 80-bit):
+                         * we want "normalize" the subnormal,
+			 * so we need to right shift the hex nybbles
+                         * so that the output of the subnormal starts
+                         * from the first true bit.  (Another, equally
+			 * valid, policy would be to dump the subnormal
+			 * nybbles as-is, to display the "physical" layout.) */
+                        int i, n;
+                        U8 *vshr;
+                        /* Find the ceil(log2(v[0])) of
+                         * the top non-zero nybble. */
+                        for (i = vfnz[0], n = 0; i > 1; i >>= 1, n++) { }
+                        assert(n < 4);
+                        vlnz[1] = 0;
+                        for (vshr = vlnz; vshr >= vfnz; vshr--) {
+                          vshr[1] |= (vshr[0] & (0xF >> (4 - n))) << (4 - n);
+                          vshr[0] >>= n;
+                        }
+                        if (vlnz[1]) {
+                          vlnz++;
+                        }
+                      }
+#endif
+                      v0 = vfnz;
+                    } else {
+                      v0 = vhex;
+                    }
+
+                    if (has_precis) {
+                        U8* ve = (subnormal ? vlnz + 1 : vend);
+                        SSize_t vn = ve - (subnormal ? vfnz : vhex);
+                        if ((SSize_t)(precis + 1) < vn) {
+                            bool overflow = FALSE;
+                            if (v0[precis + 1] < 0x8) {
+                                /* Round down, nothing to do. */
+                            } else if (v0[precis + 1] > 0x8) {
+                                /* Round up. */
+                                v0[precis]++;
+                                overflow = v0[precis] > 0xF;
+                                v0[precis] &= 0xF;
+                            } else { /* v0[precis] == 0x8 */
+                                /* Half-point: round towards the one
+                                 * with the even least-significant digit:
+                                 * 08 -> 0  88 -> 8
+                                 * 18 -> 2  98 -> a
+                                 * 28 -> 2  a8 -> a
+                                 * 38 -> 4  b8 -> c
+                                 * 48 -> 4  c8 -> c
+                                 * 58 -> 6  d8 -> e
+                                 * 68 -> 6  e8 -> e
+                                 * 78 -> 8  f8 -> 10 */
+                                if ((v0[precis] & 0x1)) {
+                                    v0[precis]++;
                                 }
+                                overflow = v0[precis] > 0xF;
+                                v0[precis] &= 0xF;
                             }
-                            if (round) {
-                                for (v = vhex + precis; v >= vhex; v--) {
-                                    if (*v < 0xF) {
-                                        (*v)++;
+
+                            if (overflow) {
+                                for (v = v0 + precis - 1; v >= v0; v--) {
+                                    (*v)++;
+                                    overflow = *v > 0xF;
+                                    (*v) &= 0xF;
+                                    if (!overflow) {
                                         break;
                                     }
-                                    *v = 0;
-                                    if (v == vhex) {
-                                        /* If the carry goes all the way to
-                                         * the front, we need to output
-                                         * a single '1'. This goes against
-                                         * the "xdigit and then radix"
-                                         * but since this is "cannot happen"
-                                         * category, that is probably good. */
-                                        *p++ = xdig[1];
-                                    }
+                                }
+                                if (v == v0 - 1 && overflow) {
+                                    /* If the overflow goes all the
+                                     * way to the front, we need to
+                                     * insert 0x1 in front, and adjust
+                                     * the exponent. */
+                                    Move(v0, v0 + 1, vn, char);
+                                    *v0 = 0x1;
+                                    exponent += 4;
                                 }
                             }
+
                             /* The new effective "last non zero". */
-                            vlnz = vhex + precis;
+                            vlnz = v0 + precis;
                         }
                         else {
-                            zerotail = precis - (vlnz - vhex);
+                            zerotail =
+                              subnormal ? precis - vn + 1 :
+                              precis - (vlnz - vhex);
                         }
                     }
 
-                    v = vhex;
+                    v = v0;
                     *p++ = xdig[*v++];
 
                     /* If there are non-zero xdigits, the radix
@@ -12574,12 +12667,18 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
                         memset(PL_efloatbuf + elen, ' ', width - elen);
                     }
                     else if (fill == '0') {
-                        /* Insert the zeros between the "0x" and
-                         * the digits, otherwise we end up with
-                         * "0000xHHH..." */
+                        /* Insert the zeros after the "0x" and the
+                         * the potential sign, but before the digits,
+                         * otherwise we end up with "0000xH.HHH...",
+                         * when we want "0x000H.HHH..."  */
                         STRLEN nzero = width - elen;
                         char* zerox = PL_efloatbuf + 2;
-                        Move(zerox, zerox + nzero,  elen - 2, char);
+                        STRLEN nmove = elen - 2;
+                        if (negative || plus) {
+                            zerox++;
+                            nmove--;
+                        }
+                        Move(zerox, zerox + nzero, nmove, char);
                         memset(zerox, fill, nzero);
                     }
                     else {
Index: gnu/usr.bin/perl/toke.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/toke.c,v
retrieving revision 1.21
diff -u -p -r1.21 toke.c
--- gnu/usr.bin/perl/toke.c	5 Feb 2017 00:31:54 -0000	1.21
+++ gnu/usr.bin/perl/toke.c	14 Sep 2017 02:21:44 -0000
@@ -244,7 +244,7 @@ static const char* const lex_state_names
 	if (have_x) PL_expect = x; \
 	PL_bufptr = s; \
 	PL_last_uni = PL_oldbufptr; \
-	PL_last_lop_op = f; \
+	PL_last_lop_op = (f) < 0 ? -(f) : (f); \
 	if (*s == '(') \
 	    return REPORT( (int)FUNC1 ); \
 	s = skipspace(s); \
@@ -725,7 +725,8 @@ Perl_lex_start(pTHX_ SV *line, PerlIO *r
 	parser->linestr = flags & LEX_START_COPIED
 			    ? SvREFCNT_inc_simple_NN(line)
 			    : newSVpvn_flags(s, len, SvUTF8(line));
-	sv_catpvn(parser->linestr, "\n;", rsfp ? 1 : 2);
+	if (!rsfp)
+	    sv_catpvs(parser->linestr, "\n;");
     } else {
 	parser->linestr = newSVpvn("\n;", rsfp ? 1 : 2);
     }
@@ -1938,7 +1939,6 @@ static int
 S_postderef(pTHX_ int const funny, char const next)
 {
     assert(funny == DOLSHARP || strchr("$@%&*", funny));
-    assert(strchr("*[{", next));
     if (next == '*') {
 	PL_expect = XOPERATOR;
 	if (PL_lex_state == LEX_INTERPNORMAL && !PL_lex_brackets) {
@@ -3539,7 +3539,7 @@ S_scan_const(pTHX_ char *start)
 			}
 
                         /* Add the (Unicode) code point to the output. */
-			if (OFFUNI_IS_INVARIANT(uv)) {
+			if (! has_utf8 || OFFUNI_IS_INVARIANT(uv)) {
 			    *d++ = (char) LATIN1_TO_NATIVE(uv);
 			}
 			else {
@@ -4107,8 +4107,11 @@ S_intuit_method(pTHX_ char *start, SV *i
 	    tmpbuf[len] = '\0';
 	    goto bare_package;
 	}
-	indirgv = gv_fetchpvn_flags(tmpbuf, len, ( UTF ? SVf_UTF8 : 0 ), SVt_PVCV);
-	if (indirgv && GvCVu(indirgv))
+	indirgv = gv_fetchpvn_flags(tmpbuf, len,
+				    GV_NOADD_NOINIT|( UTF ? SVf_UTF8 : 0 ),
+				    SVt_PVCV);
+	if (indirgv && SvTYPE(indirgv) != SVt_NULL
+	 && (!isGV(indirgv) || GvCVu(indirgv)))
 	    return 0;
 	/* filehandle or package name makes it a method */
 	if (!cv || GvIO(indirgv) || gv_stashpvn(tmpbuf, len, UTF ? SVf_UTF8 : 0)) {
@@ -9021,6 +9024,8 @@ S_scan_ident(pTHX_ char *s, char *dest, 
     else if (ck_uni && bracket == -1)
 	check_uni();
     if (bracket != -1) {
+        bool skip;
+        char *s2;
         /* If we were processing {...} notation then...  */
 	if (isIDFIRST_lazy_if(d,is_utf8)) {
             /* if it starts as a valid identifier, assume that it is one.
@@ -9069,13 +9074,19 @@ S_scan_ident(pTHX_ char *s, char *dest, 
 
         if ( !tmp_copline )
             tmp_copline = CopLINE(PL_curcop);
-        if (s < PL_bufend && isSPACE(*s)) {
-            s = skipspace(s);
-        }
+        if ((skip = s < PL_bufend && isSPACE(*s)))
+            /* Avoid incrementing line numbers or resetting PL_linestart,
+               in case we have to back up.  */
+            s2 = skipspace_flags(s, LEX_NO_INCLINE);
+        else
+            s2 = s;
 	    
         /* Expect to find a closing } after consuming any trailing whitespace.
          */
-	if (*s == '}') {
+        if (*s2 == '}') {
+            /* Now increment line numbers if applicable.  */
+            if (skip)
+                s = skipspace(s);
 	    s++;
 	    if (PL_lex_state == LEX_INTERPNORMAL && !PL_lex_brackets) {
 		PL_lex_state = LEX_INTERPEND;
@@ -10617,6 +10628,14 @@ Perl_scan_num(pTHX_ const char *start, Y
 #ifdef NV_MIN_EXP
                                 if (negexp
                                     && -hexfp_exp < NV_MIN_EXP - 1) {
+                                    /* NOTE: this means that the exponent
+                                     * underflow warning happens for
+                                     * the IEEE 754 subnormals (denormals),
+                                     * because DBL_MIN_EXP etc are the lowest
+                                     * possible binary (or, rather, DBL_RADIX-base)
+                                     * exponent for normals, not subnormals.
+                                     *
+                                     * This may or may not be a good thing. */
                                     Perl_ck_warner(aTHX_ packWARN(WARN_OVERFLOW),
                                                    "Hexadecimal float: exponent underflow");
                                     break;
@@ -10638,7 +10657,7 @@ Perl_scan_num(pTHX_ const char *start, Y
 #ifdef HEXFP_UQUAD
                         hexfp_exp -= hexfp_frac_bits;
 #endif
-                        hexfp_mult = pow(2.0, hexfp_exp);
+                        hexfp_mult = Perl_pow(2.0, hexfp_exp);
                         hexfp = TRUE;
                         goto decimal;
                     }
Index: gnu/usr.bin/perl/utf8.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/utf8.h,v
retrieving revision 1.2
diff -u -p -r1.2 utf8.h
--- gnu/usr.bin/perl/utf8.h	5 Feb 2017 00:31:54 -0000	1.2
+++ gnu/usr.bin/perl/utf8.h	14 Sep 2017 02:21:44 -0000
@@ -156,8 +156,8 @@ END_EXTERN_C
  * rarely do we need to distinguish them.  The term "NATIVE_UTF8" applies to
  * whichever one is applicable on the current platform */
 #ifdef PERL_SMALL_MACRO_BUFFER
-#define NATIVE_UTF8_TO_I8(ch) (ch)
-#define I8_TO_NATIVE_UTF8(ch) (ch)
+#define NATIVE_UTF8_TO_I8(ch) ((U8) (ch))
+#define I8_TO_NATIVE_UTF8(ch) ((U8) (ch))
 #else
 #define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
 #define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
Index: gnu/usr.bin/perl/util.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/util.c,v
retrieving revision 1.28
diff -u -p -r1.28 util.c
--- gnu/usr.bin/perl/util.c	14 Aug 2017 13:49:43 -0000	1.28
+++ gnu/usr.bin/perl/util.c	14 Sep 2017 02:21:44 -0000
@@ -5323,7 +5323,8 @@ Perl_my_vsnprintf(char *buffer, const Si
     PERL_UNUSED_ARG(buffer);
     PERL_UNUSED_ARG(len);
     PERL_UNUSED_ARG(format);
-    PERL_UNUSED_ARG(ap);
+    /* the cast is to avoid gcc -Wsizeof-array-argument complaining */
+    PERL_UNUSED_ARG((void*)ap);
     Perl_croak_nocontext("panic: my_vsnprintf not available with quadmath");
     return 0;
 #else
Index: gnu/usr.bin/perl/warnings.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/warnings.h,v
retrieving revision 1.2
diff -u -p -r1.2 warnings.h
--- gnu/usr.bin/perl/warnings.h	5 Feb 2017 00:31:54 -0000	1.2
+++ gnu/usr.bin/perl/warnings.h	14 Sep 2017 02:21:44 -0000
@@ -115,8 +115,10 @@
 #define WARN_ALLstring			 "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
 #define WARN_NONEstring			 "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 
-#define isLEXWARN_on 	cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off	cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+	cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+	cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE	(PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)+1))
Index: gnu/usr.bin/perl/Cross/config.sh-arm-linux
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Cross/config.sh-arm-linux,v
retrieving revision 1.7
diff -u -p -r1.7 config.sh-arm-linux
--- gnu/usr.bin/perl/Cross/config.sh-arm-linux	14 Aug 2017 13:48:45 -0000	1.7
+++ gnu/usr.bin/perl/Cross/config.sh-arm-linux	14 Sep 2017 02:21:44 -0000
@@ -36,8 +36,8 @@ api_subversion='0'
 api_version='24'
 api_versionstring='5.24.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.24.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.24.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.24.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.24.3/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -56,7 +56,7 @@ castflags='0'
 cat='cat'
 cc='cc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.3/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -808,7 +808,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.24.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.24.3/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -816,13 +816,13 @@ installman1dir='./install_me_here/usr/sh
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.24.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.24.3'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.3'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -956,8 +956,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.24.2'
-privlibexp='/usr/lib/perl5/5.24.2'
+privlib='/usr/lib/perl5/5.24.3'
+privlibexp='/usr/lib/perl5/5.24.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -1022,17 +1022,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.24.2'
+sitelib='/usr/lib/perl5/site_perl/5.24.3'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.24.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.24.3'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -1071,7 +1071,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1163,8 +1163,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1178,7 +1178,7 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=24
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770,v
retrieving revision 1.4
diff -u -p -r1.4 config.sh-arm-linux-n770
--- gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770	14 Sep 2017 02:21:44 -0000
@@ -36,8 +36,8 @@ api_subversion='0'
 api_version='24'
 api_versionstring='5.24.0'
 ar='ar'
-archlib='/usr/lib/perl5/5.24.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.24.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.24.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.24.3/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -55,7 +55,7 @@ castflags='0'
 cat='cat'
 cc='arm-none-linux-gnueabi-gcc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.3/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -699,7 +699,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.24.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.24.3/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -707,13 +707,13 @@ installman1dir='./install_me_here/usr/sh
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.24.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.24.3'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.3'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -841,8 +841,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.24.2'
-privlibexp='/usr/lib/perl5/5.24.2'
+privlib='/usr/lib/perl5/5.24.3'
+privlibexp='/usr/lib/perl5/5.24.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -903,17 +903,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.24.2'
+sitelib='/usr/lib/perl5/site_perl/5.24.3'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.24.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.24.3'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -950,7 +950,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1050,7 +1050,7 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=24
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/NetWare/Makefile
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/NetWare/Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile
--- gnu/usr.bin/perl/NetWare/Makefile	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/NetWare/Makefile	14 Sep 2017 02:21:44 -0000
@@ -86,7 +86,7 @@ NLM_VERSION    = 3,20,0
 
 
 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC     = "Perl 5.24.2 for NetWare"
+MODULE_DESC     = "Perl 5.24.3 for NetWare"
 CCTYPE          = CodeWarrior
 C_COMPILER		= mwccnlm -c
 CPP_COMPILER	= mwccnlm
@@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-INST_VER	= \5.24.2
+INST_VER	= \5.24.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
Index: gnu/usr.bin/perl/NetWare/config_H.wc
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/NetWare/config_H.wc,v
retrieving revision 1.4
diff -u -p -r1.4 config_H.wc
--- gnu/usr.bin/perl/NetWare/config_H.wc	14 Aug 2017 13:48:45 -0000	1.4
+++ gnu/usr.bin/perl/NetWare/config_H.wc	14 Sep 2017 02:21:44 -0000
@@ -1042,7 +1042,7 @@
  *	This symbol contains the ~name expanded version of ARCHLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "c:\\perl\\5.24.2\\lib\\NetWare-x86-multi-thread"		/**/
+#define ARCHLIB "c:\\perl\\5.24.3\\lib\\NetWare-x86-multi-thread"		/**/
 /*#define ARCHLIB_EXP ""	/**/
 
 /* ARCHNAME:
@@ -1073,8 +1073,8 @@
  *	This symbol is the filename expanded version of the BIN symbol, for
  *	programs that do not want to deal with that at run-time.
  */
-#define BIN "c:\\perl\\5.24.2\\bin\\NetWare-x86-multi-thread"	/**/
-#define BIN_EXP "c:\\perl\\5.24.2\\bin\\NetWare-x86-multi-thread"	/**/
+#define BIN "c:\\perl\\5.24.3\\bin\\NetWare-x86-multi-thread"	/**/
+#define BIN_EXP "c:\\perl\\5.24.3\\bin\\NetWare-x86-multi-thread"	/**/
 
 /* BYTEORDER:
  *	This symbol holds the hexadecimal constant defined in byteorder,
@@ -3047,7 +3047,7 @@
  *	This symbol contains the ~name expanded version of SITEARCH, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "c:\\perl\\site\\5.24.2\\lib\\NetWare-x86-multi-thread"		/**/
+#define SITEARCH "c:\\perl\\site\\5.24.3\\lib\\NetWare-x86-multi-thread"		/**/
 /*#define SITEARCH_EXP ""	/**/
 
 /* SITELIB:
@@ -3070,7 +3070,7 @@
  *	removed.  The elements in inc_version_list (inc_version_list.U) can
  *	be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "c:\\perl\\site\\5.24.2\\lib"		/**/
+#define SITELIB "c:\\perl\\site\\5.24.3\\lib"		/**/
 /*#define SITELIB_EXP ""	/**/
 #define SITELIB_STEM ""		/**/
 
Index: gnu/usr.bin/perl/Porting/Maintainers.pl
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/Maintainers.pl,v
retrieving revision 1.13
diff -u -p -r1.13 Maintainers.pl
--- gnu/usr.bin/perl/Porting/Maintainers.pl	14 Aug 2017 13:49:43 -0000	1.13
+++ gnu/usr.bin/perl/Porting/Maintainers.pl	14 Sep 2017 02:21:45 -0000
@@ -1374,7 +1374,7 @@ use File::Glob qw(:case);
     },
 
     'Time::HiRes' => {
-        'DISTRIBUTION' => 'RJBS/Time-HiRes-1.9728.tar.gz',
+        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9741.tar.gz',
         'FILES'        => q[dist/Time-HiRes],
     },
 
Index: gnu/usr.bin/perl/Porting/cmpVERSION.pl
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/cmpVERSION.pl,v
retrieving revision 1.3
diff -u -p -r1.3 cmpVERSION.pl
--- gnu/usr.bin/perl/Porting/cmpVERSION.pl	5 Feb 2017 00:31:54 -0000	1.3
+++ gnu/usr.bin/perl/Porting/cmpVERSION.pl	14 Sep 2017 02:21:45 -0000
@@ -81,6 +81,7 @@ if ($exclude_upstream) {
 # usually because they pull in their version from some other file.
 my %skip;
 @skip{
+    'cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test module
     'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test module
     'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm',  # just a test module
     'cpan/Math-BigInt/t/Math/BigFloat/Subclass.pm', # just a test module
Index: gnu/usr.bin/perl/Porting/config.sh
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/config.sh,v
retrieving revision 1.7
diff -u -p -r1.7 config.sh
--- gnu/usr.bin/perl/Porting/config.sh	14 Aug 2017 13:48:45 -0000	1.7
+++ gnu/usr.bin/perl/Porting/config.sh	14 Sep 2017 02:21:45 -0000
@@ -43,8 +43,8 @@ api_subversion='0'
 api_version='24'
 api_versionstring='5.24.0'
 ar='ar'
-archlib='/tmp/mblead/lib/perl5/5.24.2/darwin-2level'
-archlibexp='/tmp/mblead/lib/perl5/5.24.2/darwin-2level'
+archlib='/tmp/mblead/lib/perl5/5.24.3/darwin-2level'
+archlibexp='/tmp/mblead/lib/perl5/5.24.3/darwin-2level'
 archname64=''
 archname='darwin-2level'
 archobjs=''
@@ -829,7 +829,7 @@ incpath=''
 incpth='/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include'
 inews=''
 initialinstalllocation='/tmp/mblead/bin'
-installarchlib='/tmp/mblead/lib/perl5/5.24.2/darwin-2level'
+installarchlib='/tmp/mblead/lib/perl5/5.24.3/darwin-2level'
 installbin='/tmp/mblead/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -837,13 +837,13 @@ installman1dir='/tmp/mblead/man/man1'
 installman3dir='/tmp/mblead/man/man3'
 installprefix='/tmp/mblead'
 installprefixexp='/tmp/mblead'
-installprivlib='/tmp/mblead/lib/perl5/5.24.2'
+installprivlib='/tmp/mblead/lib/perl5/5.24.3'
 installscript='/tmp/mblead/bin'
-installsitearch='/tmp/mblead/lib/perl5/site_perl/5.24.2/darwin-2level'
+installsitearch='/tmp/mblead/lib/perl5/site_perl/5.24.3/darwin-2level'
 installsitebin='/tmp/mblead/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='/tmp/mblead/lib/perl5/site_perl/5.24.2'
+installsitelib='/tmp/mblead/lib/perl5/site_perl/5.24.3'
 installsiteman1dir='/tmp/mblead/man/man1'
 installsiteman3dir='/tmp/mblead/man/man3'
 installsitescript='/tmp/mblead/bin'
@@ -968,7 +968,7 @@ perl_patchlevel=''
 perl_static_inline='static __inline__'
 perladmin='aaron@daybreak.nonet'
 perllibs='-lpthread -ldl -lm -lutil -lc'
-perlpath='/tmp/mblead/bin/perl5.24.2'
+perlpath='/tmp/mblead/bin/perl5.24.3'
 pg='pg'
 phostname='hostname'
 pidtype='pid_t'
@@ -977,8 +977,8 @@ pmake=''
 pr=''
 prefix='/tmp/mblead'
 prefixexp='/tmp/mblead'
-privlib='/tmp/mblead/lib/perl5/5.24.2'
-privlibexp='/tmp/mblead/lib/perl5/5.24.2'
+privlib='/tmp/mblead/lib/perl5/5.24.3'
+privlibexp='/tmp/mblead/lib/perl5/5.24.3'
 procselfexe=''
 prototype='define'
 ptrsize='8'
@@ -1044,17 +1044,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 6, 0'
 sig_size='33'
 signal_t='void'
-sitearch='/tmp/mblead/lib/perl5/site_perl/5.24.2/darwin-2level'
-sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.24.2/darwin-2level'
+sitearch='/tmp/mblead/lib/perl5/site_perl/5.24.3/darwin-2level'
+sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.24.3/darwin-2level'
 sitebin='/tmp/mblead/bin'
 sitebinexp='/tmp/mblead/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/tmp/mblead/lib/perl5/site_perl/5.24.2'
+sitelib='/tmp/mblead/lib/perl5/site_perl/5.24.3'
 sitelib_stem='/tmp/mblead/lib/perl5/site_perl'
-sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.24.2'
+sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.24.3'
 siteman1dir='/tmp/mblead/man/man1'
 siteman1direxp='/tmp/mblead/man/man1'
 siteman3dir='/tmp/mblead/man/man3'
@@ -1080,7 +1080,7 @@ src='.'
 ssizetype='ssize_t'
 st_ino_sign='1'
 st_ino_size='8'
-startperl='#!/tmp/mblead/bin/perl5.24.2'
+startperl='#!/tmp/mblead/bin/perl5.24.3'
 startsh='#!/bin/sh'
 static_ext=' '
 stdchar='char'
@@ -1093,7 +1093,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 sysroot=''
 tail=''
@@ -1192,8 +1192,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
 versiononly='define'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1203,7 +1203,7 @@ zcat=''
 zip='zip'
 PERL_REVISION=5
 PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=24
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/Porting/config_H
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/config_H,v
retrieving revision 1.19
diff -u -p -r1.19 config_H
--- gnu/usr.bin/perl/Porting/config_H	14 Aug 2017 13:48:45 -0000	1.19
+++ gnu/usr.bin/perl/Porting/config_H	14 Sep 2017 02:21:45 -0000
@@ -960,8 +960,8 @@
  *	This symbol contains the ~name expanded version of ARCHLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "/pro/lib/perl5/5.24.2/i686-linux-64int-ld"		/**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.24.2/i686-linux-64int-ld"		/**/
+#define ARCHLIB "/pro/lib/perl5/5.24.3/i686-linux-64int-ld"		/**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.24.3/i686-linux-64int-ld"		/**/
 
 /* ARCHNAME:
  *	This symbol holds a string representing the architecture name.
@@ -2068,8 +2068,8 @@
  *	This symbol contains the ~name expanded version of PRIVLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/pro/lib/perl5/5.24.2"		/**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.24.2"		/**/
+#define PRIVLIB "/pro/lib/perl5/5.24.3"		/**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.24.3"		/**/
 
 /* PTRSIZE:
  *	This symbol contains the size of a pointer, so that the C preprocessor
@@ -2119,8 +2119,8 @@
  *	This symbol contains the ~name expanded version of SITEARCH, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "/pro/lib/perl5/site_perl/5.24.2/i686-linux-64int-ld"		/**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.24.2/i686-linux-64int-ld"		/**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.24.3/i686-linux-64int-ld"		/**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.24.3/i686-linux-64int-ld"		/**/
 
 /* SITELIB:
  *	This symbol contains the name of the private library for this package.
@@ -2142,8 +2142,8 @@
  *	removed.  The elements in inc_version_list (inc_version_list.U) can
  *	be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/pro/lib/perl5/site_perl/5.24.2"		/**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.24.2"		/**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.24.3"		/**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.24.3"		/**/
 #define SITELIB_STEM "/pro/lib/perl5/site_perl"		/**/
 
 /* SSize_t:
@@ -4282,7 +4282,7 @@
  *	script to make sure (one hopes) that it runs with perl and not
  *	some shell.
  */
-#define STARTPERL "#!/pro/bin/perl5.24.2"		/**/
+#define STARTPERL "#!/pro/bin/perl5.24.3"		/**/
 
 /* HAS_STDIO_STREAM_ARRAY:
  *	This symbol, if defined, tells that there is an array
Index: gnu/usr.bin/perl/Porting/epigraphs.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/epigraphs.pod,v
retrieving revision 1.4
diff -u -p -r1.4 epigraphs.pod
--- gnu/usr.bin/perl/Porting/epigraphs.pod	14 Aug 2017 13:48:46 -0000	1.4
+++ gnu/usr.bin/perl/Porting/epigraphs.pod	14 Sep 2017 02:21:45 -0000
@@ -17,6 +17,60 @@ Consult your favorite dictionary for det
 
 =head1 EPIGRAPHS
 
+=head2 v5.27.3 - Rodgers and Hammerstein, "You'll Never Walk Alone"
+
+L<Announced on 2017-07-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2017/08/msg245988.html>
+
+  When you walk through a storm
+  Hold your head up high
+  And don't be afraid of the dark
+
+  At the end of a storm
+  There's a golden sky
+  And the sweet silver song of a lark
+
+  Walk on through the wind
+  Walk on through the rain
+  Though your dreams be tossed and blown
+
+  Walk on, walk on
+  With hope in your heart
+  And you'll never walk alone
+
+  You'll never walk alone
+
+  Walk on, walk on
+  With hope in your heart
+  And you'll never walk alone
+
+  You'll never walk alone
+
+=head2 v5.27.2 - Lev Grossman, Codex
+
+L<Announced on 2017-07-20 by Aaron Crane|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245585.html>
+
+  He went back for another stack of books: a three-volume English legal
+  treatise; a travel guide to Tuscany from the '20s crammed with faded
+  Italian wildflowers that fluttered out from between the pages like
+  moths; a French edition of Turgeniev so decayed that it came apart in
+  his hands; a register of London society from 1863. In a way it was
+  idiotic. He was treating these books like they were holy relics. It
+  wasn't like he would ever actually read them. But there was something
+  magnetic about them, something that compelled respect, even the silly
+  ones, like the Enlightenment treatise about how lightning was caused
+  by bees. They were information, data, but not in the form he was used
+  to dealing with it. They were non-digital, nonelectrical chunks of
+  memory, not stamped out of silicon but laboriously crafted out of wood
+  pulp and ink, leather and glue. Somebody had cared enough to write
+  these things; somebody else had cared enough to buy them, possibly
+  even read them, at the very least keep them safe for 150 years,
+  sometimes longer, when they could have vanished at the touch of a
+  spark. That made them worth something, didn't it, just by itself?
+  Though most of them would have bored him rigid the second he cracked
+  them open, which there wasn't much chance of. Maybe that was what he
+  found so appealing: the sight of so many books that he'd never have to
+  read, so much work he'd never have to do.
+
 =head2 v5.27.1 - Rona Munro, Doctor Who: Survival
 
 L<Announced on 2017-06-20 by Eric Herman|http://www.nntp.perl.org/group/perl.perl5.porters/2017/06/msg245055.html>
@@ -289,6 +343,30 @@ L<Announced on 2016-05-09 by Ricardo Sig
   To find that the utmost reward
     Of daring should be still to dare.
 
+=head2 v5.24.2 - Roald Dahl, "The Three Little Pigs"
+
+L<Announced on 2017-07-15 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245527.html>
+
+  A short while later, through the wood,
+  Came striding brave Miss Riding Hood.
+  The Wolf stood there, his eyes ablaze
+  And yellowish, like mayonnaise.
+  His teeth were sharp, his gums were raw,
+  And spit was dripping from his jaw.
+  Once more the maiden's eyelid flickers.
+  She draws the pistol from her knickers.
+  Once more, she hits the vital spot,
+  And kills him with a single shot.
+  Pig, peeping through the window, stood
+  And yelled, 'Well done, Miss Riding Hood!'
+
+  Ah, Piglet, you must never trust
+  Young ladies from the upper crust.
+  For now, Miss Riding Hood, one notes,
+  Not only has two wolfskin coats,
+  But when she goes from place to place,
+  She has a PIGSKIN TRAVELLING CASE.
+
 =head2 v5.24.2-RC1 - Roald Dahl, "The Three Little Pigs"
 
 L<Announced on 2017-07-01 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245292.html>
@@ -832,6 +910,28 @@ L<Announced on 2015-06-20 by Ricardo Sig
   To be just like them
   They sing while you slave and I just get bored
   I ain't gonna work on Maggie's farm no more
+
+=head2 v5.22.4 - Roald Dahl, "Little Red Riding Hood and the Wolf"
+
+L<Announced on 2017-07-15 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245526.html>
+
+  Then Little Red Riding Hood said, 'But Grandma,
+  what a lovely great big furry coat you have on.'
+  'That's wrong!' cried Wolf. 'Have you forgot
+  'To tell me what BIG TEETH I've got?
+  'Ah well, no matter what you say,
+  'I'm going to eat you anyway.'
+  The small girl smiles. One eyelid flickers.
+  She whips a pistol from her knickers.
+  She aims it at the creature's head
+  And bang bang bang, she shoots him dead.
+
+  A few weeks later, in the wood,
+  I came across Miss Riding Hood.
+  But what a change! No cloak of red,
+  No silly hood upon her head.
+  She said, 'Hello, and do please note
+  'My lovely furry WOLFSKIN COAT.'
 
 =head2 v5.22.4-RC1 - Roald Dahl, "Little Red Riding Hood and the Wolf"
 
Index: gnu/usr.bin/perl/Porting/perldelta_template.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/perldelta_template.pod,v
retrieving revision 1.4
diff -u -p -r1.4 perldelta_template.pod
--- gnu/usr.bin/perl/Porting/perldelta_template.pod	14 Aug 2017 13:48:46 -0000	1.4
+++ gnu/usr.bin/perl/Porting/perldelta_template.pod	14 Sep 2017 02:21:45 -0000
@@ -378,7 +378,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.24.2..HEAD
+  perl Porting/acknowledgements.pl v5.24.3..HEAD
 
 =head1 Reporting Bugs
 
Index: gnu/usr.bin/perl/Porting/todo.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/Porting/todo.pod,v
retrieving revision 1.4
diff -u -p -r1.4 todo.pod
--- gnu/usr.bin/perl/Porting/todo.pod	14 Aug 2017 13:48:46 -0000	1.4
+++ gnu/usr.bin/perl/Porting/todo.pod	14 Sep 2017 02:21:45 -0000
@@ -467,7 +467,7 @@ Natively 64-bit systems need neither -Du
 On these systems, it might be the default compilation mode, and there
 is currently no guarantee that passing no use64bitall option to the
 Configure process will build a 32bit perl. Implementing -Duse32bit*
-options would be nice for perl 5.24.2.
+options would be nice for perl 5.24.3.
 
 =head2 Profile Perl - am I hot or not?
 
@@ -1170,7 +1170,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lis
 =head1 Big projects
 
 Tasks that will get your name mentioned in the description of the "Highlights
-of 5.24.2"
+of 5.24.3"
 
 =head2 make ithreads more robust
 
Index: gnu/usr.bin/perl/dist/Module-CoreList/Changes
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/Changes,v
retrieving revision 1.4
diff -u -p -r1.4 Changes
--- gnu/usr.bin/perl/dist/Module-CoreList/Changes	14 Aug 2017 13:48:47 -0000	1.4
+++ gnu/usr.bin/perl/dist/Module-CoreList/Changes	14 Sep 2017 02:22:21 -0000
@@ -1,5 +1,17 @@
+5.20170922_24
+  - Updated for v5.24.3
+
+5.20170821
+  - Updated for v5.27.3
+
+5.20170720
+  - Updated for v5.27.2
+
 5.20170715_24
   - Updated for v5.24.2
+
+5.20170715_22
+  - Updated for v5.22.4
 
 5.20170621
   - Updated for v5.27.1
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm,v
retrieving revision 1.6
diff -u -p -r1.6 CoreList.pm
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm	14 Aug 2017 13:48:47 -0000	1.6
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm	14 Sep 2017 02:22:22 -0000
@@ -4,7 +4,7 @@ use vars qw/$VERSION %released %version 
 	    %bug_tracker %deprecated %delta/;
 use Module::CoreList::TieHashDelta;
 use version;
-$VERSION = '5.20170715_24';
+$VERSION = '5.20170922_24';
 
 sub _released_order {   # Sort helper, to make '?' sort after everything else
     (substr($released{$a}, 0, 1) eq "?")
@@ -311,7 +311,11 @@ sub changes_between {
     5.026000 => '2017-05-30',
     5.027000 => '2017-05-31',
     5.027001 => '2017-06-20',
+    5.022004 => '2017-07-15',
     5.024002 => '2017-07-15',
+    5.027002 => '2017-07-20',
+    5.027003 => '2017-08-21',
+    5.024003 => '????-??-??',
   );
 
 for my $version ( sort { $a <=> $b } keys %released ) {
@@ -14263,6 +14267,19 @@ for my $version ( sort { $a <=> $b } key
         removed => {
         }
     },
+    5.022004 => {
+        delta_from => 5.022003,
+        changed => {
+            'B::Op_private'         => '5.022004',
+            'Config'                => '5.022004',
+            'Module::CoreList'      => '5.20170715_22',
+            'Module::CoreList::TieHashDelta'=> '5.20170715_22',
+            'Module::CoreList::Utils'=> '5.20170715_22',
+            'base'                  => '2.22_01',
+        },
+        removed => {
+        }
+    },
     5.024002 => {
         delta_from => 5.024001,
         changed => {
@@ -14276,6 +14293,128 @@ for my $version ( sort { $a <=> $b } key
         removed => {
         }
     },
+    5.027002 => {
+        delta_from => 5.027001,
+        changed => {
+            'B::Op_private'         => '5.027002',
+            'Carp'                  => '1.43',
+            'Carp::Heavy'           => '1.43',
+            'Config'                => '5.027002',
+            'Cwd'                   => '3.68',
+            'Encode'                => '2.92',
+            'Encode::Alias'         => '2.23',
+            'Encode::CN::HZ'        => '2.09',
+            'Encode::Encoding'      => '2.08',
+            'Encode::GSM0338'       => '2.07',
+            'Encode::Guess'         => '2.07',
+            'Encode::JP::JIS7'      => '2.07',
+            'Encode::KR::2022_KR'   => '2.04',
+            'Encode::MIME::Header'  => '2.27',
+            'Encode::MIME::Header::ISO_2022_JP'=> '1.09',
+            'Encode::Unicode'       => '2.16',
+            'Encode::Unicode::UTF7' => '2.10',
+            'ExtUtils::CBuilder'    => '0.280228',
+            'ExtUtils::CBuilder::Base'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::Unix'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::VMS'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::Windows'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::aix'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::android'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::cygwin'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::darwin'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280228',
+            'ExtUtils::CBuilder::Platform::os2'=> '0.280228',
+            'File::Glob'            => '1.29',
+            'File::Spec'            => '3.68',
+            'File::Spec::AmigaOS'   => '3.68',
+            'File::Spec::Cygwin'    => '3.68',
+            'File::Spec::Epoc'      => '3.68',
+            'File::Spec::Functions' => '3.68',
+            'File::Spec::Mac'       => '3.68',
+            'File::Spec::OS2'       => '3.68',
+            'File::Spec::Unix'      => '3.68',
+            'File::Spec::VMS'       => '3.68',
+            'File::Spec::Win32'     => '3.68',
+            'List::Util'            => '1.48',
+            'List::Util::XS'        => '1.48',
+            'Math::BigRat'          => '0.2613',
+            'Module::CoreList'      => '5.20170720',
+            'Module::CoreList::TieHashDelta'=> '5.20170720',
+            'Module::CoreList::Utils'=> '5.20170720',
+            'Opcode'                => '1.40',
+            'POSIX'                 => '1.77',
+            'PerlIO::scalar'        => '0.29',
+            'Scalar::Util'          => '1.48',
+            'Sub::Util'             => '1.48',
+            'Time::HiRes'           => '1.9743',
+            'Time::Piece'           => '1.3201',
+            'Time::Seconds'         => '1.3201',
+            'Unicode'               => '10.0.0',
+            'XS::APItest'           => '0.90',
+            'arybase'               => '0.13',
+            'encoding'              => '2.20',
+            'feature'               => '1.49',
+            're'                    => '0.35',
+        },
+        removed => {
+        }
+    },
+    5.027003 => {
+        delta_from => 5.027002,
+        changed => {
+            'B'                     => '1.69',
+            'B::Concise'            => '1.001',
+            'B::Debug'              => '1.25',
+            'B::Deparse'            => '1.42',
+            'B::Op_private'         => '5.027003',
+            'Config'                => '5.027003',
+            'Data::Dumper'          => '2.167_02',
+            'Devel::Peek'           => '1.27',
+            'ExtUtils::Constant'    => '0.24',
+            'ExtUtils::Constant::Base'=> '0.06',
+            'ExtUtils::Constant::ProxySubs'=> '0.09',
+            'ExtUtils::Constant::Utils'=> '0.04',
+            'ExtUtils::ParseXS'     => '3.35',
+            'ExtUtils::ParseXS::Constants'=> '3.35',
+            'ExtUtils::ParseXS::CountLines'=> '3.35',
+            'ExtUtils::ParseXS::Eval'=> '3.35',
+            'ExtUtils::ParseXS::Utilities'=> '3.35',
+            'ExtUtils::Typemaps'    => '3.35',
+            'ExtUtils::Typemaps::Cmd'=> '3.35',
+            'ExtUtils::Typemaps::InputMap'=> '3.35',
+            'ExtUtils::Typemaps::OutputMap'=> '3.35',
+            'ExtUtils::Typemaps::Type'=> '3.35',
+            'Filter::Simple'        => '0.94',
+            'Module::CoreList'      => '5.20170821',
+            'Module::CoreList::TieHashDelta'=> '5.20170821',
+            'Module::CoreList::Utils'=> '5.20170821',
+            'SelfLoader'            => '1.24',
+            'Storable'              => '2.64',
+            'XS::APItest'           => '0.91',
+            'base'                  => '2.26',
+            'threads'               => '2.17',
+            'utf8'                  => '1.20',
+        },
+        removed => {
+        }
+    },
+    5.024003 => {
+        delta_from => 5.024002,
+        changed => {
+            'B::Op_private'         => '5.024003',
+            'Config'                => '5.024003',
+            'Module::CoreList'      => '5.20170922_24',
+            'Module::CoreList::TieHashDelta'=> '5.20170922_24',
+            'Module::CoreList::Utils'=> '5.20170922_24',
+            'POSIX'                 => '1.65_01',
+            'Time::HiRes'           => '1.9741',
+        },
+        removed => {
+        }
+    },
 );
 
 sub is_core
@@ -15055,8 +15194,37 @@ for my $version (sort { $a <=> $b } keys
         removed => {
         }
     },
+    5.022004 => {
+        delta_from => 5.022003,
+        changed => {
+        },
+        removed => {
+        }
+    },
     5.024002 => {
         delta_from => 5.024001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.027002 => {
+        delta_from => 5.027001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.027003 => {
+        delta_from => 5.027002,
+        changed => {
+            'B::Debug'              => '1',
+        },
+        removed => {
+        }
+    },
+    5.024003 => {
+        delta_from => 5.024002,
         changed => {
         },
         removed => {
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm,v
retrieving revision 1.5
diff -u -p -r1.5 TieHashDelta.pm
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm	14 Aug 2017 13:48:47 -0000	1.5
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm	14 Sep 2017 02:22:22 -0000
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '5.20170715_24';
+$VERSION = '5.20170922_24';
 
 sub TIEHASH {
     my ($class, $changed, $removed, $parent) = @_;
Index: gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm,v
retrieving revision 1.5
diff -u -p -r1.5 Utils.pm
--- gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm	14 Aug 2017 13:48:47 -0000	1.5
+++ gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm	14 Sep 2017 02:22:23 -0000
@@ -6,7 +6,7 @@ use vars qw[$VERSION %utilities];
 use Module::CoreList;
 use Module::CoreList::TieHashDelta;
 
-$VERSION = '5.20170715_24';
+$VERSION = '5.20170922_24';
 
 sub utilities {
     my $perl = shift;
@@ -1278,8 +1278,36 @@ my %delta = (
         removed => {
         }
     },
+    5.022004 => {
+        delta_from => 5.022003,
+        changed => {
+        },
+        removed => {
+        }
+    },
     5.024002 => {
         delta_from => 5.024001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.027002 => {
+        delta_from => 5.027001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.027003 => {
+        delta_from => 5.027002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.024003 => {
+        delta_from => 5.024002,
         changed => {
         },
         removed => {
Index: gnu/usr.bin/perl/dist/Time-HiRes/Changes
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Time-HiRes/Changes,v
retrieving revision 1.1
diff -u -p -r1.1 Changes
--- gnu/usr.bin/perl/dist/Time-HiRes/Changes	5 Feb 2017 00:32:10 -0000	1.1
+++ gnu/usr.bin/perl/dist/Time-HiRes/Changes	14 Sep 2017 02:22:25 -0000
@@ -1,5 +1,74 @@
 Revision history for the Perl extension Time::HiRes.
 
+1.9741 [2016-11-20]
+  - C++11 compatibility: blead a914236c
+  - El Capitan compatibility: blead 45bbc013
+  - use CLOCK_REALTIME for clock_nanosleep scan: blead 56ed632c
+  - include file consistency in scans: blead 605b4dbe
+  - use clockid_t consistently: blead 2979fdf3
+  - use hv_fetchs(): blead 07e4dd7a
+  - scan for clockid_t (needed for macos Sierra): blead 69d1f2c2
+  - darwin lacks clockid_t: blead d1e7b5aa
+    [rt.cpan.org #129789]
+  - provide template for tempfile: blead 91dca83e
+  - explicit cast for clockid_t in C++11: blead 1c566547
+  - upgrade to a newer ppport (3.35)
+
+1.9740 [2016-09-25]
+  - the ext3/ext2 filesystems do not have subsecond resolution,
+    therefore skip the t/utime.t test
+    [rt.cpan.org #116127]
+
+1.9739 [2016-06-28]
+  - the upcoming macOS 10.12 (Sierra, the operating system formerly
+    known as OS X, or Darwin) has implemented the clock_gettime()
+    and clock_getres() interfaces but not the clock_nanosleep()
+
+1.9738 [2016-06-26]
+  - fix the dates in the Changes, it's not July yet
+    [rt.cpan.org #115553]
+  - in cygwin, drop the utime.t expected timestamp resolution
+  - documented for utime that the actual timestamp resolution depends
+    on the operating system and the filesystem, just like for stat
+  - looks like in gnukfreebsd 10.1 neither futimens or utimensat work
+    even though they exist, skipping utime tests there for now
+  - demodernize the Test::More use in utime.t (no subtest) to
+    better support older Perl installations
+  - for all the tests, drop the Test::More 0.82 requirement,
+    the only "modern" thing used is the note routine which
+    can be replaced with print("# ...\n") (or printf),
+    with this works back at least with Test::More 0.54 (perl 5.8.7) 
+
+1.9737 [2016-06-22]
+  - utime in HiRes.xs had dXSARGS which was unnecessary, leading
+    to two markstack pops, panic, and two-minute wait for the watchdog
+    (thanks to Dave Mitchell for the eagle-eye)
+  - even though 5.10.x should have the Perl_ck_warner, many CPAN
+    smokes proved otherwise, so requiring now at least 5.12 for
+    Perl_ck_warner use in IS_SAFE_PATHNAME() 
+
+1.9736 [2016-06-22]
+  - the IS_SAFE_PATHNAME() emulation was too modern for Perl 5.10
+  - make it so that only one value is set for -DTIME_HIRES_STAT
+    even on systems that support many options
+  - the 1.9734 (only released in blead, and as part of the development
+    release 5.25.2) fix for Darwin's clock_gettime was wrong under
+    threaded builds, leading into mutex panics in clock.t 
+  - the d_hires_utime determination was made more precise
+  - the utime.t was failing in platforms where only one of
+    futimens/utimensat was present (neither or both was okay)
+
+1.9735 [2016-06-20]
+  - Time::HiRes should override `utime` to allow setting hires
+    (futimens and utimensat support)
+    [rt.perl.org #114809]
+  - the utime patch used IS_SAFE_PATHNAME() which isn't available in
+    too old Perls, so emulate (in case the Devel::PPPort is too old)
+
+1.9734 [2016-06-17]
+  - fix Darwins with clock_gettime: blead 2d41a263
+    [rt.perl.org #128427]
+
 1.9733 [2016-04-23]
   - C90 declaration-after-statement error with darwin threads: blead de1003b4
     [rt.cpan.org #113856]
Index: gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm,v
retrieving revision 1.4
diff -u -p -r1.4 HiRes.pm
--- gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm	14 Aug 2017 13:49:44 -0000	1.4
+++ gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm	14 Sep 2017 02:22:25 -0000
@@ -28,7 +28,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm
 		 stat lstat utime
 		);
 
-our $VERSION = '1.9739';
+our $VERSION = '1.9741';
 our $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -559,7 +559,7 @@ VMS have emulations for it.)
 Here is an example of using C<NVtime> from C:
 
   NV (*myNVtime)(); /* Returns -1 on failure. */
-  SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
+  SV **svp = hv_fetchs(PL_modglobal, "Time::NVtime", 0);
   if (!svp)         croak("Time::HiRes is required");
   if (!SvIOK(*svp)) croak("Time::NVtime isn't a function pointer");
   myNVtime = INT2PTR(NV(*)(), SvIV(*svp));
Index: gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs,v
retrieving revision 1.4
diff -u -p -r1.4 HiRes.xs
--- gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs	14 Aug 2017 13:49:44 -0000	1.4
+++ gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs	14 Sep 2017 02:22:25 -0000
@@ -87,6 +87,10 @@ extern "C" {
 #   undef ITIMER_REALPROF
 #endif
 
+#ifndef TIME_HIRES_CLOCKID_T
+typedef int clockid_t;
+#endif
+
 #if defined(TIME_HIRES_CLOCK_GETTIME) && defined(_STRUCT_ITIMERSPEC)
 
 /* HP-UX has CLOCK_XXX values but as enums, not as defines.
@@ -803,7 +807,7 @@ static int darwin_time_init() {
 }
 
 #ifdef TIME_HIRES_CLOCK_GETTIME_EMULATION
-static int clock_gettime(int clock_id, struct timespec *ts) {
+static int th_clock_gettime(clockid_t clock_id, struct timespec *ts) {
   if (darwin_time_init() && timebase_info.denom) {
     switch (clock_id) {
       case CLOCK_REALTIME:
@@ -834,10 +838,13 @@ static int clock_gettime(int clock_id, s
   SETERRNO(EINVAL, LIB_INVARG);
   return -1;
 }
+
+#define clock_gettime(clock_id, ts) th_clock_gettime((clock_id), (ts))
+
 #endif /* TIME_HIRES_CLOCK_GETTIME_EMULATION */
 
 #ifdef TIME_HIRES_CLOCK_GETRES_EMULATION
-static int clock_getres(int clock_id, struct timespec *ts) {
+static int th_clock_getres(clockid_t clock_id, struct timespec *ts) {
   if (darwin_time_init() && timebase_info.denom) {
     switch (clock_id) {
       case CLOCK_REALTIME:
@@ -856,10 +863,12 @@ static int clock_getres(int clock_id, st
   SETERRNO(EINVAL, LIB_INVARG);
   return -1;
 }
+
+#define clock_getres(clock_id, ts) th_clock_getres((clock_id), (ts))
 #endif /* TIME_HIRES_CLOCK_GETRES_EMULATION */
 
 #ifdef TIME_HIRES_CLOCK_NANOSLEEP_EMULATION
-static int clock_nanosleep(int clock_id, int flags,
+static int th_clock_nanosleep(clockid_t clock_id, int flags,
 			   const struct timespec *rqtp,
 			   struct timespec *rmtp) {
   if (darwin_time_init()) {
@@ -896,6 +905,10 @@ static int clock_nanosleep(int clock_id,
   SETERRNO(EINVAL, LIB_INVARG);
   return -1;
 }
+
+#define clock_nanosleep(clock_id, flags, rqtp, rmtp) \
+  th_clock_nanosleep((clock_id), (flags), (rqtp), (rmtp))
+
 #endif /* TIME_HIRES_CLOCK_NANOSLEEP_EMULATION */
 
 #endif /* PERL_DARWIN */
@@ -1012,7 +1025,8 @@ usleep(useconds)
 		    useconds -= NV_1E6 * seconds;
 		}
 	    } else if (useconds < 0.0)
-	        croak("Time::HiRes::usleep(%"NVgf"): negative time not invented yet", useconds);
+	        croak("Time::HiRes::usleep(%" NVgf
+                      "): negative time not invented yet", useconds);
 	    usleep((U32)useconds);
 	} else
 	    PerlProc_pause();
@@ -1034,7 +1048,8 @@ nanosleep(nsec)
 	struct timespec sleepfor, unslept;
 	CODE:
 	if (nsec < 0.0)
-	    croak("Time::HiRes::nanosleep(%"NVgf"): negative time not invented yet", nsec);
+	    croak("Time::HiRes::nanosleep(%" NVgf
+                  "): negative time not invented yet", nsec);
         nanosleep_init(nsec, &sleepfor, &unslept);
 	if (nanosleep(&sleepfor, &unslept) == 0) {
 	    RETVAL = nsec;
@@ -1079,11 +1094,15 @@ sleep(...)
 		   useconds = -(IV)useconds;
 #endif /* #if defined(__sparc64__) && defined(__GNUC__) */
 		   if ((IV)useconds < 0)
-		     croak("Time::HiRes::sleep(%"NVgf"): internal error: useconds < 0 (unsigned %"UVuf" signed %"IVdf")", seconds, useconds, (IV)useconds);
+		     croak("Time::HiRes::sleep(%" NVgf
+                           "): internal error: useconds < 0 (unsigned %" UVuf
+                           " signed %" IVdf ")",
+                           seconds, useconds, (IV)useconds);
 		 }
 		 usleep(useconds);
 	    } else
-	        croak("Time::HiRes::sleep(%"NVgf"): negative time not invented yet", seconds);
+	        croak("Time::HiRes::sleep(%" NVgf
+                      "): negative time not invented yet", seconds);
 	} else
 	    PerlProc_pause();
 	gettimeofday(&Tb, NULL);
@@ -1131,7 +1150,9 @@ ualarm(useconds,uinterval=0)
 	  }
 #else
 	if (useconds >= IV_1E6 || uinterval >= IV_1E6) 
-		croak("Time::HiRes::ualarm(%d, %d): useconds or uinterval equal to or more than %"IVdf, useconds, uinterval, IV_1E6);
+		croak("Time::HiRes::ualarm(%d, %d): useconds or uinterval"
+                      " equal to or more than %" IVdf,
+                      useconds, uinterval, IV_1E6);
 	RETVAL = ualarm(useconds, uinterval);
 #endif
 
@@ -1144,7 +1165,8 @@ alarm(seconds,interval=0)
 	NV interval
 	CODE:
 	if (seconds < 0.0 || interval < 0.0)
-	    croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): negative time not invented yet", seconds, interval);
+	    croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+                  "): negative time not invented yet", seconds, interval);
 	{
 	  IV iseconds = (IV)seconds;
 	  IV iinterval = (IV)interval;
@@ -1152,7 +1174,9 @@ alarm(seconds,interval=0)
 	  NV finterval = interval - iinterval;
 	  IV useconds, uinterval;
 	  if (fseconds >= 1.0 || finterval >= 1.0)
-		croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): seconds or interval too large to split correctly", seconds, interval);
+		croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+                      "): seconds or interval too large to split correctly",
+                      seconds, interval);
 	  useconds = IV_1E6 * fseconds;
 	  uinterval = IV_1E6 * finterval;
 #if defined(HAS_SETITIMER) && defined(ITIMER_REAL)
@@ -1172,7 +1196,9 @@ alarm(seconds,interval=0)
 	  }
 #else
 	  if (iseconds || iinterval)
-		croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): seconds or interval equal to or more than 1.0 ", seconds, interval);
+		croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+                      "): seconds or interval equal to or more than 1.0 ",
+                      seconds, interval);
 	    RETVAL = (NV)ualarm( useconds, uinterval ) / NV_1E6;
 #endif
 	}
@@ -1300,7 +1326,9 @@ setitimer(which, seconds, interval = 0)
 	struct itimerval oldit;
     PPCODE:
 	if (seconds < 0.0 || interval < 0.0)
-	    croak("Time::HiRes::setitimer(%"IVdf", %"NVgf", %"NVgf"): negative time not invented yet", (IV)which, seconds, interval);
+	    croak("Time::HiRes::setitimer(%" IVdf ", %" NVgf ", %" NVgf
+                  "): negative time not invented yet",
+                  (IV)which, seconds, interval);
 	newit.it_value.tv_sec  = (IV)seconds;
 	newit.it_value.tv_usec =
 	  (IV)((seconds  - (NV)newit.it_value.tv_sec)    * NV_1E6);
@@ -1375,7 +1403,9 @@ PROTOTYPE: $$@
 		utbufp = NULL;
 	else {
 		if (SvNV(accessed) < 0.0 || SvNV(modified) < 0.0)
-	        	croak("Time::HiRes::utime(%"NVgf", %"NVgf"): negative time not invented yet", SvNV(accessed), SvNV(modified));
+                    croak("Time::HiRes::utime(%" NVgf ", %" NVgf
+                          "): negative time not invented yet",
+                              SvNV(accessed), SvNV(modified));
 		Zero(&utbuf, sizeof utbuf, char);
 		utbuf[0].tv_sec = (Time_t)SvNV(accessed);  /* time accessed */
 		utbuf[0].tv_nsec = (long)( ( SvNV(accessed) - utbuf[0].tv_sec ) * 1e9 );
@@ -1431,7 +1461,7 @@ utime(accessed, modified, ...)
 
 NV
 clock_gettime(clock_id = CLOCK_REALTIME)
-	int clock_id
+	clockid_t clock_id
     PREINIT:
 	struct timespec ts;
 	int status = -1;
@@ -1450,7 +1480,7 @@ clock_gettime(clock_id = CLOCK_REALTIME)
 
 NV
 clock_gettime(clock_id = 0)
-	int clock_id
+	clockid_t clock_id
     CODE:
 	PERL_UNUSED_ARG(clock_id);
         croak("Time::HiRes::clock_gettime(): unimplemented in this platform");
@@ -1464,7 +1494,7 @@ clock_gettime(clock_id = 0)
 
 NV
 clock_getres(clock_id = CLOCK_REALTIME)
-	int clock_id
+	clockid_t clock_id
     PREINIT:
 	int status = -1;
 	struct timespec ts;
@@ -1483,7 +1513,7 @@ clock_getres(clock_id = CLOCK_REALTIME)
 
 NV
 clock_getres(clock_id = 0)
-	int clock_id
+	clockid_t clock_id
     CODE:
 	PERL_UNUSED_ARG(clock_id);
         croak("Time::HiRes::clock_getres(): unimplemented in this platform");
@@ -1497,14 +1527,15 @@ clock_getres(clock_id = 0)
 
 NV
 clock_nanosleep(clock_id, nsec, flags = 0)
-	int clock_id
+	clockid_t clock_id
 	NV  nsec
 	int flags
     PREINIT:
 	struct timespec sleepfor, unslept;
     CODE:
 	if (nsec < 0.0)
-	    croak("Time::HiRes::clock_nanosleep(..., %"NVgf"): negative time not invented yet", nsec);
+	    croak("Time::HiRes::clock_nanosleep(..., %" NVgf
+                  "): negative time not invented yet", nsec);
         nanosleep_init(nsec, &sleepfor, &unslept);
 	if (clock_nanosleep(clock_id, flags, &sleepfor, &unslept) == 0) {
 	    RETVAL = nsec;
@@ -1518,7 +1549,7 @@ clock_nanosleep(clock_id, nsec, flags = 
 
 NV
 clock_nanosleep(clock_id, nsec, flags = 0)
-	int clock_id
+	clockid_t clock_id
 	NV  nsec
 	int flags
     CODE:
Index: gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile.PL
--- gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL	14 Aug 2017 13:49:44 -0000	1.4
+++ gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL	14 Sep 2017 02:22:25 -0000
@@ -290,6 +290,7 @@ sub has_clock_xxx_syscall {
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
+#include <time.h>
 #include <$SYSCALL_H>
 int main(int argc, char** argv)
 {
@@ -309,6 +310,7 @@ sub has_clock_xxx {
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
+#include <time.h>
 int main(int argc, char** argv)
 {
     struct timespec ts;
@@ -325,6 +327,7 @@ sub has_clock {
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
+#include <time.h>
 int main(int argc, char** argv)
 {
     clock_t tictoc;
@@ -348,7 +351,8 @@ int main(int argc, char** argv)
     struct timespec ts2;
     ts1.tv_sec  = 0;
     ts1.tv_nsec = 750000000;;
-    ret = clock_nanosleep(CLOCK_MONOTONIC, 0, &ts1, &ts2);
+    /* All implementations are supposed to support CLOCK_REALTIME. */
+    ret = clock_nanosleep(CLOCK_REALTIME, 0, &ts1, &ts2);
     ret == 0 ? exit(0) : exit(errno ? errno : -1);
 }
 EOM
@@ -360,7 +364,7 @@ sub has_futimens {
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
-#include <sys/time.h>
+#include <sys/stat.h>
 int main(int argc, char** argv)
 {
     int ret;
@@ -377,7 +381,7 @@ sub has_utimensat{
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
-#include <sys/time.h>
+#include <sys/stat.h>
 #include <fcntl.h>
 int main(int argc, char** argv)
 {
@@ -389,6 +393,21 @@ int main(int argc, char** argv)
 EOM
 }
 
+sub has_clockid_t{
+    return 1 if
+    try_compile_and_link(<<EOM);
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include <time.h>
+int main(int argc, char** argv)
+{
+    clockid_t id = CLOCK_REALTIME;
+    exit(id == CLOCK_REALTIME ? 1 : 0);
+}
+EOM
+}
+
 sub DEFINE {
     my ($def, $val) = @_;
     my $define = defined $val ? "$def=$val" : $def ;
@@ -567,6 +586,16 @@ EOD
 	my $nt = ($^O eq 'os2' ? '' : 'not');
         print "You can$nt mix subsecond sleeps with signals.\n";
         print "(It would not be portable anyway.)\n";
+    }
+
+    print "Looking for clockid_t... ";
+    my $has_clockid_t;
+    if (has_clockid_t()) {
+	print "found.\n";
+        $has_clockid_t++;
+	$DEFINE .= ' -DTIME_HIRES_CLOCKID_T';
+    } else {
+	print "NOT found, will use int.\n";
     }
 
     print "Looking for clock_gettime()... ";
Index: gnu/usr.bin/perl/dist/Time-HiRes/typemap
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Time-HiRes/typemap,v
retrieving revision 1.1
diff -u -p -r1.1 typemap
--- gnu/usr.bin/perl/dist/Time-HiRes/typemap	5 Feb 2017 00:32:10 -0000	1.1
+++ gnu/usr.bin/perl/dist/Time-HiRes/typemap	14 Sep 2017 02:22:25 -0000
@@ -28,6 +28,8 @@ AV *			T_AVREF
 HV *			T_HVREF
 CV *			T_CVREF
 
+clockid_t               T_IV
+
 IV			T_IV
 UV			T_UV
 NV                      T_NV
Index: gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t,v
retrieving revision 1.1
diff -u -p -r1.1 utime.t
--- gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t	5 Feb 2017 00:33:40 -0000	1.1
+++ gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t	14 Sep 2017 02:22:25 -0000
@@ -3,6 +3,7 @@ use strict;
 BEGIN {
     require Time::HiRes;
     require Test::More;
+    require File::Temp;
     unless(&Time::HiRes::d_hires_utime) {
 	Test::More::plan(skip_all => "no hires_utime");
     }
@@ -15,6 +16,35 @@ BEGIN {
     if ($^O eq 'gnukfreebsd') {
 	Test::More::plan(skip_all => "futimens() and utimensat() not working in $^O");
     }
+    if ($^O eq 'linux' && -e '/proc/mounts') {
+        # The linux might be wrong when ext3
+        # is available in other operating systems,
+        # but then we need other methods for detecting
+        # the filesystem type of the tempfiles.
+        my ($fh, $fn) = File::Temp::tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1);
+        sub getfstype {
+            my ($fn) = @_;
+            my $cmd = "df $fn";
+            open(my $df, "$cmd |") or die "$cmd: $!";
+             my @df = <$df>;  # Assume $df[0] is header line.
+             my $dev = +(split(" ", $df[1]))[0];
+             open(my $mounts, "/proc/mounts") or die "/proc/mounts: $!";
+             while (<$mounts>) {
+                 my @m = split(" ");
+                 if ($m[0] eq $dev) { return $m[2] }
+             }
+             return;
+          }
+          my $fstype = getfstype($fn);
+          unless (defined $fstype) {
+              warn "Unknown fstype for $fn\n";
+          } else {
+              print "# fstype = $fstype\n";
+              if ($fstype eq 'ext3' || $fstype eq 'ext2') {
+                  Test::More::plan(skip_all => "fstype $fstype has no subsecond timestamps in $^O");
+            }
+        }
+    }
 }
 
 use Test::More tests => 18;
@@ -23,9 +53,16 @@ use File::Temp qw( tempfile );
 
 use Config;
 
-# Cygwin timestamps have less precision.
-my $atime = $^O eq 'cygwin' ? 1.1111111 : 1.111111111;
-my $mtime = $^O eq 'cygwin' ? 2.2222222 : 2.222222222;
+# Hope initially for nanosecond accuracy.
+my $atime = 1.111111111;
+my $mtime = 2.222222222;
+
+if ($^O eq 'cygwin') {
+   # Cygwin timestamps have less precision.
+   $atime = 1.1111111;
+   $mtime = 2.2222222;
+}
+print "# \$^O = $^O, atime = $atime, mtime = $mtime\n";
 
 print "# utime \$fh\n";
 {
Index: gnu/usr.bin/perl/ext/POSIX/POSIX.xs
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/ext/POSIX/POSIX.xs,v
retrieving revision 1.23
diff -u -p -r1.23 POSIX.xs
--- gnu/usr.bin/perl/ext/POSIX/POSIX.xs	5 Feb 2017 00:32:13 -0000	1.23
+++ gnu/usr.bin/perl/ext/POSIX/POSIX.xs	14 Sep 2017 02:22:28 -0000
@@ -1153,7 +1153,7 @@ static NV my_trunc(NV x)
 #  define NV_PAYLOAD_TYPE NV
 #endif
 
-#ifdef LONGDOUBLE_DOUBLEDOUBLE
+#if defined(USE_LONG_DOUBLE) && defined(LONGDOUBLE_DOUBLEDOUBLE)
 #  define NV_PAYLOAD_SIZEOF_ASSERT(a) assert(sizeof(a) == NVSIZE / 2)
 #else
 #  define NV_PAYLOAD_SIZEOF_ASSERT(a) assert(sizeof(a) == NVSIZE)
Index: gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm,v
retrieving revision 1.2
diff -u -p -r1.2 POSIX.pm
--- gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm	5 Feb 2017 00:32:13 -0000	1.2
+++ gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm	14 Sep 2017 02:22:28 -0000
@@ -4,7 +4,7 @@ use warnings;
 
 our ($AUTOLOAD, %SIGRT);
 
-our $VERSION = '1.65';
+our $VERSION = '1.65_01';
 
 require XSLoader;
 
Index: gnu/usr.bin/perl/hints/catamount.sh
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/hints/catamount.sh,v
retrieving revision 1.4
diff -u -p -r1.4 catamount.sh
--- gnu/usr.bin/perl/hints/catamount.sh	14 Aug 2017 13:48:47 -0000	1.4
+++ gnu/usr.bin/perl/hints/catamount.sh	14 Sep 2017 02:22:30 -0000
@@ -31,11 +31,11 @@
 # mkdir -p /opt/perl-catamount
 # mkdir -p /opt/perl-catamount/include
 # mkdir -p /opt/perl-catamount/lib
-# mkdir -p /opt/perl-catamount/lib/perl5/5.24.2
+# mkdir -p /opt/perl-catamount/lib/perl5/5.24.3
 # mkdir -p /opt/perl-catamount/bin
 # cp *.h /opt/perl-catamount/include
 # cp libperl.a /opt/perl-catamount/lib
-# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.24.2
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.24.3
 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib
 #
 # With the headers and the libperl.a you can embed Perl to your Catamount
Index: gnu/usr.bin/perl/hints/cygwin.sh
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/hints/cygwin.sh,v
retrieving revision 1.1.1.9
diff -u -p -r1.1.1.9 cygwin.sh
--- gnu/usr.bin/perl/hints/cygwin.sh	25 Mar 2013 20:08:47 -0000	1.1.1.9
+++ gnu/usr.bin/perl/hints/cygwin.sh	14 Sep 2017 02:22:30 -0000
@@ -31,7 +31,7 @@ test -z "$optimize" && optimize='-O3'
 man3ext='3pm'
 test -z "$use64bitint" && use64bitint='define'
 test -z "$useithreads" && useithreads='define'
-ccflags="$ccflags -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__"
+ccflags="$ccflags -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE"
 # - otherwise i686-cygwin
 archname='cygwin'
 
Index: gnu/usr.bin/perl/lib/B/Op_private.pm
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/lib/B/Op_private.pm,v
retrieving revision 1.2
diff -u -p -r1.2 Op_private.pm
--- gnu/usr.bin/perl/lib/B/Op_private.pm	14 Aug 2017 13:48:47 -0000	1.2
+++ gnu/usr.bin/perl/lib/B/Op_private.pm	14 Sep 2017 02:22:34 -0000
@@ -118,7 +118,7 @@ package B::Op_private;
 our %bits;
 
 
-our $VERSION = "5.024002";
+our $VERSION = "5.024003";
 
 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
 $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
Index: gnu/usr.bin/perl/plan9/config.plan9
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/plan9/config.plan9,v
retrieving revision 1.19
diff -u -p -r1.19 config.plan9
--- gnu/usr.bin/perl/plan9/config.plan9	14 Aug 2017 13:48:47 -0000	1.19
+++ gnu/usr.bin/perl/plan9/config.plan9	14 Sep 2017 02:23:07 -0000
@@ -3329,8 +3329,8 @@
  *	This symbol contains the ~name expanded version of PRIVLIB, to be used
  *	in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/sys/lib/perl/5.24.2"		/**/
-#define PRIVLIB_EXP "/sys/lib/perl/5.24.2"		/**/
+#define PRIVLIB "/sys/lib/perl/5.24.3"		/**/
+#define PRIVLIB_EXP "/sys/lib/perl/5.24.3"		/**/
 
 /* PTRSIZE:
  *	This symbol contains the size of a pointer, so that the C preprocessor
@@ -3457,9 +3457,9 @@
  *	removed.  The elements in inc_version_list (inc_version_list.U) can
  *	be tacked onto this variable to generate a list of directories to search.
  */
-#define SITELIB "/sys/lib/perl/5.24.2/site_perl"		/**/
-#define SITELIB_EXP "/sys/lib/perl/5.24.2/site_perl"		/**/
-#define SITELIB_STEM "/sys/lib/perl/5.24.2/site_perl"		/**/
+#define SITELIB "/sys/lib/perl/5.24.3/site_perl"		/**/
+#define SITELIB_EXP "/sys/lib/perl/5.24.3/site_perl"		/**/
+#define SITELIB_STEM "/sys/lib/perl/5.24.3/site_perl"		/**/
 
 /* Size_t_size:
  *	This symbol holds the size of a Size_t in bytes.
Index: gnu/usr.bin/perl/plan9/config_sh.sample
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/plan9/config_sh.sample,v
retrieving revision 1.7
diff -u -p -r1.7 config_sh.sample
--- gnu/usr.bin/perl/plan9/config_sh.sample	14 Aug 2017 13:48:47 -0000	1.7
+++ gnu/usr.bin/perl/plan9/config_sh.sample	14 Sep 2017 02:23:07 -0000
@@ -36,8 +36,8 @@ api_subversion='0'
 api_version='24'
 api_versionstring='5.24.0'
 ar='ar'
-archlib='/sys/lib/perl5/5.24.2/386'
-archlibexp='/sys/lib/perl5/5.24.2/386'
+archlib='/sys/lib/perl5/5.24.3/386'
+archlibexp='/sys/lib/perl5/5.24.3/386'
 archname64=''
 archname='386'
 archobjs=''
@@ -802,17 +802,17 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='/sys/lib/perl/5.24.2/386'
+installarchlib='/sys/lib/perl/5.24.3/386'
 installbin='/usr/bin'
 installman1dir='/sys/man/1pub'
 installman3dir='/sys/man/2pub'
 installprefix='/usr'
 installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.24.2'
+installprivlib='/sys/lib/perl/5.24.3'
 installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.24.2/site_perl/386'
+installsitearch='/sys/lib/perl/5.24.3/site_perl/386'
 installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.24.2/site_perl'
+installsitelib='/sys/lib/perl/5.24.3/site_perl'
 installstyle='lib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
@@ -937,8 +937,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/sys/lib/perl/5.24.2'
-privlibexp='/sys/lib/perl/5.24.2'
+privlib='/sys/lib/perl/5.24.3'
+privlibexp='/sys/lib/perl/5.24.3'
 procselfexe=''
 prototype='define'
 ptrsize='4'
@@ -1003,13 +1003,13 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0'
 sig_size='50'
 signal_t='void'
-sitearch='/sys/lib/perl/5.24.2/site_perl/386'
+sitearch='/sys/lib/perl/5.24.3/site_perl/386'
 sitearchexp='/sys/lib/perl/site_perl/386'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.24.2/site_perl'
-sitelib_stem='/sys/lib/perl/5.24.2/site_perl'
-sitelibexp='/sys/lib/perl/5.24.2/site_perl'
+sitelib='/sys/lib/perl/5.24.3/site_perl'
+sitelib_stem='/sys/lib/perl/5.24.3/site_perl'
+sitelibexp='/sys/lib/perl/5.24.3/site_perl'
 siteprefix='/usr'
 siteprefixexp='/usr'
 sizesize='4'
@@ -1042,7 +1042,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/sys/include/ape/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/sys/man/1pub'
 tail=''
 tar=''
@@ -1124,8 +1124,8 @@ vendorlib_stem=''
 vendorlibexp=''
 vendorprefix=''
 vendorprefixexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth=''
@@ -1139,7 +1139,7 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=24
 PERL_API_SUBVERSION=0
Index: gnu/usr.bin/perl/pod/perl.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perl.pod,v
retrieving revision 1.25
diff -u -p -r1.25 perl.pod
--- gnu/usr.bin/perl/pod/perl.pod	14 Aug 2017 13:50:32 -0000	1.25
+++ gnu/usr.bin/perl/pod/perl.pod	14 Sep 2017 02:23:07 -0000
@@ -180,8 +180,10 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2htm
 
     perlhist		Perl history records
     perldelta		Perl changes since previous version
+    perl5242delta	Perl changes in version 5.24.2
     perl5241delta	Perl changes in version 5.24.1
     perl5240delta	Perl changes in version 5.24.0
+    perl5224delta	Perl changes in version 5.22.4
     perl5223delta	Perl changes in version 5.22.3
     perl5222delta	Perl changes in version 5.22.2
     perl5221delta	Perl changes in version 5.22.1
Index: gnu/usr.bin/perl/pod/perldelta.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perldelta.pod,v
retrieving revision 1.16
diff -u -p -r1.16 perldelta.pod
--- gnu/usr.bin/perl/pod/perldelta.pod	14 Aug 2017 13:48:47 -0000	1.16
+++ gnu/usr.bin/perl/pod/perldelta.pod	14 Sep 2017 02:23:10 -0000
@@ -2,34 +2,43 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.24.2
+perldelta - what is new for perl v5.24.3
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.24.1 release and the 5.24.2
+This document describes differences between the 5.24.2 release and the 5.24.3
 release.
 
-If you are upgrading from an earlier release such as 5.24.0, first read
-L<perl5241delta>, which describes differences between 5.24.0 and 5.24.1.
+If you are upgrading from an earlier release such as 5.24.1, first read
+L<perl5242delta>, which describes differences between 5.24.1 and 5.24.2.
 
 =head1 Security
 
-=head2 Improved handling of '.' in @INC in base.pm
+=head2 [CVE-2017-12837] Heap buffer overflow in regular expression compiler
 
-The handling of (the removal of) C<'.'> in C<@INC> in L<base> has been
-improved.  This resolves some problematic behaviour in the approach taken in
-Perl 5.24.1, which is probably best described in the following two threads on
-the Perl 5 Porters mailing list:
-L<http://www.nntp.perl.org/group/perl.perl5.porters/2016/08/msg238991.html>,
-L<http://www.nntp.perl.org/group/perl.perl5.porters/2016/10/msg240297.html>.
-
-=head2 "Escaped" colons and relative paths in PATH
-
-On Unix systems, Perl treats any relative paths in the PATH environment
-variable as tainted when starting a new process.  Previously, it was allowing a
-backslash to escape a colon (unlike the OS), consequently allowing relative
-paths to be considered safe if the PATH was set to something like C</\:.>.  The
-check has been fixed to treat C<.> as tainted in that example.
+Compiling certain regular expression patterns with the case-insensitive
+modifier could cause a heap buffer overflow and crash perl.  This has now been
+fixed.
+L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582>
+
+=head2 [CVE-2017-12883] Buffer over-read in regular expression parser
+
+For certain types of syntax error in a regular expression pattern, the error
+message could either contain the contents of a random, possibly large, chunk of
+memory, or could crash perl.  This has now been fixed.
+L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598>
+
+=head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows
+
+A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed
+by removing the buffer completely since it was superfluous anyway.
+L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665>
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.24.2.  If any exist,
+they are bugs, and we request that you submit a report.  See L</Reporting
+Bugs> below.
 
 =head1 Modules and Pragmata
 
@@ -39,11 +48,83 @@ check has been fixed to treat C<.> as ta
 
 =item *
 
-L<base> has been upgraded from version 2.23 to 2.23_01.
+L<Module::CoreList> has been upgraded from version 5.20170715_24 to
+5.20170922_24.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.65 to 1.65_01.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9733 to 1.9741.
+
+L<[perl #128427]|https://rt.perl.org/Public/Bug/Display.html?id=128427>
+L<[perl #128445]|https://rt.perl.org/Public/Bug/Display.html?id=128445>
+L<[perl #128972]|https://rt.perl.org/Public/Bug/Display.html?id=128972>
+L<[cpan #120032]|https://rt.cpan.org/Public/Bug/Display.html?id=120032>
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+When building with GCC 6 and link-time optimization (the B<-flto> option to
+B<gcc>), F<Configure> was treating all probed symbols as present on the system,
+regardless of whether they actually exist.  This has been fixed.
+L<[perl #128131]|https://rt.perl.org/Public/Bug/Display.html?id=128131>
+
+=item *
+
+F<Configure> now aborts if both C<-Duselongdouble> and C<-Dusequadmath> are
+requested.
+L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203>
+
+=item *
+
+Fixed a bug in which F<Configure> could append C<-quadmath> to the archname
+even if it was already present.
+L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538>
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 5.20170114_24 to 5.20170715_24.
+Clang builds with C<-DPERL_GLOBAL_STRUCT> or C<-DPERL_GLOBAL_STRUCT_PRIVATE>
+have been fixed (by disabling Thread Safety Analysis for these configurations).
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+=over 4
+
+=item *
+
+C<configure.com> now recognizes the VSI-branded C compiler.
+
+=back
+
+=item Windows
+
+=over 4
+
+=item *
+
+Building XS modules with GCC 6 in a 64-bit build of Perl failed due to
+incorrect mapping of C<strtoll> and C<strtoull>.  This has now been fixed.
+L<[perl #131726]|https://rt.perl.org/Public/Bug/Display.html?id=131726>
+L<[cpan #121683]|https://rt.cpan.org/Public/Bug/Display.html?id=121683>
+L<[cpan #122353]|https://rt.cpan.org/Public/Bug/Display.html?id=122353>
+
+=back
 
 =back
 
@@ -53,29 +134,162 @@ L<Module::CoreList> has been upgraded fr
 
 =item *
 
-Fixed a crash with C<s///l> where it thought it was dealing with UTF-8 when it
-wasn't.
-L<[perl #129038]|https://rt.perl.org/Ticket/Display.html?id=129038>
+C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer
+do, but merely produce a syntax error.
+L<[perl #128171]|https://rt.perl.org/Public/Bug/Display.html?id=128171>
+
+=item *
+
+C<do> or C<require> with an argument which is a reference or typeglob which,
+when stringified, contains a null character, started crashing in Perl 5.20, but
+has now been fixed.
+L<[perl #128182]|https://rt.perl.org/Public/Bug/Display.html?id=128182>
+
+=item *
+
+Expressions containing an C<&&> or C<||> operator (or their synonyms C<and> and
+C<or>) were being compiled incorrectly in some cases.  If the left-hand side
+consisted of either a negated bareword constant or a negated C<do {}> block
+containing a constant expression, and the right-hand side consisted of a
+negated non-foldable expression, one of the negations was effectively ignored.
+The same was true of C<if> and C<unless> statement modifiers, though with the
+left-hand and right-hand sides swapped.  This long-standing bug has now been
+fixed.
+L<[perl #127952]|https://rt.perl.org/Public/Bug/Display.html?id=127952>
+
+=item *
+
+C<reset> with an argument no longer crashes when encountering stash entries
+other than globs.
+L<[perl #128106]|https://rt.perl.org/Public/Bug/Display.html?id=128106>
+
+=item *
+
+Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no longer
+causes crashes.
+L<[perl #128086]|https://rt.perl.org/Public/Bug/Display.html?id=128086>
+
+=item *
+
+Assignment variants of any bitwise ops under the C<bitwise> feature would crash
+if the left-hand side was an array or hash.
+L<[perl #128204]|https://rt.perl.org/Public/Bug/Display.html?id=128204>
+
+=item *
+
+C<socket> now leaves the error code returned by the system in C<$!> on failure.
+L<[perl #128316]|https://rt.perl.org/Public/Bug/Display.html?id=128316>
+
+=item *
+
+Parsing bad POSIX charclasses no longer leaks memory.
+L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313>
+
+=item *
+
+Since Perl 5.20, line numbers have been off by one when perl is invoked with
+the B<-x> switch.  This has been fixed.
+L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508>
+
+=item *
+
+Some obscure cases of subroutines and file handles being freed at the same time
+could result in crashes, but have been fixed.  The crash was introduced in Perl
+5.22.
+L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597>
+
+=item *
+
+Some regular expression parsing glitches could lead to assertion failures with
+regular expressions such as C</(?E<lt>=/> and C</(?E<lt>!/>.  This has now been
+fixed.
+L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170>
+
+=item *
+
+C<gethostent> and similar functions now perform a null check internally, to
+avoid crashing with the torsocks library.  This was a regression from Perl
+5.22.
+L<[perl #128740]|https://rt.perl.org/Public/Bug/Display.html?id=128740>
+
+=item *
+
+Mentioning the same constant twice in a row (which is a syntax error) no longer
+fails an assertion under debugging builds.  This was a regression from Perl
+5.20.
+L<[perl #126482]|https://rt.perl.org/Public/Bug/Display.html?id=126482>
+
+=item *
+
+In Perl 5.24 C<fchown> was changed not to accept negative one as an argument
+because in some platforms that is an error.  However, in some other platforms
+that is an acceptable argument.  This change has been reverted.
+L<[perl #128967]|https://rt.perl.org/Public/Bug/Display.html?id=128967>.
+
+=item *
+
+C<@{x> followed by a newline where C<"x"> represents a control or non-ASCII
+character no longer produces a garbled syntax error message or a crash.
+L<[perl #128951]|https://rt.perl.org/Public/Bug/Display.html?id=128951>
+
+=item *
+
+A regression in Perl 5.24 with C<tr/\N{U+...}/foo/> when the code point was
+between 128 and 255 has been fixed.
+L<[perl #128734]|https://rt.perl.org/Public/Bug/Display.html?id=128734>.
+
+=item *
+
+Many issues relating to C<printf "%a"> of hexadecimal floating point were
+fixed.  In addition, the "subnormals" (formerly known as "denormals") floating
+point numbers are now supported both with the plain IEEE 754 floating point
+numbers (64-bit or 128-bit) and the x86 80-bit "extended precision".  Note that
+subnormal hexadecimal floating point literals will give a warning about
+"exponent underflow".
+L<[perl #128843]|https://rt.perl.org/Public/Bug/Display.html?id=128843>
+L<[perl #128888]|https://rt.perl.org/Public/Bug/Display.html?id=128888>
+L<[perl #128889]|https://rt.perl.org/Public/Bug/Display.html?id=128889>
+L<[perl #128890]|https://rt.perl.org/Public/Bug/Display.html?id=128890>
+L<[perl #128893]|https://rt.perl.org/Public/Bug/Display.html?id=128893>
+L<[perl #128909]|https://rt.perl.org/Public/Bug/Display.html?id=128909>
+L<[perl #128919]|https://rt.perl.org/Public/Bug/Display.html?id=128919>
+
+=item *
+
+The parser could sometimes crash if a bareword came after C<evalbytes>.
+L<[perl #129196]|https://rt.perl.org/Public/Bug/Display.html?id=129196>
+
+=item *
+
+Fixed a place where the regex parser was not setting the syntax error correctly
+on a syntactically incorrect pattern.
+L<[perl #129122]|https://rt.perl.org/Public/Bug/Display.html?id=129122>
+
+=item *
+
+A vulnerability in Perl's C<sprintf> implementation has been fixed by avoiding
+a possible memory wrap.
+L<[perl #131260]|https://rt.perl.org/Public/Bug/Display.html?id=131260>
 
 =back
 
 =head1 Acknowledgements
 
-Perl 5.24.2 represents approximately 6 months of development since Perl 5.24.1
-and contains approximately 2,500 lines of changes across 53 files from 18
+Perl 5.24.3 represents approximately 2 months of development since Perl 5.24.2
+and contains approximately 3,100 lines of changes across 120 files from 20
 authors.
 
 Excluding auto-generated files, documentation and release tools, there were
-approximately 960 lines of changes to 17 .pm, .t, .c and .h files.
+approximately 1,500 lines of changes to 56 .pm, .t, .c and .h files.
 
 Perl continues to flourish into its third decade thanks to a vibrant community
 of users and developers.  The following people are known to have contributed
-the improvements that became Perl 5.24.2:
+the improvements that became Perl 5.24.3:
 
-Aaron Crane, Abigail, Aristotle Pagaltzis, Chris 'BinGOs' Williams, Dan
-Collins, David Mitchell, Eric Herman, Father Chrysostomos, James E Keenan, Karl
-Williamson, Lukas Mai, Renee Baecker, Ricardo Signes, Sawyer X, Stevan Little,
-Steve Hay, Tony Cook, Yves Orton.
+Aaron Crane, Craig A. Berry, Dan Collins, Daniel Dragan, Dave Cross, David
+Mitchell, Eric Herman, Father Chrysostomos, H.Merijn Brand, Hugo van der
+Sanden, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Matthew
+Horsfall, Stevan Little, Steve Hay, Steven Humphrey, Tony Cook, Yves Orton.
 
 The list above is almost certainly incomplete as it is automatically generated
 from version control history.  In particular, it does not include the names of
@@ -103,8 +317,8 @@ will be sent off to perlbug@perl.org to 
 
 If the bug you are reporting has security implications which make it
 inappropriate to send to a publicly archived mailing list, then see
-L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
-for details of how to report the issue.
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> for details of how to
+report the issue.
 
 =head1 SEE ALSO
 
Index: gnu/usr.bin/perl/pod/perldiag.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perldiag.pod,v
retrieving revision 1.19
diff -u -p -r1.19 perldiag.pod
--- gnu/usr.bin/perl/pod/perldiag.pod	5 Feb 2017 00:32:18 -0000	1.19
+++ gnu/usr.bin/perl/pod/perldiag.pod	14 Sep 2017 02:23:11 -0000
@@ -2479,7 +2479,9 @@ than the floating point supports.
 =item Hexadecimal float: exponent underflow
 
 (W overflow) The hexadecimal floating point has a smaller exponent
-than the floating point supports.
+than the floating point supports.  With the IEEE 754 floating point,
+this may also mean that the subnormals (formerly known as denormals)
+are being used, which may or may not be an error.
 
 =item Hexadecimal float: internal error (%s)
 
Index: gnu/usr.bin/perl/pod/perlfunc.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perlfunc.pod,v
retrieving revision 1.21
diff -u -p -r1.21 perlfunc.pod
--- gnu/usr.bin/perl/pod/perlfunc.pod	5 Feb 2017 00:32:18 -0000	1.21
+++ gnu/usr.bin/perl/pod/perlfunc.pod	14 Sep 2017 02:23:12 -0000
@@ -1703,8 +1703,8 @@ produce, respectively
     /etc/games is no good, stopped at canasta line 123.
 
 If the output is empty and L<C<$@>|perlvar/$@> already contains a value
-(typically from a previous eval) that value is reused after appending
-C<"\t...propagated">.  This is useful for propagating exceptions:
+(typically from a previous L<C<eval>|/eval EXPR>) that value is reused after
+appending C<"\t...propagated">.  This is useful for propagating exceptions:
 
     eval { ... };
     die unless $@ =~ /Expected exception/;
@@ -4006,8 +4006,8 @@ Note that L<C<$_>|perlvar/$_> is an alia
 be used to modify the elements of the LIST.  While this is useful and
 supported, it can cause bizarre results if the elements of LIST are not
 variables.  Using a regular C<foreach> loop for this purpose would be
-clearer in most cases.  See also L<C<grep>|/grep BLOCK LIST> for an
-array composed of those items of the original list for which the BLOCK
+clearer in most cases.  See also L<C<grep>|/grep BLOCK LIST> for a
+list composed of those items of the original list for which the BLOCK
 or EXPR evaluates to true.
 
 C<{> starts both hash references and blocks, so C<map { ...> could be either
Index: gnu/usr.bin/perl/pod/perlhist.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perlhist.pod,v
retrieving revision 1.20
diff -u -p -r1.20 perlhist.pod
--- gnu/usr.bin/perl/pod/perlhist.pod	14 Aug 2017 13:48:47 -0000	1.20
+++ gnu/usr.bin/perl/pod/perlhist.pod	14 Sep 2017 02:23:12 -0000
@@ -578,8 +578,8 @@ the strings?).
  Steve     5.22.4       2017-Jul-15
 
  Ricardo   5.23.0       2015-Jun-20     The 5.23 development track
- Matthew   5.23.1       2015-Jul-20
- Matthew   5.23.2       2015-Aug-20
+ Matthew H 5.23.1       2015-Jul-20
+ Matthew H 5.23.2       2015-Aug-20
  Peter     5.23.3       2015-Sep-20
  Steve     5.23.4       2015-Oct-20
  Abigail   5.23.5       2015-Nov-20
@@ -602,10 +602,11 @@ the strings?).
  Steve     5.24.1       2017-Jan-14
  Steve     5.24.2-RC1   2017-Jul-01
  Steve     5.24.2       2017-Jul-15
+ Steve     5.24.3-RC1   2017-Sep-10
 
  Ricardo   5.25.0       2016-May-09     The 5.25 development track
  Sawyer X  5.25.1       2016-May-20
- Matthew   5.25.2       2016-Jun-20
+ Matthew H 5.25.2       2016-Jun-20
  Steve     5.25.3       2016-Jul-20
  BinGOs    5.25.4       2016-Aug-20
  Stevan    5.25.5       2016-Sep-20
@@ -620,9 +621,12 @@ the strings?).
  Sawyer X  5.26.0-RC1   2017-May-11     The 5.26 maintenance track
  Sawyer X  5.26.0-RC2   2017-May-23
  Sawyer X  5.26.0       2017-May-30
+ Steve     5.26.1-RC1   2017-Sep-10
 
  Sawyer X  5.27.0       2017-May-31     The 5.27 development track
  Eric      5.27.1       2017-Jun-20
+ Aaron     5.27.2       2017-Jul-20
+ Matthew H 5.27.3       2017-Aug-21
 
 =head2 SELECTED RELEASE SIZES
 
Index: gnu/usr.bin/perl/pod/perlop.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perlop.pod,v
retrieving revision 1.26
diff -u -p -r1.26 perlop.pod
--- gnu/usr.bin/perl/pod/perlop.pod	14 Aug 2017 13:49:45 -0000	1.26
+++ gnu/usr.bin/perl/pod/perlop.pod	14 Sep 2017 02:23:13 -0000
@@ -2423,7 +2423,7 @@ controls and characters which have no AS
 But, even for portable ranges, it is not generally obvious what is
 included without having to look things up.  A sound principle is to use
 only ranges that begin from and end at either ASCII alphabetics of equal
-case (C<b-e>, C<b-E>), or digits (C<1-4>).  Anything else is unclear
+case (C<b-e>, C<B-E>), or digits (C<1-4>).  Anything else is unclear
 (and unportable unless C<\N{...}> is used).  If in doubt, spell out the
 character sets in full.
 
Index: gnu/usr.bin/perl/pod/perlrecharclass.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perlrecharclass.pod,v
retrieving revision 1.2
diff -u -p -r1.2 perlrecharclass.pod
--- gnu/usr.bin/perl/pod/perlrecharclass.pod	5 Feb 2017 00:32:19 -0000	1.2
+++ gnu/usr.bin/perl/pod/perlrecharclass.pod	14 Sep 2017 02:23:14 -0000
@@ -863,7 +863,7 @@ Same for the two ASCII-only range forms.
 =back
 
 There are various other synonyms that can be used besides the names
-listed in the table.  For example, C<\p{PosixAlpha}> can be written as
+listed in the table.  For example, C<\p{XPosixAlpha}> can be written as
 C<\p{Alpha}>.  All are listed in
 L<perluniprops/Properties accessible through \p{} and \P{}>.
 
Index: gnu/usr.bin/perl/pod/perlrun.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perlrun.pod,v
retrieving revision 1.18
diff -u -p -r1.18 perlrun.pod
--- gnu/usr.bin/perl/pod/perlrun.pod	5 Feb 2017 00:32:19 -0000	1.18
+++ gnu/usr.bin/perl/pod/perlrun.pod	14 Sep 2017 02:23:15 -0000
@@ -345,7 +345,7 @@ You can also use binmode() to set the en
 X<-c>
 
 causes Perl to check the syntax of the program and then exit without
-executing it.  Actually, it I<will> execute and C<BEGIN>, C<UNITCHECK>,
+executing it.  Actually, it I<will> execute any C<BEGIN>, C<UNITCHECK>,
 or C<CHECK> blocks and any C<use> statements: these are considered as
 occurring outside the execution of your program.  C<INIT> and C<END>
 blocks, however, will be skipped.
Index: gnu/usr.bin/perl/pod/perlunicode.pod
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/pod/perlunicode.pod,v
retrieving revision 1.2
diff -u -p -r1.2 perlunicode.pod
--- gnu/usr.bin/perl/pod/perlunicode.pod	5 Feb 2017 00:32:19 -0000	1.2
+++ gnu/usr.bin/perl/pod/perlunicode.pod	14 Sep 2017 02:23:15 -0000
@@ -1827,7 +1827,7 @@ the XS level, and L<perlapi/Unicode Supp
 Perl by default comes with the latest supported Unicode version built-in, but
 the goal is to allow you to change to use any earlier one.  In Perls
 v5.20 and v5.22, however, the earliest usable version is Unicode 5.1.
-Perl v5.18 is able to handle all earlier versions.
+Perl v5.18 and v5.24 are able to handle all earlier versions.
 
 Download the files in the desired version of Unicode from the Unicode web
 site L<http://www.unicode.org>).  These should replace the existing files in
Index: gnu/usr.bin/perl/regen/opcodes
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/regen/opcodes,v
retrieving revision 1.2
diff -u -p -r1.2 opcodes
--- gnu/usr.bin/perl/regen/opcodes	5 Feb 2017 00:32:19 -0000	1.2
+++ gnu/usr.bin/perl/regen/opcodes	14 Sep 2017 02:23:17 -0000
@@ -165,12 +165,12 @@ scmp		string comparison (cmp)	ck_null		i
 bit_and		bitwise and (&)		ck_bitop	fst2	S S|
 bit_xor		bitwise xor (^)		ck_bitop	fst2	S S|
 bit_or		bitwise or (|)		ck_bitop	fst2	S S|
-nbit_and	numeric bitiwse and (&)	ck_bitop	fsT2	S S|
+nbit_and	numeric bitwise and (&)	ck_bitop	fsT2	S S|
 nbit_xor	numeric bitwise xor (^)	ck_bitop	fsT2	S S|
 nbit_or		numeric bitwise or (|)	ck_bitop	fsT2	S S|
-sbit_and	string bitiwse and (&)	ck_bitop	fst2	S S|
-sbit_xor	string bitwise xor (^)	ck_bitop	fst2	S S|
-sbit_or		string bitwise or (|)	ck_bitop	fst2	S S|
+sbit_and	string bitwise and (&.)	ck_bitop	fst2	S S|
+sbit_xor	string bitwise xor (^.)	ck_bitop	fst2	S S|
+sbit_or		string bitwise or (|.)	ck_bitop	fst2	S S|
 
 negate		negation (-)		ck_null		Ifst1	S
 i_negate	integer negation (-)	ck_null		ifst1	S
Index: gnu/usr.bin/perl/regen/warnings.pl
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/regen/warnings.pl,v
retrieving revision 1.2
diff -u -p -r1.2 warnings.pl
--- gnu/usr.bin/perl/regen/warnings.pl	5 Feb 2017 00:32:19 -0000	1.2
+++ gnu/usr.bin/perl/regen/warnings.pl	14 Sep 2017 02:23:17 -0000
@@ -358,8 +358,10 @@ EOM
 
   print $warn <<'EOM';
 
-#define isLEXWARN_on 	cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off	cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+	cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+	cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE	(PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)+1))
Index: gnu/usr.bin/perl/t/base/lex.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/base/lex.t,v
retrieving revision 1.15
diff -u -p -r1.15 lex.t
--- gnu/usr.bin/perl/t/base/lex.t	5 Feb 2017 00:32:19 -0000	1.15
+++ gnu/usr.bin/perl/t/base/lex.t	14 Sep 2017 02:23:18 -0000
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..104\n";
+print "1..105\n";
 
 $x = 'x';
 
@@ -521,4 +521,10 @@ eval q|s##[}#e|;
  # Used to crash [perl #125350]
  eval ('qq{@{[0}*sub{]]}}}=sub{0' . "\c[");
  print "ok $test - 125350\n"; $test++;
+}
+
+{
+ # Used to crash [perl #128171]
+ eval ('/@0{0*->@*/*]');
+ print "ok $test - 128171\n"; $test++;
 }
Index: gnu/usr.bin/perl/t/io/socket.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/io/socket.t,v
retrieving revision 1.2
diff -u -p -r1.2 socket.t
--- gnu/usr.bin/perl/t/io/socket.t	5 Feb 2017 00:32:19 -0000	1.2
+++ gnu/usr.bin/perl/t/io/socket.t	14 Sep 2017 02:23:18 -0000
@@ -128,6 +128,28 @@ SKIP: {
     }
 }
 
+SKIP:
+{
+    eval { require Errno; defined &Errno::EMFILE }
+      or skip "Can't load Errno or EMFILE not defined", 1;
+    my @socks;
+    my $sock_limit = 1000; # don't consume every file in the system
+    # Default limits on various systems I have:
+    #  65536 - Linux
+    #    256 - Solaris
+    #    128 - NetBSD
+    #    256 - Cygwin
+    #    256 - darwin
+    while (@socks < $sock_limit) {
+        socket my $work, PF_INET, SOCK_STREAM, $tcp
+          or last;
+        push @socks, $work;
+    }
+    @socks == $sock_limit
+      and skip "Didn't run out of open handles", 1;
+    is(0+$!, Errno::EMFILE(), "check correct errno for too many files");
+}
+
 done_testing();
 
 my @child_tests;
Index: gnu/usr.bin/perl/t/lib/croak/op
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/lib/croak/op,v
retrieving revision 1.2
diff -u -p -r1.2 op
--- gnu/usr.bin/perl/t/lib/croak/op	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/lib/croak/op	14 Sep 2017 02:23:18 -0000
@@ -65,6 +65,54 @@ my main $f;
 EXPECT
 No such class field "c" in variable $f of type main at - line 3.
 ########
+# NAME Num-specific &= on @array
+use feature 'bitwise';
+@a &= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in numeric bitwise and (&) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME Num-specific |= on @array
+use feature 'bitwise';
+@a |= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in numeric bitwise or (|) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME Num-specific ^= on @array
+use feature 'bitwise';
+@a ^= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in numeric bitwise xor (^) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME &.= on @array
+use feature 'bitwise';
+@a &.= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in string bitwise and (&.) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME |.= on @array
+use feature 'bitwise';
+@a |.= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in string bitwise or (|.) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME ^.= on @array
+use feature 'bitwise';
+@a ^.= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in string bitwise xor (^.) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
 # NAME Can't declare conditional
 my($a?$b:$c)
 EXPECT
Index: gnu/usr.bin/perl/t/op/evalbytes.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/evalbytes.t,v
retrieving revision 1.2
diff -u -p -r1.2 evalbytes.t
--- gnu/usr.bin/perl/t/op/evalbytes.t	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/op/evalbytes.t	14 Sep 2017 02:23:20 -0000
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl'; require './charset_tools.pl';
 }
 
-plan(tests => 8);
+plan(tests => 9);
 
 {
     local $SIG{__WARN__} = sub {};
@@ -33,3 +33,7 @@ chop($upcode = "use utf8; $U_100" . chr 
 is evalbytes $upcode, chr 256, 'use utf8 within evalbytes on utf8 string';
 eval { evalbytes chr 256 };
 like $@, qr/Wide character/, 'evalbytes croaks on non-bytes';
+
+eval 'evalbytes S';
+ok 1, '[RT #129196] evalbytes S should not segfault';
+
Index: gnu/usr.bin/perl/t/op/gv.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/gv.t,v
retrieving revision 1.14
diff -u -p -r1.14 gv.t
--- gnu/usr.bin/perl/t/op/gv.t	5 Feb 2017 00:32:20 -0000	1.14
+++ gnu/usr.bin/perl/t/op/gv.t	14 Sep 2017 02:23:20 -0000
@@ -12,7 +12,7 @@ BEGIN {
 
 use warnings;
 
-plan(tests => 276 );
+plan(tests => 277 );
 
 # type coercion on assignment
 $foo = 'foo';
@@ -1153,6 +1153,22 @@ pass "No crash due to CvGV pointing to g
     is($c_125840, 1, 'RT #125840: $c=$d');
 }
 
+# [perl #128597] Crash when gp_free calls ckWARN_d
+# I am not sure this test even belongs in this file, as the crash was the
+# result of various features interacting.  But a call to ckWARN_d from
+# gv.c:gp_free triggered the crash, so this seems as good a place as any.
+# ‘die’ (or any abnormal scope exit) can cause the current cop to be freed,
+# if the subroutine containing the ‘die’ gets freed as a result.  That
+# causes PL_curcop to be set to NULL.  If a writable handle gets freed
+# while PL_curcop is NULL, then gp_free will call ckWARN_d while that con-
+# dition still holds, so ckWARN_d needs to know about PL_curcop possibly
+# being NULL.
+SKIP: {
+    skip_if_miniperl("No PerlIO::scalar on miniperl", 1);
+    runperl(prog => 'open my $fh, q|>|, \$buf;'
+                   .'my $sub = eval q|sub {exit 0}|; $sub->()');
+    is ($? & 127, 0,"[perl #128597] No crash when gp_free calls ckWARN_d");
+}
 
 __END__
 Perl
Index: gnu/usr.bin/perl/t/op/hexfp.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/hexfp.t,v
retrieving revision 1.1
diff -u -p -r1.1 hexfp.t
--- gnu/usr.bin/perl/t/op/hexfp.t	5 Feb 2017 00:32:20 -0000	1.1
+++ gnu/usr.bin/perl/t/op/hexfp.t	14 Sep 2017 02:23:20 -0000
@@ -10,7 +10,7 @@ use strict;
 
 use Config;
 
-plan(tests => 105);
+plan(tests => 109);
 
 # Test hexfloat literals.
 
@@ -241,6 +241,19 @@ SKIP:
         print "# skipping warning tests\n";
         skip "nv_preserves_uv_bits is $Config{nv_preserves_uv_bits} not 53", 26;
     }
+}
+
+# [perl #128919] limited exponent range in hex fp literal with long double
+SKIP: {
+    skip("non-80-bit-long-double", 4)
+        unless ($Config{uselongdouble} &&
+		($Config{nvsize} == 16 || $Config{nvsize} == 12) &&
+		($Config{longdblkind} == 3 ||
+		 $Config{longdblkind} == 4));
+    is(0x1p-1074,  4.94065645841246544e-324);
+    is(0x1p-1075,  2.47032822920623272e-324, '[perl #128919]');
+    is(0x1p-1076,  1.23516411460311636e-324);
+    is(0x1p-16445, 3.6451995318824746e-4951);
 }
 
 # sprintf %a/%A testing is done in sprintf2.t,
Index: gnu/usr.bin/perl/t/op/lex.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/lex.t,v
retrieving revision 1.3
diff -u -p -r1.3 lex.t
--- gnu/usr.bin/perl/t/op/lex.t	5 Feb 2017 00:32:20 -0000	1.3
+++ gnu/usr.bin/perl/t/op/lex.t	14 Sep 2017 02:23:20 -0000
@@ -7,7 +7,7 @@ use warnings;
 
 BEGIN { chdir 't' if -d 't'; require './test.pl'; }
 
-plan(tests => 25);
+plan(tests => 26);
 
 {
     no warnings 'deprecated';
@@ -129,7 +129,7 @@ fresh_perl_is(
   '* <null> ident'
 );
 SKIP: {
-    skip "Different output on EBCDIC (presumably)", 2 if $::IS_EBCDIC;
+    skip "Different output on EBCDIC (presumably)", 3 if $::IS_EBCDIC;
     fresh_perl_is(
       qq'"ab}"ax;&\0z\x8Ao}\x82x;', <<gibberish,
 Bareword found where operator expected at - line 1, near ""ab}"ax"
@@ -149,6 +149,13 @@ Unrecognized character \\x8A; marked by 
 gibberish
        { stderr => 1 },
       'gibberish containing &{+z} - used to crash [perl #123753]'
+    );
+    fresh_perl_is(
+      "\@{\327\n", <<\gibberisi,
+Unrecognized character \xD7; marked by <-- HERE after @{<-- HERE near column 3 at - line 1.
+gibberisi
+       { stderr => 1 },
+      '@ { \327 \n - used to garble output (or fail asan) [perl #128951]'
     );
 }
 
Index: gnu/usr.bin/perl/t/op/lop.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/lop.t,v
retrieving revision 1.1.1.4
diff -u -p -r1.1.1.4 lop.t
--- gnu/usr.bin/perl/t/op/lop.t	24 Mar 2014 14:59:10 -0000	1.1.1.4
+++ gnu/usr.bin/perl/t/op/lop.t	14 Sep 2017 02:23:20 -0000
@@ -10,7 +10,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan tests => 17;
+plan tests => 23;
 
 for my $i (undef, 0 .. 2, "", "0 but true") {
     my $true = 1;
@@ -56,3 +56,29 @@ is( $i, 10, 'negation precedence with &&
 ++$y;
 $i = !$x && !$x && !$x && $y;
 is( $i, 11, 'negation precedence with &&, multiple operands' );
+
+# [perl #127952]. This relates to OP_AND and OP_OR with a negated constant
+# on the lhs (either a negated bareword, or a negation of a do{} containing
+# a constant) and a negated non-foldable expression on the rhs. These cases
+# yielded 42 or "Bare" or "str" before the bug was fixed.
+{
+    $x = 42;
+
+    $i = !Bare || !$x;
+    is( $i, '', 'neg-bareword on lhs of || with non-foldable neg-true on rhs' );
+
+    $i = !Bare && !$x;
+    is( $i, '', 'neg-bareword on lhs of && with non-foldable neg-true on rhs' );
+
+    $i = do { !$x if !Bare };
+    is( $i, '', 'neg-bareword on rhs of modifier-if with non-foldable neg-true on lhs' );
+
+    $i = do { !$x unless !Bare };
+    is( $i, '', 'neg-bareword on rhs of modifier-unless with non-foldable neg-true on lhs' );
+
+    $i = !do { "str" } || !$x;
+    is( $i, '', 'neg-do-const on lhs of || with non-foldable neg-true on rhs' );
+
+    $i = !do { "str" } && !$x;
+    is( $i, '', 'neg-do-const on lhs of && with non-foldable neg-true on rhs' );
+}
Index: gnu/usr.bin/perl/t/op/method.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/method.t,v
retrieving revision 1.12
diff -u -p -r1.12 method.t
--- gnu/usr.bin/perl/t/op/method.t	5 Feb 2017 00:32:20 -0000	1.12
+++ gnu/usr.bin/perl/t/op/method.t	14 Sep 2017 02:23:20 -0000
@@ -13,7 +13,7 @@ BEGIN {
 use strict;
 no warnings 'once';
 
-plan(tests => 150);
+plan(tests => 151);
 
 @A::ISA = 'B';
 @B::ISA = 'C';
@@ -703,6 +703,10 @@ SKIP: {
     fresh_perl_is('Unknown->import() * Unknown->unimport(); print "ok\n"', "ok\n", {},
                   "check unknown import() methods don't corrupt the stack");
 }
+
+like runperl(prog => 'sub ub(){0} ub ub', stderr=>1), qr/Bareword found/,
+ '[perl #126482] Assert failure when mentioning a constant twice in a row';
+
 
 __END__
 #FF9900
Index: gnu/usr.bin/perl/t/op/require_errors.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/require_errors.t,v
retrieving revision 1.2
diff -u -p -r1.2 require_errors.t
--- gnu/usr.bin/perl/t/op/require_errors.t	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/op/require_errors.t	14 Sep 2017 02:23:21 -0000
@@ -8,7 +8,7 @@ BEGIN {
 use strict;
 use warnings;
 
-plan(tests => 17);
+plan(tests => 19);
 
 my $nonfile = tempfile();
 
@@ -134,3 +134,11 @@ like $@, qr/^Can't locate strict\.pm\\0i
 eval "require strict\0::invalid;";
 like $@, qr/^syntax error at \(eval \d+\) line 1/, 'parse error with \0 in barewords module names';
 
+# Refs and globs that stringify with embedded nulls
+# These crashed from 5.20 to 5.24 [perl #128182].
+eval { no warnings 'syscalls'; require eval "qr/\0/" };
+like $@, qr/^Can't locate \(\?\^:\\0\):/,
+    'require ref that stringifies with embedded null';
+eval { no strict; no warnings 'syscalls'; require *{"\0a"} };
+like $@, qr/^Can't locate \*main::\\0a:/,
+    'require ref that stringifies with embedded null';
Index: gnu/usr.bin/perl/t/op/reset.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/reset.t,v
retrieving revision 1.2
diff -u -p -r1.2 reset.t
--- gnu/usr.bin/perl/t/op/reset.t	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/op/reset.t	14 Sep 2017 02:23:21 -0000
@@ -7,7 +7,7 @@ BEGIN {
 }
 use strict;
 
-plan tests => 39;
+plan tests => 40;
 
 package aiieee;
 
@@ -138,6 +138,16 @@ for our $z (*_) {
     }
     is ref\$z, "GLOB", 'reset leaves real-globs-as-scalars as GLOBs';
     is $z, "*main::_", 'And the glob still has the right value';
+}
+
+package _128106 {
+    # Crash on non-globs in the stash.
+    sub u;    # stub without proto
+    sub v($); # proto stub
+    sub w{};  # as of 5.22, $::{w} == \&w
+    $::{x} = undef;
+    reset 'u-x';
+    ::ok (1, "no crash on non-globs in the stash");
 }
 
 # This used to crash under threaded builds, because pmops were remembering
Index: gnu/usr.bin/perl/t/op/sprintf2.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/sprintf2.t,v
retrieving revision 1.8
diff -u -p -r1.8 sprintf2.t
--- gnu/usr.bin/perl/t/op/sprintf2.t	5 Feb 2017 00:32:20 -0000	1.8
+++ gnu/usr.bin/perl/t/op/sprintf2.t	14 Sep 2017 02:23:21 -0000
@@ -21,6 +21,7 @@ print "# uvsize = $Config{uvsize}\n";
 print "# nvsize = $Config{nvsize}\n";
 print "# nv_preserves_uv_bits = $Config{nv_preserves_uv_bits}\n";
 print "# d_quad = $Config{d_quad}\n";
+print "# uselongdouble = " . ($Config{uselongdouble} // 'undef') . "\n";
 if ($Config{nvsize} == 8 &&
     (
      # IEEE-754 64-bit ("double precision"), the most common out there
@@ -219,7 +220,7 @@ if ($Config{nvsize} == 8 &&
 	[ '%a', '0.25',    '0x1p-2' ],
 	[ '%a', '0.75',    '0x1.8p-1' ],
 	[ '%a', '3.14',    '0x1.91eb851eb851eb851eb851eb85p+1' ],
-	[ '%a', '-1',      '-0x0p+0' ],
+	[ '%a', '-1',      '-0x1p+0' ],
 	[ '%a', '-3.14',   '-0x1.91eb851eb851eb851eb851eb85p+1' ],
 	[ '%a', '0.1',     '0x1.999999999999999999999999998p-4' ],
 	[ '%a', '1/7',     '0x1.249249249249249249249249248p-3' ],
@@ -262,8 +263,6 @@ if ($Config{nvsize} == 8 &&
     print "# no hexfloat tests\n";
 }
 
-plan tests => 1408 + ($Q ? 0 : 12) + @hexfloat + 12;
-
 use strict;
 use Config;
 
@@ -622,7 +621,7 @@ for my $t (@hexfloat) {
         ok($ok, "'$format' '$arg' -> '$result' cf '$expected'");
         next;
     }
-    unless ($ok) {
+    if (!$ok && $result =~ /\./ && $expected =~ /\./) {
         # It seems that there can be difference in the last bits:
         # [perl #122578]
         #      got "0x1.5bf0a8b14576ap+1"
@@ -721,6 +720,7 @@ SKIP: {
 SKIP: {
     # [perl #127183] Non-canonical hexadecimal floats are parsed prematurely
 
+    # IEEE 754 64-bit
     skip("nv_preserves_uv_bits is $Config{nv_preserves_uv_bits}, not 53", 3)
         unless $Config{nv_preserves_uv_bits} == 53;
 
@@ -749,3 +749,159 @@ SKIP: {
            "non-canonical form");
     }
 }
+
+# These are IEEE 754 64-bit subnormals (formerly known as denormals).
+# Keep these as strings so that non-IEEE-754 don't trip over them.
+my @subnormals = (
+    [ '1e-320', '%a', '0x1.fap-1064' ],
+    [ '1e-321', '%a', '0x1.94p-1067' ],
+    [ '1e-322', '%a', '0x1.4p-1070' ],
+    [ '1e-323', '%a', '0x1p-1073' ],
+    [ '1e-324', '%a', '0x0p+0' ],  # underflow
+    [ '3e-320', '%a', '0x1.7b8p-1062' ],
+    [ '3e-321', '%a', '0x1.2f8p-1065' ],
+    [ '3e-322', '%a', '0x1.e8p-1069' ],
+    [ '3e-323', '%a', '0x1.8p-1072' ],
+    [ '3e-324', '%a', '0x1p-1074' ], # the smallest possible value
+    [ '7e-320', '%a', '0x1.bacp-1061' ],
+    [ '7e-321', '%a', '0x1.624p-1064' ],
+    [ '7e-322', '%a', '0x1.1cp-1067' ],
+    [ '7e-323', '%a', '0x1.cp-1071' ],
+    [ '7e-324', '%a', '0x1p-1074' ], # the smallest possible value, again
+    [ '3e-320', '%.4a', '0x1.7b80p-1062' ],
+    [ '3e-321', '%.4a', '0x1.2f80p-1065' ],
+    [ '3e-322', '%.4a', '0x1.e800p-1069' ],
+    [ '3e-323', '%.4a', '0x1.8000p-1072' ],
+    [ '3e-324', '%.4a', '0x1.0000p-1074' ],
+    [ '3e-320', '%.1a', '0x1.8p-1062' ],
+    [ '3e-321', '%.1a', '0x1.3p-1065' ],
+    [ '3e-322', '%.1a', '0x1.ep-1069' ],
+    [ '3e-323', '%.1a', '0x1.8p-1072' ],
+    [ '3e-324', '%.1a', '0x1.0p-1074' ],
+    [ '0x1.fffffffffffffp-1022', '%a', '0x1.fffffffffffffp-1022' ],
+    [ '0x0.fffffffffffffp-1022', '%a', '0x1.ffffffffffffep-1023' ],
+    [ '0x0.7ffffffffffffp-1022', '%a', '0x1.ffffffffffffcp-1024' ],
+    [ '0x0.3ffffffffffffp-1022', '%a', '0x1.ffffffffffff8p-1025' ],
+    [ '0x0.1ffffffffffffp-1022', '%a', '0x1.ffffffffffffp-1026' ],
+    [ '0x0.0ffffffffffffp-1022', '%a', '0x1.fffffffffffep-1027' ],
+    );
+
+SKIP: {
+    # [rt.perl.org #128843]
+    skip("non-IEEE-754-non-64-bit", scalar @subnormals + 34)
+        unless ($Config{nvsize} == 8 &&
+		$Config{nv_preserves_uv_bits} == 53 &&
+		($Config{doublekind} == 3 ||
+		 $Config{doublekind} == 4));
+
+    for my $t (@subnormals) {
+	# Note that "0x1p+2" is not considered numeric,
+	# since neither is "0x12", hence the eval.
+        my $s = sprintf($t->[1], eval $t->[0]);
+        is($s, $t->[2], "subnormal @$t got $s");
+    }
+
+    # [rt.perl.org #128888]
+    is(sprintf("%a", 1.03125),   "0x1.08p+0");
+    is(sprintf("%.1a", 1.03125), "0x1.0p+0");
+    is(sprintf("%.0a", 1.03125), "0x1p+0", "[rt.perl.org #128888]");
+
+    # [rt.perl.org #128889]
+    is(sprintf("%.*a", -1, 1.03125), "0x1.08p+0", "[rt.perl.org #128889]");
+
+    # [rt.perl.org #128890]
+    is(sprintf("%a", 0x1.18p+0), "0x1.18p+0");
+    is(sprintf("%.1a", 0x1.08p+0), "0x1.0p+0");
+    is(sprintf("%.1a", 0x1.18p+0), "0x1.2p+0", "[rt.perl.org #128890]");
+    is(sprintf("%.1a", 0x1.28p+0), "0x1.2p+0");
+    is(sprintf("%.1a", 0x1.38p+0), "0x1.4p+0");
+    is(sprintf("%.1a", 0x1.48p+0), "0x1.4p+0");
+    is(sprintf("%.1a", 0x1.58p+0), "0x1.6p+0");
+    is(sprintf("%.1a", 0x1.68p+0), "0x1.6p+0");
+    is(sprintf("%.1a", 0x1.78p+0), "0x1.8p+0");
+    is(sprintf("%.1a", 0x1.88p+0), "0x1.8p+0");
+    is(sprintf("%.1a", 0x1.98p+0), "0x1.ap+0");
+    is(sprintf("%.1a", 0x1.a8p+0), "0x1.ap+0");
+    is(sprintf("%.1a", 0x1.b8p+0), "0x1.cp+0");
+    is(sprintf("%.1a", 0x1.c8p+0), "0x1.cp+0");
+    is(sprintf("%.1a", 0x1.d8p+0), "0x1.ep+0");
+    is(sprintf("%.1a", 0x1.e8p+0), "0x1.ep+0");
+    is(sprintf("%.1a", 0x1.f8p+0), "0x2.0p+0");
+
+    is(sprintf("%.1a", 0x1.10p+0), "0x1.1p+0");
+    is(sprintf("%.1a", 0x1.17p+0), "0x1.1p+0");
+    is(sprintf("%.1a", 0x1.19p+0), "0x1.2p+0");
+    is(sprintf("%.1a", 0x1.1fp+0), "0x1.2p+0");
+
+    is(sprintf("%.2a", 0x1.fffp+0), "0x2.00p+0");
+    is(sprintf("%.2a", 0xf.fffp+0), "0x2.00p+3");
+
+    # [rt.perl.org #128893]
+    is(sprintf("%020a", 1.5), "0x0000000000001.8p+0");
+    is(sprintf("%020a", -1.5), "-0x000000000001.8p+0", "[rt.perl.org #128893]");
+    is(sprintf("%+020a", 1.5), "+0x000000000001.8p+0", "[rt.perl.org #128893]");
+    is(sprintf("% 020a", 1.5), " 0x000000000001.8p+0", "[rt.perl.org #128893]");
+    is(sprintf("%20a", -1.5), "           -0x1.8p+0");
+    is(sprintf("%+20a", 1.5), "           +0x1.8p+0");
+    is(sprintf("% 20a", 1.5), "            0x1.8p+0");
+}
+
+# x86 80-bit long-double tests for
+# rt.perl.org #128843, #128888, #128889, #128890, #128893, #128909
+SKIP: {
+    skip("non-80-bit-long-double", 17)
+        unless ($Config{uselongdouble} &&
+		($Config{nvsize} == 16 || $Config{nvsize} == 12) &&
+		($Config{longdblkind} == 3 ||
+		 $Config{longdblkind} == 4));
+
+    {
+        # The last normal for this format.
+	is(sprintf("%a", eval '0x1p-16382'), "0x8p-16385", "[rt.perl.org #128843]");
+
+	# The subnormals cause "exponent underflow" warnings,
+        # but that is not why we are here.
+	local $SIG{__WARN__} = sub {
+	    die "$0: $_[0]" unless $_[0] =~ /exponent underflow/;
+	};
+
+	is(sprintf("%a", eval '0x1p-16383'), "0x4p-16382", "[rt.perl.org #128843]");
+	is(sprintf("%a", eval '0x1p-16384'), "0x2p-16382", "[rt.perl.org #128843]");
+	is(sprintf("%a", eval '0x1p-16385'), "0x1p-16382", "[rt.perl.org #128843]");
+	is(sprintf("%a", eval '0x1p-16386'), "0x8p-16386", "[rt.perl.org #128843]");
+	is(sprintf("%a", eval '0x1p-16387'), "0x4p-16386", "[rt.perl.org #128843]");
+    }
+    is(sprintf("%.0a", 1.03125), "0x8p-3", "[rt.perl.org #128888]");
+    is(sprintf("%.*a", -1, 1.03125), "0x8.4p-3", "[rt.perl.org #128889]");
+    is(sprintf("%.1a", 0x8.18p+0), "0x8.2p+0", "[rt.perl.org #128890]");
+    is(sprintf("%020a", -1.5), "-0x0000000000000cp-3", "[rt.perl.org #128893]");
+    is(sprintf("%+020a", 1.5), "+0x0000000000000cp-3", "[rt.perl.org #128893]");
+    is(sprintf("% 020a", 1.5), " 0x0000000000000cp-3", "[rt.perl.org #128893]");
+    is(sprintf("%a", 1.9999999999999999999), "0xf.fffffffffffffffp-3");
+    is(sprintf("%.3a", 1.9999999999999999999), "0x1.000p+1", "[rt.perl.org #128909]");
+    is(sprintf("%.2a", 1.9999999999999999999), "0x1.00p+1");
+    is(sprintf("%.1a", 1.9999999999999999999), "0x1.0p+1");
+    is(sprintf("%.0a", 1.9999999999999999999), "0x1p+1");
+}
+
+# quadmath tests for rt.perl.org #128843
+SKIP: {
+    skip "need quadmath", 7, unless $Config{usequadmath};
+
+    is(sprintf("%a", eval '0x1p-16382'), '0x1p-16382');  # last normal
+
+    local $SIG{__WARN__} = sub {
+        die "$0: $_[0]" unless $_[0] =~ /exponent underflow/;
+    };
+
+    is(sprintf("%a", eval '0x1p-16383'), '0x1p-16383');
+    is(sprintf("%a", eval '0x1p-16384'), '0x1p-16384');
+
+    is(sprintf("%a", eval '0x1p-16491'), '0x1p-16491');
+    is(sprintf("%a", eval '0x1p-16492'), '0x1p-16492');
+    is(sprintf("%a", eval '0x1p-16493'), '0x1p-16493'); # last denormal
+
+    is(sprintf("%a", eval '0x1p-16494'), '0x1p-16494'); # underflow
+}
+
+done_testing();
Index: gnu/usr.bin/perl/t/op/stash.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/stash.t,v
retrieving revision 1.2
diff -u -p -r1.2 stash.t
--- gnu/usr.bin/perl/t/op/stash.t	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/op/stash.t	14 Sep 2017 02:23:21 -0000
@@ -7,7 +7,7 @@ BEGIN {
 
 BEGIN { require "./test.pl"; }
 
-plan( tests => 51 );
+plan( tests => 52 );
 
 # Used to segfault (bug #15479)
 fresh_perl_like(
@@ -334,3 +334,10 @@ is runperl(
    ),
    "ok\n",
    '[perl #123847] no crash from *foo::=*bar::=*glob_with_hash';
+
+is runperl(
+    prog => '%h; *::::::=*h; delete $::{q|::|}; print qq|ok\n|',
+    stderr => 1,
+   ),
+   "ok\n",
+   '[perl #128086] no crash from assigning hash to *:::::: & deleting it';
Index: gnu/usr.bin/perl/t/op/svleak.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/svleak.t,v
retrieving revision 1.2
diff -u -p -r1.2 svleak.t
--- gnu/usr.bin/perl/t/op/svleak.t	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/op/svleak.t	14 Sep 2017 02:23:21 -0000
@@ -15,7 +15,7 @@ BEGIN {
 
 use Config;
 
-plan tests => 131;
+plan tests => 132;
 
 # run some code N times. If the number of SVs at the end of loop N is
 # greater than (N-1)*delta at the end of loop 1, we've got a leak
@@ -536,4 +536,14 @@ EOF
     sub h {}
 
     ::leak(5, 0, \&f, q{goto shouldn't leak @_});
+}
+
+# [perl #128313] POSIX warnings shouldn't leak
+{
+    no warnings 'experimental';
+    use re 'strict';
+    my $a = 'aaa';
+    my $b = 'aa';
+    sub f { $a =~ /[^.]+$b/; }
+    ::leak(2, 0, \&f, q{use re 'strict' shouldn't leak warning strings});
 }
Index: gnu/usr.bin/perl/t/op/tr.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/op/tr.t,v
retrieving revision 1.2
diff -u -p -r1.2 tr.t
--- gnu/usr.bin/perl/t/op/tr.t	5 Feb 2017 00:32:20 -0000	1.2
+++ gnu/usr.bin/perl/t/op/tr.t	14 Sep 2017 02:23:22 -0000
@@ -9,7 +9,7 @@ BEGIN {
     set_up_inc('../lib');
 }
 
-plan tests => 164;
+plan tests => 166;
 
 # Test this first before we extend the stack with other operations.
 # This caused an asan failure due to a bad write past the end of the stack.
@@ -641,6 +641,15 @@ for ("", nullrocow) {
 	ok(1, "tr///s on PL_Yes does not assert");
 	eval q{ *x =~ tr///d };
 	ok(1, "tr///d on glob does not assert");
+}
+
+{ # [perl #128734
+    my $string = "\x{00e0}";
+    $string =~ tr/\N{U+00e0}/A/;
+    is($string, "A", 'tr// of \N{U+...} works for upper-Latin1');
+    $string = "\x{00e1}";
+    $string =~ tr/\N{LATIN SMALL LETTER A WITH ACUTE}/A/;
+    is($string, "A", 'tr// of \N{name} works for upper-Latin1');
 }
 
 1;
Index: gnu/usr.bin/perl/t/re/re_tests
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/re/re_tests,v
retrieving revision 1.3
diff -u -p -r1.3 re_tests
--- gnu/usr.bin/perl/t/re/re_tests	5 Feb 2017 00:32:21 -0000	1.3
+++ gnu/usr.bin/perl/t/re/re_tests	14 Sep 2017 02:23:23 -0000
@@ -1966,6 +1966,8 @@ ab(?#Comment){2}c	abbc	y	$&	abbc
 .{1}??	-	c	-	Nested quantifiers
 .{1}?+	-	c	-	Nested quantifiers
 (?:.||)(?|)000000000@	000000000@	y	$&	000000000@		#  [perl #126405]
+aa$|a(?R)a|a	aaa	y	$&	aaa		# [perl 128420] recursive matches
+(?:\1|a)([bcd])\1(?:(?R)|e)\1	abbaccaddedcb	y	$&	abbaccaddedcb		# [perl 128420] recursive match with backreferences
 
 # Keep these lines at the end of the file
 # vim: softtabstop=0 noexpandtab
Index: gnu/usr.bin/perl/t/re/reg_mesg.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/re/reg_mesg.t,v
retrieving revision 1.3
diff -u -p -r1.3 reg_mesg.t
--- gnu/usr.bin/perl/t/re/reg_mesg.t	5 Feb 2017 00:32:21 -0000	1.3
+++ gnu/usr.bin/perl/t/re/reg_mesg.t	14 Sep 2017 02:23:23 -0000
@@ -220,8 +220,8 @@ my @death =
  '/(?[ \x{} ])/' => 'Number with no digits {#} m/(?[ \x{}{#} ])/',
  '/(?[ \cK + ) ])/' => 'Unexpected \')\' {#} m/(?[ \cK + ){#} ])/',
  '/(?[ \cK + ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ \cK + {#}])/',
- '/(?[ ( ) ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ ( ) {#}])/',
- '/(?[[0]+()+])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[[0]+()+{#}])/',
+ '/(?[ ( ) ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ ( ){#} ])/',
+ '/(?[[0]+()+])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[[0]+(){#}+])/',
  '/(?[ \p{foo} ])/' => 'Can\'t find Unicode property definition "foo" {#} m/(?[ \p{foo}{#} ])/',
  '/(?[ \p{ foo = bar } ])/' => 'Can\'t find Unicode property definition "foo = bar" {#} m/(?[ \p{ foo = bar }{#} ])/',
  '/(?[ \8 ])/' => 'Unrecognized escape \8 in character class {#} m/(?[ \8{#} ])/',
@@ -266,8 +266,9 @@ my @death =
  '/(?[\ -!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[\ -!{#}])/',    # [perl #126180]
  '/(?[\ ^!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[\ ^!{#}])/',    # [perl #126180]
  '/(?[\ |!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[\ |!{#}])/',    # [perl #126180]
- '/(?[()-!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[()-!{#}])/',    # [perl #126204]
+ '/(?[()-!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[(){#}-!])/',    # [perl #126204]
  '/(?[!()])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[!(){#}])/',      # [perl #126404]
+ '/(?<=/' => 'Sequence (?... not terminated {#} m/(?<={#}/',                        # [perl #128170]
 );
 
 # These are messages that are warnings when not strict; death under 'use re
Index: gnu/usr.bin/perl/t/re/regex_sets.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/re/regex_sets.t,v
retrieving revision 1.2
diff -u -p -r1.2 regex_sets.t
--- gnu/usr.bin/perl/t/re/regex_sets.t	5 Feb 2017 00:32:21 -0000	1.2
+++ gnu/usr.bin/perl/t/re/regex_sets.t	14 Sep 2017 02:23:23 -0000
@@ -182,6 +182,21 @@ for my $char ("٠", "٥", "٩") {
                     'qr/qr/(?[ ! ( ! (\w)])/');
 }
 
+{   # RT #129122
+    my $pat = '(?[ ( [ABC] - [B] ) + ( [abc] - [b] ) + [def] ])';
+    like("A", qr/$pat/, "'A' matches /$pat/");
+    unlike("B", qr/$pat/, "'B' doesn't match /$pat/");
+    like("C", qr/$pat/, "'C' matches /$pat/");
+    unlike("D", qr/$pat/, "'D' doesn't match /$pat/");
+    like("a", qr/$pat/, "'a' matches /$pat/");
+    unlike("b", qr/$pat/, "'b' doesn't match /$pat/");
+    like("c", qr/$pat/, "'c' matches /$pat/");
+    like("d", qr/$pat/, "'d' matches /$pat/");
+    like("e", qr/$pat/, "'e' matches /$pat/");
+    like("f", qr/$pat/, "'f' matches /$pat/");
+    unlike("g", qr/$pat/, "'g' doesn't match /$pat/");
+}
+
 done_testing();
 
 1;
Index: gnu/usr.bin/perl/t/run/switchx.aux
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/run/switchx.aux,v
retrieving revision 1.1.1.4
diff -u -p -r1.1.1.4 switchx.aux
--- gnu/usr.bin/perl/t/run/switchx.aux	24 Mar 2014 14:59:11 -0000	1.1.1.4
+++ gnu/usr.bin/perl/t/run/switchx.aux	14 Sep 2017 02:23:23 -0000
@@ -17,11 +17,12 @@ still not perl
 
 #!/some/path/that/leads/to/perl -l
 
-print "1..7";
+print "1..8";
+print "ok 1 - Correct line number" if __LINE__ == 4;
 if (-f 'run/switchx.aux') {
-    print "ok 1 - Test file exists";
+    print "ok 2 - Test file exists";
 }
-print "ok 2 - Test file utilized";
+print "ok 3 - Test file utilized";
 # other tests are in switchx2.aux
 
 __END__
Index: gnu/usr.bin/perl/t/run/switchx.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/run/switchx.t,v
retrieving revision 1.1.1.3
diff -u -p -r1.1.1.3 switchx.t
--- gnu/usr.bin/perl/t/run/switchx.t	25 Mar 2013 20:09:38 -0000	1.1.1.3
+++ gnu/usr.bin/perl/t/run/switchx.t	14 Sep 2017 02:23:23 -0000
@@ -15,9 +15,9 @@ print runperl( switches => ['-x'],
 # Test '-xdir'
 print runperl( switches => ['-x./run'],
                progfile => 'run/switchx2.aux',
-               args     => [ 3 ] );
+               args     => [ 4 ] );
 
-curr_test(5);
+curr_test(6);
 
 # Test the error message for not found
 like(runperl(switches => ['-x'], progfile => 'run/switchx3.aux', stderr => 1),
Index: gnu/usr.bin/perl/t/win32/runenv.t
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/t/win32/runenv.t,v
retrieving revision 1.2
diff -u -p -r1.2 runenv.t
--- gnu/usr.bin/perl/t/win32/runenv.t	5 Feb 2017 00:32:21 -0000	1.2
+++ gnu/usr.bin/perl/t/win32/runenv.t	14 Sep 2017 02:23:24 -0000
@@ -14,10 +14,10 @@ BEGIN {
     require Win32;
     ($::os_id, $::os_major) = ( Win32::GetOSVersion() )[ 4, 1 ];
     if ($::os_id == 2 and $::os_major == 6) {    # Vista, Server 2008 (incl R2), 7
-	$::tests = 43;
+	$::tests = 45;
     }
     else {
-	$::tests = 40;
+	$::tests = 42;
     }
 
     require './test.pl';
@@ -70,11 +70,12 @@ sub runperl_and_capture {
 }
 
 sub try {
-  my ($env, $args, $stdout, $stderr) = @_;
+  my ($env, $args, $stdout, $stderr, $name) = @_;
   my ($actual_stdout, $actual_stderr) = runperl_and_capture($env, $args);
+  $name ||= "";
   local $::Level = $::Level + 1;
-  is $actual_stdout, $stdout;
-  is $actual_stderr, $stderr;
+  is $actual_stdout, $stdout, "$name - stdout";
+  is $actual_stderr, $stderr, "$name - stderr";
 }
 
 #  PERL5OPT    Command-line options (switches).  Switches in
@@ -195,6 +196,16 @@ try({PERL5LIB => "foo",
     ['-e', '"print grep { $_ eq \"bar\" } @INC"'],
     '',
     '');
+
+{
+    # 131665
+    # crashes without the fix
+    my $longname = "X" x 2048;
+    try({ $longname => 1 },
+        [ '-e', '"print q/ok/"' ],
+        'ok', '',
+        'very long env var names' );
+}
 
 # Tests for S_incpush_use_sep():
 
Index: gnu/usr.bin/perl/vms/descrip_mms.template
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/vms/descrip_mms.template,v
retrieving revision 1.4
diff -u -p -r1.4 descrip_mms.template
--- gnu/usr.bin/perl/vms/descrip_mms.template	14 Aug 2017 13:48:48 -0000	1.4
+++ gnu/usr.bin/perl/vms/descrip_mms.template	14 Sep 2017 02:23:24 -0000
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(
 extra.pods : miniperl
 	@ @extra_pods.com
 
-PERLDELTA_CURRENT = [.pod]perl5242delta.pod
+PERLDELTA_CURRENT = [.pod]perl5243delta.pod
 
 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
 	Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
Index: gnu/usr.bin/perl/win32/GNUmakefile
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/win32/GNUmakefile,v
retrieving revision 1.4
diff -u -p -r1.4 GNUmakefile
--- gnu/usr.bin/perl/win32/GNUmakefile	14 Aug 2017 13:50:32 -0000	1.4
+++ gnu/usr.bin/perl/win32/GNUmakefile	14 Sep 2017 02:23:25 -0000
@@ -67,7 +67,7 @@ INST_TOP := $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER	:= \5.24.2
+#INST_VER	:= \5.24.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
 	copy ..\README.tw       ..\pod\perltw.pod
 	copy ..\README.vos      ..\pod\perlvos.pod
 	copy ..\README.win32    ..\pod\perlwin32.pod
-	copy ..\pod\perldelta.pod ..\pod\perl5242delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5243delta.pod
 	$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
 	$(MINIPERL) -I..\lib ..\autodoc.pl ..
 	$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1640,7 +1640,7 @@ distclean: realclean
 	-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
 	-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
 	-cd $(PODDIR) && del /f *.html *.bat roffitall \
-	    perl5242delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5243delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
 	    perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
 	    perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
 	    perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
Index: gnu/usr.bin/perl/win32/Makefile
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/win32/Makefile,v
retrieving revision 1.28
diff -u -p -r1.28 Makefile
--- gnu/usr.bin/perl/win32/Makefile	14 Aug 2017 13:50:32 -0000	1.28
+++ gnu/usr.bin/perl/win32/Makefile	14 Sep 2017 02:23:25 -0000
@@ -38,7 +38,7 @@ INST_TOP	= $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER	= \5.24.2
+#INST_VER	= \5.24.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1215,7 +1215,7 @@ utils: $(PERLEXE) ..\utils\Makefile
 	copy ..\README.tw       ..\pod\perltw.pod
 	copy ..\README.vos      ..\pod\perlvos.pod
 	copy ..\README.win32    ..\pod\perlwin32.pod
-	copy ..\pod\perldelta.pod ..\pod\perl5242delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5243delta.pod
 	cd ..\win32
 	$(PERLEXE) $(PL2BAT) $(UTILS)
 	$(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1314,7 +1314,7 @@ distclean: realclean
 	-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
 	-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
 	-cd $(PODDIR) && del /f *.html *.bat roffitall \
-	    perl5242delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5243delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
 	    perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
 	    perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
 	    perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
Index: gnu/usr.bin/perl/win32/makefile.mk
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/win32/makefile.mk,v
retrieving revision 1.28
diff -u -p -r1.28 makefile.mk
--- gnu/usr.bin/perl/win32/makefile.mk	14 Aug 2017 13:50:32 -0000	1.28
+++ gnu/usr.bin/perl/win32/makefile.mk	14 Sep 2017 02:23:26 -0000
@@ -44,7 +44,7 @@ INST_TOP	*= $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER	*= \5.24.2
+#INST_VER	*= \5.24.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
 	copy ..\README.tw       ..\pod\perltw.pod
 	copy ..\README.vos      ..\pod\perlvos.pod
 	copy ..\README.win32    ..\pod\perlwin32.pod
-	copy ..\pod\perldelta.pod ..\pod\perl5242delta.pod
+	copy ..\pod\perldelta.pod ..\pod\perl5243delta.pod
 	$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
 	$(MINIPERL) -I..\lib ..\autodoc.pl ..
 	$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1609,7 +1609,7 @@ distclean: realclean
 	-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
 	-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
 	-cd $(PODDIR) && del /f *.html *.bat roffitall \
-	    perl5242delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+	    perl5243delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
 	    perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
 	    perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
 	    perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
Index: gnu/usr.bin/perl/win32/perlhost.h
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/win32/perlhost.h,v
retrieving revision 1.2
diff -u -p -r1.2 perlhost.h
--- gnu/usr.bin/perl/win32/perlhost.h	5 Feb 2017 00:32:22 -0000	1.2
+++ gnu/usr.bin/perl/win32/perlhost.h	14 Sep 2017 02:23:26 -0000
@@ -2177,17 +2177,11 @@ compare(const void *arg1, const void *ar
 void
 CPerlHost::Add(LPCSTR lpStr)
 {
-    char szBuffer[1024];
     LPSTR *lpPtr;
-    int index, length = strlen(lpStr)+1;
-
-    for(index = 0; lpStr[index] != '\0' && lpStr[index] != '='; ++index)
-	szBuffer[index] = lpStr[index];
-
-    szBuffer[index] = '\0';
+    STRLEN length = strlen(lpStr)+1;
 
     // replacing ?
-    lpPtr = Lookup(szBuffer);
+    lpPtr = Lookup(lpStr);
     if (lpPtr != NULL) {
 	// must allocate things via host memory allocation functions 
 	// rather than perl's Renew() et al, as the perl interpreter
Index: gnu/usr.bin/perl/win32/pod.mak
===================================================================
RCS file: /cvs/src/gnu/usr.bin/perl/win32/pod.mak,v
retrieving revision 1.19
diff -u -p -r1.19 pod.mak
--- gnu/usr.bin/perl/win32/pod.mak	14 Aug 2017 13:48:48 -0000	1.19
+++ gnu/usr.bin/perl/win32/pod.mak	14 Sep 2017 02:23:26 -0000
@@ -44,9 +44,11 @@ POD = perl.pod	\
 	perl5221delta.pod	\
 	perl5222delta.pod	\
 	perl5223delta.pod	\
+	perl5224delta.pod	\
 	perl5240delta.pod	\
 	perl5241delta.pod	\
 	perl5242delta.pod	\
+	perl5243delta.pod	\
 	perl561delta.pod	\
 	perl56delta.pod	\
 	perl581delta.pod	\
@@ -185,9 +187,11 @@ MAN = perl.man	\
 	perl5221delta.man	\
 	perl5222delta.man	\
 	perl5223delta.man	\
+	perl5224delta.man	\
 	perl5240delta.man	\
 	perl5241delta.man	\
 	perl5242delta.man	\
+	perl5243delta.man	\
 	perl561delta.man	\
 	perl56delta.man	\
 	perl581delta.man	\
@@ -326,9 +330,11 @@ HTML = perl.html	\
 	perl5221delta.html	\
 	perl5222delta.html	\
 	perl5223delta.html	\
+	perl5224delta.html	\
 	perl5240delta.html	\
 	perl5241delta.html	\
 	perl5242delta.html	\
+	perl5243delta.html	\
 	perl561delta.html	\
 	perl56delta.html	\
 	perl581delta.html	\
@@ -467,9 +473,11 @@ TEX = perl.tex	\
 	perl5221delta.tex	\
 	perl5222delta.tex	\
 	perl5223delta.tex	\
+	perl5224delta.tex	\
 	perl5240delta.tex	\
 	perl5241delta.tex	\
 	perl5242delta.tex	\
+	perl5243delta.tex	\
 	perl561delta.tex	\
 	perl56delta.tex	\
 	perl581delta.tex	\
