public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
From: pmuldoon@sourceware.org
To: archer-commits@sourceware.org
Subject: [SCM]  master: Merge remote branch 'gdb/master'
Date: Mon, 17 Jan 2011 13:31:00 -0000	[thread overview]
Message-ID: <20110117133128.18556.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  54cd47005c5ee2158c538f725502b10fedadefc9 (commit)
       via  893e939f750c3d0018aca70a5b181f7554973854 (commit)
       via  0d8306bf351509bad634e46c2f85c942e9a0649e (commit)
       via  afb11568c4568d0b5e90c87ae26ae2f9e1a56665 (commit)
       via  8714d5976f75118ff9e1b284c73b7a574369bc28 (commit)
       via  0894b5fe27eb14ef6ba5a8136b9a0ccbf81c9a6e (commit)
       via  ed85087ca82b4eab3963a71f2e653766eb7f80fa (commit)
      from  dc2d67fd3e4bc8d43ece6e1e1d99094bfa380b7a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 54cd47005c5ee2158c538f725502b10fedadefc9
Merge: dc2d67f 893e939
Author: Phil Muldoon <pmuldoon@redhat.com>
Date:   Mon Jan 17 13:31:20 2011 +0000

    Merge remote branch 'gdb/master'

commit 893e939f750c3d0018aca70a5b181f7554973854
Author: Pierre Muller <muller@ics.u-strasbg.fr>
Date:   Mon Jan 17 10:34:49 2011 +0000

    	* p-exp.y (intvar): New static variable, used to set CURRENT_TYPE
    	for internal variables.
    	(last_was_structop): New static variable.
    	(COMPLETE): New token.
    	(field_exp): New rule to group all '.' suffix handling.
    	Add mark_struct_expression calls when approriate to be able
    	to correctly find fields for completion.
    	(yylex): Adapt to handle field completion and set INTVAR when
    	required.

commit 0d8306bf351509bad634e46c2f85c942e9a0649e
Author: gdbadmin <gdbadmin@sourceware.org>
Date:   Mon Jan 17 00:00:33 2011 +0000

    *** empty log message ***

commit afb11568c4568d0b5e90c87ae26ae2f9e1a56665
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Sun Jan 16 23:00:06 2011 +0000

    daily update

commit 8714d5976f75118ff9e1b284c73b7a574369bc28
Author: gdbadmin <gdbadmin@sourceware.org>
Date:   Sun Jan 16 00:00:33 2011 +0000

    *** empty log message ***

commit 0894b5fe27eb14ef6ba5a8136b9a0ccbf81c9a6e
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Sat Jan 15 23:00:05 2011 +0000

    daily update

commit ed85087ca82b4eab3963a71f2e653766eb7f80fa
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sat Jan 15 15:49:46 2011 +0000

    Check invalid x32 relocations.
    
    2011-01-15  H.J. Lu  <hongjiu.lu@intel.com>
    
    	* elf64-x86-64.c (elf_x86_64_check_relocs): Check invalid x32
    	relocations.

-----------------------------------------------------------------------

Summary of changes:
 bfd/ChangeLog      |    5 ++
 bfd/elf64-x86-64.c |   33 ++++++++++++++++
 bfd/version.h      |    2 +-
 gdb/ChangeLog      |   12 ++++++
 gdb/p-exp.y        |  106 +++++++++++++++++++++++++++++++++++++++++++--------
 gdb/version.in     |    2 +-
 6 files changed, 141 insertions(+), 19 deletions(-)

First 500 lines of diff:
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 37c49a3..00ff8ff 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Check invalid x32
+	relocations.
+
 2011-01-14  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* elf64-x86-64.c (elf_x86_64_link_hash_table): Add pointer_r_type.
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 579f59c..9a3959a 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -1179,6 +1179,39 @@ elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 	}
 
+      /* Check invalid x32 relocations.  */
+      if (!ABI_64_P (abfd))
+	switch (r_type)
+	  {
+	  default:
+	    break;
+
+	  case R_X86_64_64:
+	  case R_X86_64_DTPOFF64:
+	  case R_X86_64_TPOFF64:
+	  case R_X86_64_PC64:
+	  case R_X86_64_GOTOFF64:
+	  case R_X86_64_GOT64:
+	  case R_X86_64_GOTPCREL64:
+	  case R_X86_64_GOTPC64:
+	  case R_X86_64_GOTPLT64:
+	  case R_X86_64_PLTOFF64:
+	      {
+		if (h)
+		  name = h->root.root.string;
+		else
+		  name = bfd_elf_sym_name (abfd, symtab_hdr, isym,
+					   NULL);
+		(*_bfd_error_handler)
+		  (_("%B: relocation %s against symbol `%s' isn't "
+		     "supported in x32 mode"), abfd,
+		   x86_64_elf_howto_table[r_type].name, name);
+		bfd_set_error (bfd_error_bad_value);
+		return FALSE;
+	      }
+	    break;
+	  }
+
       if (h != NULL)
 	{
 	  /* Create the ifunc sections for static executables.  If we
diff --git a/bfd/version.h b/bfd/version.h
index 1c1d5ea..df12f23 100644
--- a/bfd/version.h
+++ b/bfd/version.h
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20110115
+#define BFD_VERSION_DATE 20110117
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
 #define REPORT_BUGS_TO @report_bugs_to@
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3788f8d..7db03c9 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,15 @@
+2011-01-17  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* p-exp.y (intvar): New static variable, used to set CURRENT_TYPE
+	for internal variables.
+	(last_was_structop): New static variable.
+	(COMPLETE): New token.
+	(field_exp): New rule to group all '.' suffix handling.
+	Add mark_struct_expression calls when approriate to be able
+	to correctly find fields for completion.
+	(yylex): Adapt to handle field completion and set INTVAR when
+	required.
+
 2011-01-14  Yao Qi  <yao@codesourcery.com>
 
 	* arm-tdep.c (arm_register_reggroup_p): FPS register is in
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index 21c3dbb..ec656d0 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -158,6 +158,7 @@ static int
 parse_number (char *, int, int, YYSTYPE *);
 
 static struct type *current_type;
+static struct internalvar *intvar;
 static int leftdiv_is_integer;
 static void push_current_type (void);
 static void pop_current_type (void);
@@ -184,6 +185,7 @@ static int search_field;
 
 %token <sval> STRING 
 %token <sval> FIELDNAME
+%token <voidval> COMPLETE
 %token <ssym> NAME /* BLOCKNAME defined below to give it higher precedence.  */
 %token <tsym> TYPENAME
 %type <sval> name
@@ -233,6 +235,7 @@ static int search_field;
 %%
 
 start   :	{ current_type = NULL;
+		  intvar = NULL;
 		  search_field = 0;
 		  leftdiv_is_integer = 0;
 		}
@@ -285,19 +288,56 @@ exp	:	DECREMENT  '(' exp ')'   %prec UNARY
 			{ write_exp_elt_opcode (UNOP_PREDECREMENT); }
 	;
 
-exp	:	exp '.' { search_field = 1; } 
-		FIELDNAME 
-		/* name */
+
+field_exp	:	exp '.'	%prec UNARY
+			{ search_field = 1; } 
+	;
+
+exp	:	field_exp FIELDNAME 
 			{ write_exp_elt_opcode (STRUCTOP_STRUCT);
-			  write_exp_string ($4); 
+			  write_exp_string ($2); 
+			  write_exp_elt_opcode (STRUCTOP_STRUCT);
+			  search_field = 0; 
+			  if (current_type)
+			    { 
+			      while (TYPE_CODE (current_type)
+				     == TYPE_CODE_PTR)
+				current_type =
+				  TYPE_TARGET_TYPE (current_type);
+			      current_type = lookup_struct_elt_type (
+				current_type, $2.ptr, 0);
+			    }
+			 }
+	; 
+
+exp	:	field_exp name
+			{ mark_struct_expression ();
+			  write_exp_elt_opcode (STRUCTOP_STRUCT);
+			  write_exp_string ($2);
 			  write_exp_elt_opcode (STRUCTOP_STRUCT);
 			  search_field = 0; 
 			  if (current_type)
-			    { while (TYPE_CODE (current_type) == TYPE_CODE_PTR)
-				current_type = TYPE_TARGET_TYPE (current_type);
+			    { 
+			      while (TYPE_CODE (current_type)
+				     == TYPE_CODE_PTR)
+				current_type =
+				  TYPE_TARGET_TYPE (current_type);
 			      current_type = lookup_struct_elt_type (
-				current_type, $4.ptr, 0); };
-			 } ; 
+				current_type, $2.ptr, 0);
+			    }
+			}
+	;
+
+exp	:	field_exp COMPLETE
+			{ struct stoken s;
+			  mark_struct_expression ();
+			  write_exp_elt_opcode (STRUCTOP_STRUCT);
+			  s.ptr = "";
+			  s.length = 0;
+			  write_exp_string (s);
+			  write_exp_elt_opcode (STRUCTOP_STRUCT); }
+	;
+
 exp	:	exp '['
 			/* We need to save the current_type value.  */
 			{ char *arrayname; 
@@ -516,8 +556,19 @@ exp	:	variable
 	;
 
 exp	:	VARIABLE
-			/* Already written by write_dollar_variable.  */
-	;
+			/* Already written by write_dollar_variable.
+			   Handle current_type.  */
+ 			{  if (intvar) {
+ 			     struct value * val, * mark;
+
+			     mark = value_mark ();
+ 			     val = value_of_internalvar (parse_gdbarch,
+ 							 intvar);
+ 			     current_type = value_type (val);
+			     value_release_to_mark (mark);
+ 			   }
+ 			}
+ 	;
 
 exp	:	SIZEOF '(' type ')'	%prec UNARY
 			{ write_exp_elt_opcode (OP_LONG);
@@ -1060,8 +1111,13 @@ static char * uptok (tokstart, namelen)
   uptokstart[namelen]='\0';
   return uptokstart;
 }
-/* Read one token, getting characters through lexptr.  */
 
+/* This is set if the previously-returned token was a structure
+   operator  '.'.  This is used only when parsing to
+   do field name completion.  */
+static int last_was_structop;
+
+/* Read one token, getting characters through lexptr.  */
 
 static int
 yylex ()
@@ -1075,7 +1131,9 @@ yylex ()
   int explen, tempbufindex;
   static char *tempbuf;
   static int tempbufsize;
-
+  int saw_structop = last_was_structop;
+ 
+  last_was_structop = 0;
  retry:
 
   prev_lexptr = lexptr;
@@ -1111,7 +1169,10 @@ yylex ()
   switch (c = *tokstart)
     {
     case 0:
-      return 0;
+      if (saw_structop && search_field)
+	return COMPLETE;
+      else
+       return 0;
 
     case ' ':
     case '\t':
@@ -1172,7 +1233,12 @@ yylex ()
     case '.':
       /* Might be a floating point number.  */
       if (lexptr[1] < '0' || lexptr[1] > '9')
-	goto symbol;		/* Nope, must be a symbol.  */
+	{
+	  if (in_parse_field)
+	    last_was_structop = 1;
+	  goto symbol;		/* Nope, must be a symbol.  */
+	}
+
       /* FALL THRU into number case.  */
 
     case '0':
@@ -1430,11 +1496,17 @@ yylex ()
 
   if (*tokstart == '$')
     {
+      char c;
       /* $ is the normal prefix for pascal hexadecimal values
         but this conflicts with the GDB use for debugger variables
         so in expression to enter hexadecimal values
         we still need to use C syntax with 0xff  */
       write_dollar_variable (yylval.sval);
+      c = tokstart[namelen];
+      tokstart[namelen] = 0;
+      intvar = lookup_only_internalvar (++tokstart);
+      --tokstart;
+      tokstart[namelen] = c;
       free (uptokstart);
       return VARIABLE;
     }
@@ -1454,7 +1526,7 @@ yylex ()
 
     if (search_field && current_type)
       is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
-    if (is_a_field)
+    if (is_a_field || in_parse_field)
       sym = NULL;
     else
       sym = lookup_symbol (tmp, expression_context_block,
@@ -1469,7 +1541,7 @@ yylex ()
          }
        if (search_field && current_type)
 	 is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
-       if (is_a_field)
+       if (is_a_field || in_parse_field)
 	 sym = NULL;
        else
 	 sym = lookup_symbol (tmp, expression_context_block,
@@ -1497,7 +1569,7 @@ yylex ()
           }
        if (search_field && current_type)
 	 is_a_field = (lookup_struct_elt_type (current_type, tmp, 1) != NULL);
-       if (is_a_field)
+       if (is_a_field || in_parse_field)
 	 sym = NULL;
        else
 	 sym = lookup_symbol (tmp, expression_context_block,
diff --git a/gdb/version.in b/gdb/version.in
index 5275ee7..ddb971d 100644
--- a/gdb/version.in
+++ b/gdb/version.in
@@ -1 +1 @@
-7.2.50.20110115-cvs
+7.2.50.20110117-cvs


hooks/post-receive
--
Repository for Project Archer.


             reply	other threads:[~2011-01-17 13:31 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-17 13:31 pmuldoon [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-02-01 19:25 jkratoch
2011-01-29 16:44 jkratoch
2011-01-25 12:53 pmuldoon
2011-01-25  9:10 jkratoch
2011-01-15 11:35 jkratoch
2011-01-14  8:04 jkratoch
2011-01-10 12:00 pmuldoon
2011-01-10  9:10 jkratoch
2011-01-07  5:57 jkratoch
2011-01-06 12:22 pmuldoon
2011-01-04  4:59 jkratoch
2010-12-31 22:30 jkratoch
2010-12-30  7:22 jkratoch
2010-12-22 20:11 swagiaal
2010-12-14 17:13 jkratoch
2010-12-14  8:27 pmuldoon
2010-12-10 17:16 jkratoch
2010-12-08 15:55 pmuldoon
2010-12-06  6:40 jkratoch
2010-12-04  1:03 jkratoch
2010-12-02 15:47 pmuldoon
2010-11-30  0:15 jkratoch
2010-11-28 18:02 jkratoch
2010-11-28  5:41 jkratoch
2010-11-16  5:04 jkratoch
2010-11-12 11:47 pmuldoon
2010-11-11 11:39 pmuldoon
2010-11-10  9:09 pmuldoon
2010-11-08  9:34 pmuldoon
2010-11-07 18:15 jkratoch
2010-10-22 14:28 pmuldoon
2010-10-20 12:48 pmuldoon
2010-10-19 16:01 pmuldoon
2010-10-17 20:27 jkratoch
2010-10-15 17:07 jkratoch
2010-10-14 20:55 jkratoch
2010-10-13 15:06 jkratoch
2010-10-12 16:45 jkratoch
2010-10-11  9:21 jkratoch
2010-10-11  8:47 pmuldoon
2010-10-06  9:00 pmuldoon
2010-09-30  8:56 pmuldoon
2010-09-27  9:48 jkratoch
2010-09-20 12:34 pmuldoon
2010-09-16 20:49 ratmice
2010-09-04 19:59 jkratoch
2010-09-03  7:26 jkratoch
2010-09-02 15:04 jkratoch
2010-09-01 15:29 swagiaal
2010-08-23 13:54 jkratoch
2010-08-20 17:49 jkratoch
2010-08-12 15:19 swagiaal
2010-08-06 15:32 jkratoch
2010-07-29 19:17 swagiaal
2010-07-22 16:57 jkratoch
2010-07-22 16:26 jkratoch
2010-07-20 18:51 jkratoch
2010-07-09  8:09 jkratoch
2010-06-24  8:55 jkratoch
2010-06-23 20:56 jkratoch
2010-06-17 12:53 jkratoch
2010-06-07  8:14 jkratoch
2010-06-02 19:03 jkratoch
2010-05-28 21:27 jkratoch
2010-05-26 18:36 swagiaal
2010-05-17 18:02 jkratoch
2010-05-17  1:04 jkratoch
2010-05-10 19:30 swagiaal
2010-05-05 14:24 swagiaal
2010-05-03 13:49 jkratoch
2010-05-03  8:48 jkratoch
2010-05-02 23:10 jkratoch
2010-05-02 15:54 jkratoch
2010-04-30  7:11 jkratoch
2010-04-28 11:44 jkratoch
2010-04-25 20:22 jkratoch
2010-04-09 20:37 jkratoch
2010-04-07  1:41 jkratoch
2010-04-05 10:11 jkratoch
2010-04-04 11:58 jkratoch
2010-03-22 23:58 jkratoch
2010-03-20 17:23 jkratoch
2010-03-18 10:01 jkratoch
2010-03-17 18:04 jkratoch
2010-03-12 18:35 jkratoch
2010-03-04 22:28 jkratoch
2010-03-01 22:16 jkratoch
2010-02-26 22:16 jkratoch
2010-02-26 17:50 jkratoch
2010-02-17 16:01 swagiaal
2010-02-13 22:51 jkratoch
2010-02-11 12:51 jkratoch
2010-02-09 19:01 jkratoch
2010-02-08 21:46 jkratoch
2010-02-03  4:38 jkratoch
2010-01-31 17:25 jkratoch
2010-01-28 19:17 swagiaal
2010-01-28 10:56 jkratoch
2010-01-27 19:21 swagiaal
2010-01-27  8:08 jkratoch
2010-01-26 18:58 swagiaal
2010-01-20 21:48 jkratoch
2010-01-15  2:09 jkratoch
2010-01-15  0:52 jkratoch
2010-01-14 22:23 jkratoch
2010-01-13 20:53 jkratoch
2010-01-10 20:47 jkratoch
2010-01-09 10:03 jkratoch
2010-01-09  8:41 jkratoch
2010-01-08 19:16 jkratoch
2009-12-06 17:43 jkratoch
2009-12-03 16:32 jkratoch
2009-11-30 13:59 jkratoch
2009-11-24 21:21 jkratoch
2009-11-21  9:24 jkratoch
2009-11-20 21:06 jkratoch
2009-11-20 15:57 jkratoch
2009-11-17 19:59 jkratoch
2009-11-16  2:22 jkratoch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110117133128.18556.qmail@sourceware.org \
    --to=pmuldoon@sourceware.org \
    --cc=archer-commits@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).