GCC with `-Wformat-security -Werror=format-security` hardening options enabled
by default rejects some codes in libcpp. This patch fixes them.

--- gcc-8.3.0/libcpp/expr.cc.bak	2020-09-11 15:44:45.770000000 +0900
+++ gcc-8.3.0/libcpp/expr.cc	2020-09-11 15:46:22.370000000 +0900
@@ -794,10 +794,10 @@

 	  if (CPP_OPTION (pfile, c99))
             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
-				   0, message);
+				   0, "%s", message);
           else
             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
-				      virtual_location, 0, message);
+				      virtual_location, 0, "%s", message);
         }

       result |= CPP_N_INTEGER;
--- gcc-8.3.0/libcpp/macro.cc.bak	2020-09-11 16:01:42.550000000 +0900
+++ gcc-8.3.0/libcpp/macro.cc	2020-09-11 16:03:47.850000000 +0900
@@ -160,7 +160,7 @@
 	if (m_state == 2 && token->type == CPP_PASTE)
 	  {
 	    cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc,
-			  vaopt_paste_error);
+			  "%s", vaopt_paste_error);
 	    return ERROR;
 	  }
 	/* Advance states before further considering this token, in
@@ -189,7 +189,7 @@
 		if (was_paste)
 		  {
 		    cpp_error_at (m_pfile, CPP_DL_ERROR, token->src_loc,
-				  vaopt_paste_error);
+				  "%s", vaopt_paste_error);
 		    return ERROR;
 		  }

@@ -3361,7 +3361,7 @@
 	     function-like macros, but not at the end.  */
 	  if (following_paste_op)
 	    {
-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
+	      cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg);
 	      goto out;
 	    }
 	  if (!vaopt_tracker.completed ())
@@ -3374,7 +3374,7 @@
 	     function-like macros, but not at the beginning.  */
 	  if (macro->count == 1)
 	    {
-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
+	      cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg);
 	      goto out;
 	    }

