+
+/* link map access functions */
+
+#ifndef SVR4_SHARED_LIBS
+
+static CORE_ADDR
+LM_ADDR (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return extract_address (&so->lm32.lm_addr, sizeof (so->lm32.lm_addr));
+ else
+#endif
+ return extract_address (&so->lm.lm_addr, sizeof (so->lm.lm_addr));
+}
+
+static CORE_ADDR
+LM_NEXT (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return extract_address (&so->lm32.lm_next, sizeof (so->lm32.lm_next));
+ else
+#endif
+ return extract_address (&so->lm.lm_next, sizeof (so->lm.lm_next));
+}
+
+static CORE_ADDR
+LM_NAME (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return extract_address (&so->lm32.lm_name, sizeof (so->lm32.lm_name));
+ else
+#endif
+ return extract_address (&so->lm.lm_name, sizeof (so->lm.lm_name));
+}
+
+static int
+IGNORE_FIRST_LINK_MAP_ENTRY (so)
+ struct so_list *so;
+{
+ return 0;
+}
+
+#else /* SVR4_SHARED_LIBS */
+
+static CORE_ADDR
+LM_ADDR (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return extract_address (&so->lm32.l_addr, sizeof (so->lm32.l_addr));
+ else
+#endif
+ return extract_address (&so->lm.l_addr, sizeof (so->lm.l_addr));
+}
+
+static CORE_ADDR
+LM_NEXT (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return extract_address (&so->lm32.l_next, sizeof (so->lm32.l_next));
+ else
+#endif
+ return extract_address (&so->lm.l_next, sizeof (so->lm.l_next));
+}
+
+static CORE_ADDR
+LM_NAME (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return extract_address (&so->lm32.l_name, sizeof (so->lm32.l_name));
+ else
+#endif
+ return extract_address (&so->lm.l_name, sizeof (so->lm.l_name));
+}
+
+static int
+IGNORE_FIRST_LINK_MAP_ENTRY (so)
+ struct so_list *so;
+{
+#if defined (HAVE_STRUCT_LINK_MAP32)
+ if (bfd_get_arch_size (exec_bfd) == 32)
+ return (solib_extract_address (&(so) -> lm32.l_prev) == 0);
+ else
+#endif
+ return (solib_extract_address (&(so) -> lm.l_prev) == 0);
+}
+
+#endif /* !SVR4_SHARED_LIBS */
+
+