Blob Blame History Raw
commit b76503511d7689d2d0cebbe241df3789088488e0
Author: Andrew Cagney <cagney@gnu.org>
Date:   Tue Apr 12 16:10:01 2016 -0400

    Fix compiler warnings.

diff --git a/frysk-common/Makefile.gen.sh b/frysk-common/Makefile.gen.sh
index c83a85e..d5d7e74 100755
--- a/frysk-common/Makefile.gen.sh
+++ b/frysk-common/Makefile.gen.sh
@@ -1,8 +1,8 @@
 #!/bin/sh -eu
 # This file is part of the program FRYSK.
 #
-# Copyright 2016, Andrew Cagney
 # Copyright 2005, 2006, 2007, 2008, Red Hat Inc.
+# Copyright 2016, Andrew Cagney
 #
 # FRYSK is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
diff --git a/frysk-common/Makefile.rules b/frysk-common/Makefile.rules
index 92e4c3d..9ba8775 100644
--- a/frysk-common/Makefile.rules
+++ b/frysk-common/Makefile.rules
@@ -321,9 +321,12 @@ SUFFIXES += .xml-in
 # When compiling the test runner be sure to include the current
 # directories classes.
 
-TestRunner.jar: TestRunner.java
+TestRunner.jar: TestRunner.java $(GEN_DIRNAME).jar
 	rm -f $@.tmp $*.class
-	$(JAVAC) `echo $(JAVACFLAGS) | sed -e 's/-classpath /-classpath $(GEN_DIRNAME).jar:/'` $*.java
+	$(JAVAC) $(JAVACFLAGS) $(WERROR_JAVACFLAGS) \
+		$(if $(SOURCEPATH),-sourcepath $(SOURCEPATH)) \
+		-classpath $(GEN_DIRNAME).jar$(if $(CLASSPATH),:$(CLASSPATH)) \
+		$*.java
 	$(JAR) cf $@.tmp $*.class
 	rm -f $*.class
 	mv $@.tmp $@
@@ -522,11 +525,10 @@ SUFFIXES += .antlred .g
 		echo "Parsing compiler warnings from $$b..." ; \
 		rm -f $$t/*.antlr-fixes ; \
 	        rm -rf $$t/classes ; mkdir -p $$t/classes ; \
-		( $(JAVAC) \
+		( $(JAVAC) $(JAVACFLAGS) $(WERROR_JAVACFLAGS) \
                         -d $$t/classes \
-			-warn:+semicolon \
-			-sourcepath  $$t:$(SOURCEPATH) \
-			-classpath $(CLASSPATH) \
+			-sourcepath $$t$(if $(SOURCEPATH),:$(SOURCEPATH)) \
+			$(if $(CLASSPATH),-classpath $(CLASSPATH)) \
 			$$t/$$d/$$b.java \
 			2>&1 || true ) | ( \
 		    cd $$t ; \
@@ -647,7 +649,10 @@ files-java.list: files.list
 ${GEN_DIRNAME}.jar: files-java.list $(GEN_CLASSPATH)
 	rm -rf $(JAVAROOT)
 	mkdir -p $(JAVAROOT)
-	$(JAVAC) -d $(JAVAROOT) $(JAVACFLAGS) \
+	$(JAVAC) $(JAVACFLAGS) $(WERROR_JAVACFLAGS) \
+		-d $(JAVAROOT) \
+		$(if $(SOURCEPATH),-sourcepath $(SOURCEPATH)) \
+		$(if $(CLASSPATH),-classpath $(CLASSPATH)) \
 		@$(top_builddir)/files-java.list
 	cd $(JAVAROOT) ; \
 		find * -name '*.class' -print | sort > classes.list ; \
diff --git a/frysk-common/frysk-common.ac b/frysk-common/frysk-common.ac
index a112cfb..c6893e5 100644
--- a/frysk-common/frysk-common.ac
+++ b/frysk-common/frysk-common.ac
@@ -2,6 +2,7 @@
 #
 # Copyright 2005, 2006, 2007, 2008, Red Hat Inc.
 # Copyright 2007 Oracle Corporation.
+# Copyright 2016, Andrew Cagney
 #
 # FRYSK is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -75,37 +76,6 @@ fi
 AM_PROG_AS
 AM_PROG_GCJ
 
-# Check for the ECJ compiler.
-
-AC_MSG_CHECKING([ecj.jar])
-ECJ_JAR=${ECJ_JAR:-/usr/share/java/eclipse-ecj.jar}
-AC_SUBST([ECJ_JAR])
-AC_MSG_RESULT(${ECJ_JAR})
-
-
-# autoconf doesn't yet know about JAVAC, so define it ourselves.
-
-AC_LANG_DEFINE([Java], [java], [JAVA], [JAVAC], [],
-[ac_ext=java
-ac_objext=class
-ac_compile='$JAVAC $JAVACFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
-ac_java_werror_flag=no
-])
-AC_DEFUN([AC_LANG_COMPILER(Java)], [])
-AU_DEFUN([AC_LANG_JAVAC], [AC_LANG(Java)])
-AC_LANG(Java)
-
-JAVAC='$(JAVA) -cp $(ECJ_JAR):$(CLASSPATH) org.eclipse.jdt.internal.compiler.batch.Main -1.4'
-JAVACFLAGS='-warn:+semicolon $(if $(SOURCEPATH),-sourcepath $(SOURCEPATH)) $(if $(CLASSPATH),-classpath $(CLASSPATH))'
-AC_SUBST([JAVAC])
-AC_SUBST([JAVACFLAGS])
-
-JAVA="${JAVA:-java}"
-AC_SUBST([JAVA])
-
-AC_CHECK_PROGS([JAR], [fastjar4 fastjar jar], [fastjar])
-# Check for the availablity of fig2dev
-
 AC_PATH_PROG(FIG2DEV, fig2dev)
 test "x$FIG2DEV" = x && AC_MSG_ERROR([no fig2dev binary is found in \$(PATH)])
 
@@ -169,3 +139,30 @@ AC_SUBST([lib64dir])
 FRYSK_DO_ARCH32_TEST
 FRYSK_WERROR
 FRYSK_COVERAGE
+
+# autoconf doesn't yet know about JAVAC, so define it ourselves.
+
+AC_LANG_DEFINE([Java], [java], [JAVA], [JAVAC], [],
+[ac_ext=java
+ac_objext=class
+ac_compile='$JAVAC $JAVACFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
+ac_java_werror_flag=no
+])
+AC_DEFUN([AC_LANG_COMPILER(Java)], [])
+AU_DEFUN([AC_LANG_JAVAC], [AC_LANG(Java)])
+AC_LANG(Java)
+
+JAVAC='javac -source 1.4'
+AS_IF([test x"$enable_werror" = xyes],
+      [WERROR_JAVACFLAGS='-Werror -Xlint:all -Xlint:-options -Xlint:-cast'],
+      [WERROR_JAVACFLAGS=])
+AC_SUBST([JAVAC])
+AC_SUBST([JAVACFLAGS])
+AC_SUBST([WERROR_JAVACFLAGS])
+
+JAVA="${JAVA:-java}"
+AC_SUBST([JAVA])
+
+AC_CHECK_PROGS([JAR], [fastjar4 fastjar jar], [fastjar])
+# Check for the availablity of fig2dev
+
diff --git a/frysk-core/frysk/debuginfo/MemoryPiece.java b/frysk-core/frysk/debuginfo/MemoryPiece.java
index 122b834..ddbccd9 100644
--- a/frysk-core/frysk/debuginfo/MemoryPiece.java
+++ b/frysk-core/frysk/debuginfo/MemoryPiece.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -131,5 +132,9 @@ public class MemoryPiece
     {
 	return (this.memory == ((MemoryPiece)p).memory 
 		&& this.size == ((MemoryPiece)p).size);
-    }	
-}
\ No newline at end of file
+    }
+
+    public int hashCode() {
+	return (int) this.memory;
+    }
+}
diff --git a/frysk-core/frysk/debuginfo/RegisterPiece.java b/frysk-core/frysk/debuginfo/RegisterPiece.java
index 376d7cf..fc3c90e 100644
--- a/frysk-core/frysk/debuginfo/RegisterPiece.java
+++ b/frysk-core/frysk/debuginfo/RegisterPiece.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -90,7 +91,11 @@ public class RegisterPiece
 	return ( this.size == ((RegisterPiece)p).size 
 		&& register.equals(((RegisterPiece)p).register) );
     }	
-    
+
+    public int hashCode() {
+	return this.register.hashCode();
+    }
+
     protected void toPrint(PrintWriter writer)
     {
 	writer.print("Register ");
diff --git a/frysk-core/frysk/debuginfo/UnavailablePiece.java b/frysk-core/frysk/debuginfo/UnavailablePiece.java
index 00bfe81..506f5ce 100644
--- a/frysk-core/frysk/debuginfo/UnavailablePiece.java
+++ b/frysk-core/frysk/debuginfo/UnavailablePiece.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -57,7 +58,11 @@ public class UnavailablePiece
     {
 	return (this.size == ((UnavailablePiece)p).size);
     }
-    
+
+    public int hashCode() {
+	return (int) this.size;
+    }
+
     protected Piece slice (long offset, long length)
     {
 	return new UnavailablePiece(length);
@@ -80,4 +85,4 @@ public class UnavailablePiece
 	writer.print(size);
 	writer.print(" byte(s)");
     }
-}
\ No newline at end of file
+}
diff --git a/frysk-core/frysk/ftrace/MemoryMapping.java b/frysk-core/frysk/ftrace/MemoryMapping.java
index 817c9e9..2c19268 100644
--- a/frysk-core/frysk/ftrace/MemoryMapping.java
+++ b/frysk-core/frysk/ftrace/MemoryMapping.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, 2008, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -84,6 +85,10 @@ class MemoryMapping
 		&& permExecute == p.permExecute;
 	}
 
+	public int hashCode() {
+	    return (int)this.addressLow;
+	}
+
 	public String toString()
 	{
 	    return "<0x" + Long.toHexString(addressLow)
diff --git a/frysk-core/frysk/hpd/ProcData.java b/frysk-core/frysk/hpd/ProcData.java
index ad06be8..177d8ee 100644
--- a/frysk-core/frysk/hpd/ProcData.java
+++ b/frysk-core/frysk/hpd/ProcData.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -83,5 +84,7 @@ class ProcData
 	  return true;
         }
 	
-
+    public int hashCode() {
+	return id;
+    }
 }
diff --git a/frysk-core/frysk/hpd/ProcTasks.java b/frysk-core/frysk/hpd/ProcTasks.java
index 1206c2e..51290bd 100644
--- a/frysk-core/frysk/hpd/ProcTasks.java
+++ b/frysk-core/frysk/hpd/ProcTasks.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -150,5 +151,7 @@ class ProcTasks
 	  return true;
         }
 	
-	
+    public int hashCode() {
+	return this.proc.hashCode();
+    }
 }
diff --git a/frysk-core/frysk/isa/syscalls/Syscall.java b/frysk-core/frysk/isa/syscalls/Syscall.java
index 8542e8e..22da117 100644
--- a/frysk-core/frysk/isa/syscalls/Syscall.java
+++ b/frysk-core/frysk/isa/syscalls/Syscall.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -224,8 +225,9 @@ public abstract class Syscall {
 	case 'i':
 	    if ((int)retVal < 0)
 		return "-1 ERRNO=" + (-(int)retVal);
+	    else
+		return "" + retVal;		
 
-	    // fall-through
 	default:
 	    return "" + retVal;
 	}
diff --git a/frysk-core/frysk/pkglibdir/funit-complex-struct.cxx b/frysk-core/frysk/pkglibdir/funit-complex-struct.cxx
index d535ac9..32b7744 100644
--- a/frysk-core/frysk/pkglibdir/funit-complex-struct.cxx
+++ b/frysk-core/frysk/pkglibdir/funit-complex-struct.cxx
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -37,6 +38,8 @@
 // version and license this file solely under the GPL without
 // exception.
 
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+
 struct complexStruct {
 	int x;
 	int y;
diff --git a/frysk-core/frysk/pkglibdir/funit-simple-struct.cxx b/frysk-core/frysk/pkglibdir/funit-simple-struct.cxx
index 882ab72..98a7e0e 100644
--- a/frysk-core/frysk/pkglibdir/funit-simple-struct.cxx
+++ b/frysk-core/frysk/pkglibdir/funit-simple-struct.cxx
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -37,6 +38,8 @@
 // version and license this file solely under the GPL without
 // exception.
 
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+
 struct simpleStruct {
 	int x;
 	int y;
diff --git a/frysk-core/frysk/pkglibdir/hpd-c.c b/frysk-core/frysk/pkglibdir/hpd-c.c
index e66cdb8..91d194c 100644
--- a/frysk-core/frysk/pkglibdir/hpd-c.c
+++ b/frysk-core/frysk/pkglibdir/hpd-c.c
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, 2006, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -37,6 +38,8 @@
 // version and license this file solely under the GPL without
 // exception.
 
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdarg.h>
diff --git a/frysk-core/frysk/rt/UpdatingDisplayValue.java b/frysk-core/frysk/rt/UpdatingDisplayValue.java
index 601ad6a..c4ca406 100644
--- a/frysk-core/frysk/rt/UpdatingDisplayValue.java
+++ b/frysk-core/frysk/rt/UpdatingDisplayValue.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, 2008, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -190,6 +191,10 @@ public class UpdatingDisplayValue extends DisplayValue {
 	return true;
     }
 
+    public int hashCode() {
+	return 0; /* unhashable? */
+    }
+
     /**
      * Disables the display, stopping all notification of changes to the
      * underlying expression.
diff --git a/frysk-sys/frysk/junit/KernelVersion.java b/frysk-sys/frysk/junit/KernelVersion.java
index c79241f..4e13c65 100644
--- a/frysk-sys/frysk/junit/KernelVersion.java
+++ b/frysk-sys/frysk/junit/KernelVersion.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -154,7 +155,11 @@ public class KernelVersion
     else
       return false;
   }
-  
+
+    public int hashCode() {
+	return this.version; /* anything */
+    }
+
   /**
    * Tests if this kernel version is more recent than kv.
    * @param kv the KernelVersion to test against.
diff --git a/frysk-sys/frysk/sys/termios/Speed.java b/frysk-sys/frysk/sys/termios/Speed.java
index e0ac0f7..a9ab62d 100644
--- a/frysk-sys/frysk/sys/termios/Speed.java
+++ b/frysk-sys/frysk/sys/termios/Speed.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, 2008, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -56,6 +57,9 @@ public class Speed implements Comparable {
     public boolean equals(Object o) {
 	return (o instanceof Speed) && ((Speed)o).b == b;
     }
+    public int hashCode() {
+	return this.b;
+    }
     public int compareTo(Object rhs) {
 	return this.b - ((Speed)rhs).b;
     }
diff --git a/frysk-sys/lib/dwfl/ElfCommand.java b/frysk-sys/lib/dwfl/ElfCommand.java
index 129bbbd..5dac6ab 100644
--- a/frysk-sys/lib/dwfl/ElfCommand.java
+++ b/frysk-sys/lib/dwfl/ElfCommand.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -89,6 +90,10 @@ public class ElfCommand
 		
     return ((ElfCommand)obj).value == this.value;
   }
+
+    public int hashCode() {
+	return this.value;
+    }
 	
   protected int getValue()
   {
diff --git a/frysk-sys/lib/dwfl/ElfFlags.java b/frysk-sys/lib/dwfl/ElfFlags.java
index d909d90..85a6d8f 100644
--- a/frysk-sys/lib/dwfl/ElfFlags.java
+++ b/frysk-sys/lib/dwfl/ElfFlags.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -77,7 +78,11 @@ public class ElfFlags {
 	public boolean equals(Object obj){
 		return ((obj instanceof ElfFlags) && ((ElfFlags) obj).value == value);
 	}
-	
+
+    public int hashCode() {
+	return this.value;
+    }
+
 	protected int getValue(){
 		return value;
 	}
diff --git a/frysk-sys/lib/dwfl/ElfKind.java b/frysk-sys/lib/dwfl/ElfKind.java
index 3d110d5..84caafa 100644
--- a/frysk-sys/lib/dwfl/ElfKind.java
+++ b/frysk-sys/lib/dwfl/ElfKind.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -62,7 +63,11 @@ public class ElfKind {
 		
 		return ((ElfKind)obj).value == this.value;
 	}
-	
+
+    public int hashCode() {
+	return this.value;
+    }
+
 	protected int getValue(){
 		return this.value;
 	}
diff --git a/frysk-sys/lib/dwfl/ElfNhdrType.java b/frysk-sys/lib/dwfl/ElfNhdrType.java
index c15a92c..45c83cf 100644
--- a/frysk-sys/lib/dwfl/ElfNhdrType.java
+++ b/frysk-sys/lib/dwfl/ElfNhdrType.java
@@ -1,6 +1,7 @@
 //This file is part of the program FRYSK.
 
 //Copyright 2006, 2007, IBM Inc.
+//Copyright 2016, Andrew Cagney
 
 //FRYSK is free software; you can redistribute it and/or modify it
 //under the terms of the GNU General Public License as published by
@@ -89,7 +90,11 @@ public class ElfNhdrType
         
         return ((ElfNhdrType)obj).value == this.value;
     }
-    
+
+    public int hashCode() {
+	return this.value;
+    }
+
     public int getValue()
     {
         return this.value;
diff --git a/frysk-sys/lib/dwfl/ElfSymbolBinding.java b/frysk-sys/lib/dwfl/ElfSymbolBinding.java
index 17a61f1..aa2384a 100644
--- a/frysk-sys/lib/dwfl/ElfSymbolBinding.java
+++ b/frysk-sys/lib/dwfl/ElfSymbolBinding.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -88,6 +89,10 @@ public class ElfSymbolBinding
     return ((ElfSymbolBinding)obj).value == this.value;
   }
 
+    public int hashCode() {
+	return this.value;
+    }
+
   /**
    * Returns true if this binding is from OS-specific range.
    */
diff --git a/frysk-sys/lib/dwfl/ElfSymbolType.java b/frysk-sys/lib/dwfl/ElfSymbolType.java
index 38e40a5..99674d4 100644
--- a/frysk-sys/lib/dwfl/ElfSymbolType.java
+++ b/frysk-sys/lib/dwfl/ElfSymbolType.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -112,6 +113,10 @@ public class ElfSymbolType
     return ((ElfSymbolType)obj).value == this.value;
   }
 
+    public int hashCode() {
+	return this.value;
+    }
+
   /**
    * Returns true if this type is from OS-specific range.
    */
diff --git a/frysk-sys/lib/dwfl/ElfSymbolVersion.java b/frysk-sys/lib/dwfl/ElfSymbolVersion.java
index 745f959..7590de9 100644
--- a/frysk-sys/lib/dwfl/ElfSymbolVersion.java
+++ b/frysk-sys/lib/dwfl/ElfSymbolVersion.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -87,6 +88,10 @@ public abstract class ElfSymbolVersion
       return this.name.equals(def.name)
 	&& this.base == def.base;
     }
+
+      public int hashCode() {
+	  return this.name.hashCode();
+      }
   }
 
   /**
@@ -123,5 +128,10 @@ public abstract class ElfSymbolVersion
 	&& this.filename.equals(need.filename)
 	&& this.weak == need.weak;
     }
+
+      public int hashCode() {
+	  return this.name.hashCode();
+      }
+
   }
 }
diff --git a/frysk-sys/lib/dwfl/ElfSymbolVisibility.java b/frysk-sys/lib/dwfl/ElfSymbolVisibility.java
index 25af18a..f2e9553 100644
--- a/frysk-sys/lib/dwfl/ElfSymbolVisibility.java
+++ b/frysk-sys/lib/dwfl/ElfSymbolVisibility.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -70,6 +71,10 @@ public class ElfSymbolVisibility
     return ((ElfSymbolVisibility)obj).value == this.value;
   }
 
+    public int hashCode() {
+	return this.value;
+    }
+
   protected int getValue()
   {
     return this.value;
diff --git a/frysk-sys/lib/dwfl/ElfType.java b/frysk-sys/lib/dwfl/ElfType.java
index 633b2f8..56e8e9a 100644
--- a/frysk-sys/lib/dwfl/ElfType.java
+++ b/frysk-sys/lib/dwfl/ElfType.java
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -89,7 +90,11 @@ public class ElfType {
 		
 		return ((ElfType)obj).value == this.value;
 	}
-	
+
+    public int hashCode() {
+	return this.value;
+    }
+
 	protected int getValue(){
 		return this.value;
 	}
diff --git a/frysk-sys/lib/dwfl/jni/DwarfDie.cxx b/frysk-sys/lib/dwfl/jni/DwarfDie.cxx
index 1225e26..cbb0cb1 100644
--- a/frysk-sys/lib/dwfl/jni/DwarfDie.cxx
+++ b/frysk-sys/lib/dwfl/jni/DwarfDie.cxx
@@ -435,11 +435,10 @@ lib::dwfl::DwarfDie::get_data_member_location(jnixx::env env, jlong var_die) {
   Dwarf_Die *die = (Dwarf_Die*) var_die;
   Dwarf_Attribute loc_attr;
   Dwarf_Op *fb_expr;
-  int code;
   size_t fb_len;
   
   if (dwarf_attr_integrate (die, DW_AT_data_member_location, &loc_attr) >= 0) {
-    code = dwarf_getlocation (&loc_attr, &fb_expr, &fb_len);
+    dwarf_getlocation (&loc_attr, &fb_expr, &fb_len);
     if (fb_len > 0 && fb_expr[0].atom == DW_OP_plus_uconst)
       return fb_expr[0].number;
   }
diff --git a/frysk-sys/lib/dwfl/jni/DwflModule.cxx b/frysk-sys/lib/dwfl/jni/DwflModule.cxx
index c525350..d645edf 100644
--- a/frysk-sys/lib/dwfl/jni/DwflModule.cxx
+++ b/frysk-sys/lib/dwfl/jni/DwflModule.cxx
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, 2008, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -152,7 +153,6 @@ lib::dwfl::DwflModule::getPLTEntries(jnixx::env env,
     return;
 
   bool have_dynamic = false;
-  ::GElf_Off off_dynamic;
   for (GElf_Half i = 0; i < ehdr.e_phnum; ++i) {
     ::GElf_Phdr ph;
     if (::gelf_getphdr (elf, i, &ph) == NULL)
@@ -160,7 +160,6 @@ lib::dwfl::DwflModule::getPLTEntries(jnixx::env env,
     if (ph.p_type == PT_DYNAMIC)
       {
 	have_dynamic = true;
-	off_dynamic = ph.p_offset;
 	break;
       }
   }
diff --git a/frysk-sys/lib/dwfl/jni/Elf.cxx b/frysk-sys/lib/dwfl/jni/Elf.cxx
index 82aaeb7..cc16245 100644
--- a/frysk-sys/lib/dwfl/jni/Elf.cxx
+++ b/frysk-sys/lib/dwfl/jni/Elf.cxx
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2005, 2007, 2008, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -284,7 +285,7 @@ jlong
 lib::dwfl::Elf::elf_getshnum(jnixx::env env) {
   size_t count;
   /* XXX: What to do if this fails */
-  ::elf_getshnum(ELF_POINTER, &count);
+  ::elf_getshdrnum(ELF_POINTER, &count);
   return count;
 }
 
@@ -292,7 +293,7 @@ jlong
 lib::dwfl::Elf::elf_getshstrndx(jnixx::env env) {
   size_t index;
   /* XXX: What to do if this fails */
-  ::elf_getshstrndx(ELF_POINTER, &index);
+  ::elf_getshdrstrndx(ELF_POINTER, &index);
   return index;
 }
 
diff --git a/frysk-sys/lib/unwind/jni/UnwindH.hxx b/frysk-sys/lib/unwind/jni/UnwindH.hxx
index 5efc541..509cc92 100644
--- a/frysk-sys/lib/unwind/jni/UnwindH.hxx
+++ b/frysk-sys/lib/unwind/jni/UnwindH.hxx
@@ -1,6 +1,7 @@
 // This file is part of the program FRYSK.
 //
 // Copyright 2007, 2008, Red Hat Inc.
+// Copyright 2016, Andrew Cagney
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -512,7 +513,7 @@ get_eh_frame_hdr_addr(jnixx::env env, unw_proc_info_t *pi,
 
   Elf_Data *debug_frame_data = NULL;
   size_t shstrndx;
-  if (elf_getshstrndx (elf, &shstrndx) >= 0) {
+  if (elf_getshdrstrndx (elf, &shstrndx) >= 0) {
       Elf_Scn *scn = NULL;
       while ((scn = elf_nextscn (elf, scn)) != NULL
 	     && debug_frame_data == NULL) {