This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch] arch recognition fix for osabi.c


Here are some changes to osabi.c that allow gdb to recognize QNX binaries
properly.  The arch check change in gdbarch_init_osabi() allows the backend
abi_init handlers to run.  I believe the comment still stand - we will
probably want to do something smarter in the future.

The sniff change is only temporary.  It works reasonably well for now and
will probably stay for backwards compatability but we are also going to add
a special .note section like others OSes in the future.  Then we can check
for both.

cheers,

Kris

Changelog:
    * osabi.c (gdbarch_init_osabi): Just check arch for compatability rather
identicality.
      (generic_elf_osabi_sniff_abi_tag_sections): Add check for QNX Neutrino
binaries.


Index: osabi.c
===================================================================
RCS file: /cvs/src/src/gdb/osabi.c,v
retrieving revision 1.15
diff -u -r1.15 osabi.c
--- osabi.c 8 Jun 2003 18:27:14 -0000 1.15
+++ osabi.c 17 Jun 2003 15:32:53 -0000
@@ -311,8 +311,7 @@
   type that is compatible with the desired machine type.  Right
   now we simply return the first match, which is fine for now.
   However, we might want to do something smarter in the future.  */
-      compatible = arch_info->compatible (arch_info, handler->arch_info);
-      if (compatible == handler->arch_info)
+      if(arch_info->compatible (arch_info, handler->arch_info))
  {
    (*handler->init_osabi) (info, gdbarch);
    return;
@@ -430,6 +429,17 @@
       necessary yet.  */
    *os_ident_ptr = GDB_OSABI_NETBSD_ELF;
  }
+      return;
+    }
+
+  /* QNX Neutrino has ldqnx.so as its linker.  */
+  if (strcmp (name, ".interp") == 0 && sectsize > 0)
+    {
+      char *buf = alloca(sectsize);
+      bfd_get_section_contents(abfd, sect, buf, 0, sectsize);
+      buf[sectsize] = '\0'; /* Safety first boys and girls.  */
+      if(strstr(buf, "ldqnx.so"))
+        *os_ident_ptr = GDB_OSABI_QNXNTO;
       return;
     }
 }



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]