[PATCH 2/2] [nto] Improve ABI sniffing.

Aleksandar Ristovski aristovski@qnx.com
Wed Oct 21 18:23:00 GMT 2015


On 15-10-21 10:23 AM, Pedro Alves wrote:
> On 10/21/2015 03:14 PM, Aleksandar Ristovski wrote:
>> +      name = note + sizeof_Elf_Nhdr;
>> +      if (sectsize < namelen + sizeof_Elf_Nhdr
>> +	  || namelen > sizeof (QNX_NOTE_NAME))
>> +	{
>> +	  /* Can not be QNX note.  */
>> +	  XDELETEVEC (note);
>> +	  return;
>> +	}
>> +
>> +      if (namelen == sizeof (QNX_NOTE_NAME)
>> +	  && 0 == strcmp (name, QNX_NOTE_NAME))
>> +        *(enum gdb_osabi *) obj = GDB_OSABI_QNXNTO;
>> +
>> +      XDELETEVEC (note);
> 
> Looks like these two ifs are now the same as the simpler:
> 
>       name = note + sizeof_Elf_Nhdr;
>       if (sectsize >= namelen + sizeof_Elf_Nhdr
>           && namelen == sizeof (QNX_NOTE_NAME)
> 	  && 0 == strcmp (name, QNX_NOTE_NAME))
>         *(enum gdb_osabi *) obj = GDB_OSABI_QNXNTO;
> 
>       XDELETEVEC (note);
> 
> OK with that change.
> 
> Thanks,
> Pedro Alves
> 

Pushed  d7161de46af80e460d432d8dbb1c42f8cbacf6dc

With the following fixup:
--- a/gdb/nto-tdep.c
+++ b/gdb/nto-tdep.c
@@ -361,15 +361,8 @@ nto_sniff_abi_note_section (bfd *abfd, asection
*sect, void *obj)
       bfd_get_section_contents (abfd, sect, note, 0, sectsize);
       namelen = (unsigned int) bfd_h_get_32 (abfd, note);
       name = note + sizeof_Elf_Nhdr;
-      if (sectsize < namelen + sizeof_Elf_Nhdr
-         || namelen > sizeof (QNX_NOTE_NAME))
-       {
-         /* Can not be QNX note.  */
-         XDELETEVEC (note);
-         return;
-       }
-
-      if (namelen == sizeof (QNX_NOTE_NAME)
+      if (sectsize >= namelen + sizeof_Elf_Nhdr
+         && namelen == sizeof (QNX_NOTE_NAME)
          && 0 == strcmp (name, QNX_NOTE_NAME))
         *(enum gdb_osabi *) obj = GDB_OSABI_QNXNTO;


Thank you,

Aleksandar Ristovski



More information about the Gdb-patches mailing list