Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Feb 2013 06:59:33 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r246312 - in head/contrib: binutils/include/elf gdb/gdb
Message-ID:  <201302040659.r146xXw4024168@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Mon Feb  4 06:59:33 2013
New Revision: 246312
URL: http://svnweb.freebsd.org/changeset/base/246312

Log:
  Extend GDB to check the value in the .note.tag section along with the
  .note.ABI-tag section.
  
  This helps on ARM EABI where the OS/ABI field is zero. It would be better
  to use the NOTES program header however this would require a more invasive
  change.

Modified:
  head/contrib/binutils/include/elf/common.h
  head/contrib/gdb/gdb/osabi.c

Modified: head/contrib/binutils/include/elf/common.h
==============================================================================
--- head/contrib/binutils/include/elf/common.h	Mon Feb  4 00:34:35 2013	(r246311)
+++ head/contrib/binutils/include/elf/common.h	Mon Feb  4 06:59:33 2013	(r246312)
@@ -435,6 +435,10 @@
 
 #define NT_FREEBSD_ABI_TAG	1
 
+/* Values for FreeBSD .note.tag notes.  Note name is "FreeBSD".  */
+
+#define NT_FREEBSD_TAG		2
+
 /* These three macros disassemble and assemble a symbol table st_info field,
    which contains the symbol binding and symbol type.  The STB_ and STT_
    defines identify the binding and type.  */

Modified: head/contrib/gdb/gdb/osabi.c
==============================================================================
--- head/contrib/gdb/gdb/osabi.c	Mon Feb  4 00:34:35 2013	(r246311)
+++ head/contrib/gdb/gdb/osabi.c	Mon Feb  4 06:59:33 2013	(r246312)
@@ -463,6 +463,20 @@ generic_elf_osabi_sniff_abi_tag_sections
 
       return;
     }
+
+  /* .note.tag notes, used by FreeBSD.  */
+  if (strcmp (name, ".note.tag") == 0)
+   {
+      /* FreeBSD.  */
+      if (check_note (abfd, sect, note, "FreeBSD", 4, NT_FREEBSD_TAG))
+	{
+	  /* There is no need to check the version yet.  */
+	  *osabi = GDB_OSABI_FREEBSD_ELF;
+	  return;
+	}
+
+      return;
+    }
       
   /* .note.netbsd.ident notes, used by NetBSD.  */
   if (strcmp (name, ".note.netbsd.ident") == 0



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302040659.r146xXw4024168>