Add arch_library_symbol arch hooks, call properly
diff --git a/sysdeps/linux-gnu/ppc/arch.h b/sysdeps/linux-gnu/ppc/arch.h
index fb72b92..303ae35 100644
--- a/sysdeps/linux-gnu/ppc/arch.h
+++ b/sysdeps/linux-gnu/ppc/arch.h
@@ -23,7 +23,6 @@
 #define ARCH_HAVE_ADD_PLT_ENTRY
 #define ARCH_HAVE_LTELF_DATA
 #define ARCH_HAVE_BREAKPOINT_DATA
-#define ARCH_HAVE_LIBRARY_SYMBOL_DATA
 #define ARCH_HAVE_TRANSLATE_ADDRESS
 
 struct library_symbol;
@@ -47,6 +46,7 @@
 	PPC64PLT_RESOLVED,
 };
 
+#define ARCH_HAVE_LIBRARY_SYMBOL_DATA
 struct arch_library_symbol_data {
 	enum ppc64_plt_type type;
 	GElf_Addr resolved_value;
diff --git a/sysdeps/linux-gnu/ppc/plt.c b/sysdeps/linux-gnu/ppc/plt.c
index 9dd8d0a..f839d0d 100644
--- a/sysdeps/linux-gnu/ppc/plt.c
+++ b/sysdeps/linux-gnu/ppc/plt.c
@@ -523,6 +523,29 @@
 	abort();
 }
 
+int
+arch_library_symbol_init(struct library_symbol *libsym)
+{
+	/* We set type explicitly in the code above, where we have the
+	 * necessary context.  This is for calls from ltrace-elf.c and
+	 * such.  */
+	libsym->arch.type = PPC_NOT_PLT;
+	return 0;
+}
+
+void
+arch_library_symbol_destroy(struct library_symbol *libsym)
+{
+}
+
+int
+arch_library_symbol_clone(struct library_symbol *retp,
+			  struct library_symbol *libsym)
+{
+	retp->arch = libsym->arch;
+	return 0;
+}
+
 /* For some symbol types, we need to set up custom callbacks.  XXX we
  * don't need PROC here, we can store the data in BP if it is of
  * interest to us.  */