* serial.h (SERIAL_SET_TTY_STATE): Comment return value.
[deliverable/binutils-gdb.git] / gdb / coff-solib.c
index d6ea6455ac478aada51dd29401ba48ec3e88672e..697fdac2d2a22c8051985a5ddcb37f82a486f49f 100644 (file)
@@ -61,14 +61,13 @@ coff_solib_add (arg_string, from_tty, target)
       unsigned char *lib;
       struct libent
        {
-         long len;
-         long unk;
-         char filename[1];
+         bfd_byte len[4];
+         bfd_byte nameoffset[4];
        };
 
       libsize = bfd_section_size (exec_bfd, libsect);
 
-      lib = alloca (libsize);
+      lib = (unsigned char *) alloca (libsize);
 
       bfd_get_section_contents (exec_bfd, libsect, lib, 0, libsize);
 
@@ -76,19 +75,27 @@ coff_solib_add (arg_string, from_tty, target)
        {
          struct libent *ent;
          struct objfile *objfile;
+         int len, nameoffset;
+         char *filename;
 
          ent = (struct libent *)lib;
 
-         if (ent->len <= 0)
+         len = bfd_get_32 (exec_bfd, ent->len);
+
+         nameoffset = bfd_get_32 (exec_bfd, ent->nameoffset);
+
+         if (len <= 0)
            break;
 
-         objfile = symbol_file_add (ent->filename, from_tty,
+         filename = (char *)ent + nameoffset * 4;
+
+         objfile = symbol_file_add (filename, from_tty,
                                     0, /* addr */
                                     0, /* not mainline */
                                     0, /* not mapped */
                                     0); /* Not readnow */
-         libsize -= ent->len * 4;
-         lib += ent->len * 4;
+         libsize -= len * 4;
+         lib += len * 4;
        }
     }
 }
This page took 0.023235 seconds and 4 git commands to generate.