*** a/src/bin/pg_controldata/pg_controldata.c
--- b/src/bin/pg_controldata/pg_controldata.c
***************
*** 24,29 ****
--- 24,30 ----
  #include <fcntl.h>
  
  #include "access/xlog.h"
+ #include "access/xlog_internal.h"
  #include "catalog/pg_control.h"
  
  
***************
*** 101,106 **** main(int argc, char *argv[])
--- 102,110 ----
  	char		sysident_str[32];
  	const char *strftime_fmt = "%c";
  	const char *progname;
+ 	uint32	log;
+ 	uint32	seg;
+ 	char		xlogfilename[MAXFNAMELEN];
  
  	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_controldata"));
  
***************
*** 177,182 **** main(int argc, char *argv[])
--- 181,193 ----
  			 localtime(&time_tmp));
  
  	/*
+ 	 * Calculate the WAL file name containing the latest checkpoint's REDO
+ 	 * record.
+ 	 */
+ 	XLByteToSeg(ControlFile.checkPointCopy.redo, log, seg);
+ 	XLogFileName(xlogfilename, ControlFile.checkPointCopy.ThisTimeLineID, log, seg);
+ 
+ 	/*
  	 * Format system_identifier separately to keep platform-dependent format
  	 * code out of the translatable message string.
  	 */
***************
*** 204,212 **** main(int argc, char *argv[])
  	printf(_("Prior checkpoint location:            %X/%X\n"),
  		   ControlFile.prevCheckPoint.xlogid,
  		   ControlFile.prevCheckPoint.xrecoff);
! 	printf(_("Latest checkpoint's REDO location:    %X/%X\n"),
  		   ControlFile.checkPointCopy.redo.xlogid,
! 		   ControlFile.checkPointCopy.redo.xrecoff);
  	printf(_("Latest checkpoint's TimeLineID:       %u\n"),
  		   ControlFile.checkPointCopy.ThisTimeLineID);
  	printf(_("Latest checkpoint's full_page_writes: %s\n"),
--- 215,224 ----
  	printf(_("Prior checkpoint location:            %X/%X\n"),
  		   ControlFile.prevCheckPoint.xlogid,
  		   ControlFile.prevCheckPoint.xrecoff);
! 	printf(_("Latest checkpoint's REDO location:    %X/%X (file %s)\n"),
  		   ControlFile.checkPointCopy.redo.xlogid,
! 		   ControlFile.checkPointCopy.redo.xrecoff,
! 		   xlogfilename);
  	printf(_("Latest checkpoint's TimeLineID:       %u\n"),
  		   ControlFile.checkPointCopy.ThisTimeLineID);
  	printf(_("Latest checkpoint's full_page_writes: %s\n"),
