+ /* Read the debugging records. */
+
+ if (i_fxdhdrp -> numberOfDebugRecords > 0)
+ {
+ if (bfd_seek (abfd, i_fxdhdrp -> debugInfoOffset, SEEK_SET) == -1)
+ {
+ bfd_error = system_call_error;
+ return (false);
+ }
+
+ symcount += i_fxdhdrp -> numberOfDebugRecords;
+ while (abfd -> symcount < symcount)
+ {
+ if ((bfd_read ((PTR) &symtype, sizeof (symtype), 1, abfd)
+ != sizeof (symtype))
+ || bfd_read ((PTR) temp, sizeof (temp), 1, abfd) != sizeof (temp)
+ || (bfd_read ((PTR) &symlength, sizeof (symlength), 1, abfd)
+ != sizeof (symlength)))
+ {
+ bfd_error = system_call_error;
+ return false;
+ }
+ sym -> symbol.the_bfd = abfd;
+ sym -> symbol.name = bfd_alloc (abfd, symlength + 1);
+ if (bfd_read ((PTR) sym -> symbol.name, symlength, 1, abfd)
+ != symlength)
+ {
+ bfd_error = system_call_error;
+ return (false);
+ }
+ sym -> symbol.flags = BSF_LOCAL;
+ sym -> symbol.value = get_word (abfd, temp);
+ if (symtype == 0)
+ {
+ sym -> symbol.section =
+ bfd_get_section_by_name (abfd, NLM_INITIALIZED_DATA_NAME);
+ }
+ else if (symtype == 1)
+ {
+ sym -> symbol.flags |= BSF_FUNCTION;
+ sym -> symbol.section =
+ bfd_get_section_by_name (abfd, NLM_CODE_NAME);
+ }
+ else
+ {
+ sym -> symbol.section = &bfd_abs_section;
+ }
+ sym -> rcnt = 0;
+ abfd -> symcount++;
+ sym++;
+ }
+ }
+