diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h
index 8e80811..180d009 100644
--- a/include/slibtool/slibtool.h
+++ b/include/slibtool/slibtool.h
@@ -316,6 +316,7 @@ struct slbt_archive_meta {
 	struct ar_meta_signature *      m_signature;
 
 	struct ar_meta_member_info **   a_memberv;
+	struct ar_meta_member_info *    a_arref_longnames;
 	struct ar_meta_armap_info       a_armap_primary;
 	struct ar_meta_armap_info       a_armap_pecoff;
 };
diff --git a/src/arbits/slbt_archive_meta.c b/src/arbits/slbt_archive_meta.c
index dae7202..1af0ab8 100644
--- a/src/arbits/slbt_archive_meta.c
+++ b/src/arbits/slbt_archive_meta.c
@@ -830,6 +830,12 @@ int slbt_get_archive_meta(
 	/* pe/coff armap attributes (second linker member) */
 	(void)m->armeta.a_armap_pecoff;
 
+	/* reference to the long names member */
+	if (arlongnames)
+		for (idx=0; idx<nentries && !m->armeta.a_arref_longnames; idx++)
+			if (m->memberv[idx]->ar_member_data == arlongnames)
+				m->armeta.a_arref_longnames = m->memberv[idx];
+
 	/* member vector */
 	m->armeta.a_memberv = m->memberv;