diff -Naur elfutils-0.161-ori/lib/color.c elfutils-0.161/lib/color.c
--- elfutils-0.161-ori/lib/color.c	2014-11-07 12:47:47.000000000 -0500
+++ elfutils-0.161/lib/color.c	2016-10-05 14:26:23.114663871 -0400
@@ -130,9 +130,9 @@
   - 'always', 'yes', 'force'\n\
   - 'never', 'no', 'none'\n\
   - 'auto', 'tty', 'if-tty'\n"),
-		     program_invocation_short_name, arg);
+		     (char*)program_invocation_short_name, arg);
 	      argp_help (&color_argp, stderr, ARGP_HELP_SEE,
-			 program_invocation_short_name);
+			 (char*)program_invocation_short_name);
 	      exit (EXIT_FAILURE);
 	    }
 	}
diff -Naur elfutils-0.161-ori/src/ar.c elfutils-0.161/src/ar.c
--- elfutils-0.161-ori/src/ar.c	2014-05-20 10:24:26.000000000 -0400
+++ elfutils-0.161/src/ar.c	2016-10-05 14:27:51.706170874 -0400
@@ -190,7 +190,7 @@
 	  error (0, 0, gettext ("\
 MEMBER parameter required for 'a', 'b', and 'i' modifiers"));
 	  argp_help (&argp, stderr, ARGP_HELP_USAGE | ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (EXIT_FAILURE);
 	}
 
@@ -210,7 +210,7 @@
 	{
 	  error (0, 0, gettext ("COUNT parameter required"));
 	  argp_help (&argp, stderr, ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (EXIT_FAILURE);
 	}
 
@@ -234,7 +234,7 @@
   if (remaining == argc)
     {
       error (0, 0, gettext ("archive name required"));
-      argp_help (&argp, stderr, ARGP_HELP_SEE, program_invocation_short_name);
+      argp_help (&argp, stderr, ARGP_HELP_SEE, (char*)program_invocation_short_name);
       exit (EXIT_FAILURE);
     }
 
@@ -248,7 +248,7 @@
     case oper_none:
       error (0, 0, gettext ("command option required"));
       argp_help (&argp, stderr, ARGP_HELP_STD_ERR,
-		 program_invocation_short_name);
+		 (char*)program_invocation_short_name);
       status = 1;
       break;
 
@@ -313,7 +313,7 @@
 	{
 	  error (0, 0, gettext ("More than one operation specified"));
 	  argp_help (&argp, stderr, ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (EXIT_FAILURE);
 	}
 
diff -Naur elfutils-0.161-ori/src/elfcmp.c elfutils-0.161/src/elfcmp.c
--- elfutils-0.161-ori/src/elfcmp.c	2014-12-17 16:34:46.000000000 -0500
+++ elfutils-0.161/src/elfcmp.c	2016-10-05 14:27:08.602410754 -0400
@@ -141,7 +141,7 @@
   if (unlikely (remaining + 2 != argc))
     {
       fputs (gettext ("Invalid number of parameters.\n"), stderr);
-      argp_help (&argp, stderr, ARGP_HELP_SEE, program_invocation_short_name);
+      argp_help (&argp, stderr, ARGP_HELP_SEE, (char*)program_invocation_short_name);
       exit (1);
     }
 
@@ -695,7 +695,7 @@
 		   gettext ("Invalid value '%s' for --gaps parameter."),
 		   arg);
 	  argp_help (&argp, stderr, ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (1);
 	}
       break;
diff -Naur elfutils-0.161-ori/src/elflint.c elfutils-0.161/src/elflint.c
--- elfutils-0.161-ori/src/elflint.c	2014-12-17 16:34:46.000000000 -0500
+++ elfutils-0.161/src/elflint.c	2016-10-05 14:26:37.214585415 -0400
@@ -217,7 +217,7 @@
 
     case ARGP_KEY_NO_ARGS:
       fputs (gettext ("Missing file name.\n"), stderr);
-      argp_help (&argp, stderr, ARGP_HELP_SEE, program_invocation_short_name);
+      argp_help (&argp, stderr, ARGP_HELP_SEE, (char*)program_invocation_short_name);
       exit (EXIT_FAILURE);
 
     default:
diff -Naur elfutils-0.161-ori/src/objdump.c elfutils-0.161/src/objdump.c
--- elfutils-0.161-ori/src/objdump.c	2014-12-16 06:57:03.000000000 -0500
+++ elfutils-0.161/src/objdump.c	2016-10-05 14:26:52.434500723 -0400
@@ -235,7 +235,7 @@
 	{
 	  fputs (gettext ("No operation specified.\n"), stderr);
 	  argp_help (&argp, stderr, ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (EXIT_FAILURE);
 	}
 
diff -Naur elfutils-0.161-ori/src/readelf.c elfutils-0.161/src/readelf.c
--- elfutils-0.161-ori/src/readelf.c	2014-12-19 12:06:04.000000000 -0500
+++ elfutils-0.161/src/readelf.c	2016-10-05 14:27:24.214323874 -0400
@@ -441,7 +441,7 @@
 	  fprintf (stderr, gettext ("Unknown DWARF debug section `%s'.\n"),
 		   arg);
 	  argp_help (&argp, stderr, ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (1);
 	}
       any_control_option = true;
@@ -473,7 +473,7 @@
 	  fputs (gettext ("No operation specified.\n"), stderr);
 	do_argp_help:
 	  argp_help (&argp, stderr, ARGP_HELP_SEE,
-		     program_invocation_short_name);
+		     (char*)program_invocation_short_name);
 	  exit (EXIT_FAILURE);
 	}
       break;
