Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Dec 2013 08:36:53 +0000 (UTC)
From:      Mark Murray <markm@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r258839 - in projects/random_number_generator: contrib/gcc/cp contrib/gcclibs/libcpp contrib/gcclibs/libiberty contrib/gcclibs/libiberty/testsuite sys/arm/at91 sys/dev/bge sys/dev/drm2/...
Message-ID:  <201312020836.rB28ar2p028491@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markm
Date: Mon Dec  2 08:36:53 2013
New Revision: 258839
URL: http://svnweb.freebsd.org/changeset/base/258839

Log:
  MFC - Tracking Commit

Added:
  projects/random_number_generator/contrib/gcclibs/libiberty/ChangeLog.gcc43
     - copied unchanged from r258837, head/contrib/gcclibs/libiberty/ChangeLog.gcc43
  projects/random_number_generator/sys/dev/nand/nfc_at91.c
     - copied unchanged from r258837, head/sys/dev/nand/nfc_at91.c
Modified:
  projects/random_number_generator/contrib/gcc/cp/ChangeLog.gcc43
  projects/random_number_generator/contrib/gcc/cp/mangle.c
  projects/random_number_generator/contrib/gcclibs/libcpp/ChangeLog.gcc43
  projects/random_number_generator/contrib/gcclibs/libcpp/expr.c
  projects/random_number_generator/contrib/gcclibs/libcpp/lex.c
  projects/random_number_generator/contrib/gcclibs/libcpp/macro.c
  projects/random_number_generator/contrib/gcclibs/libcpp/pch.c
  projects/random_number_generator/contrib/gcclibs/libiberty/choose-temp.c
  projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.c
  projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.h
  projects/random_number_generator/contrib/gcclibs/libiberty/floatformat.c
  projects/random_number_generator/contrib/gcclibs/libiberty/functions.texi
  projects/random_number_generator/contrib/gcclibs/libiberty/pex-unix.c
  projects/random_number_generator/contrib/gcclibs/libiberty/strsignal.c
  projects/random_number_generator/contrib/gcclibs/libiberty/testsuite/demangle-expected
  projects/random_number_generator/contrib/gcclibs/libiberty/testsuite/test-demangle.c
  projects/random_number_generator/sys/arm/at91/at91_pioreg.h
  projects/random_number_generator/sys/arm/at91/files.at91
  projects/random_number_generator/sys/dev/bge/if_bge.c
  projects/random_number_generator/sys/dev/bge/if_bgereg.h
  projects/random_number_generator/sys/dev/drm2/i915/i915_reg.h
  projects/random_number_generator/sys/dev/iwn/if_iwn.c
  projects/random_number_generator/sys/dev/iwn/if_iwnreg.h
  projects/random_number_generator/sys/dev/iwn/if_iwnvar.h
  projects/random_number_generator/sys/dev/ofw/ofw_fdt.c
  projects/random_number_generator/sys/dev/uart/uart_cpu_powerpc.c
  projects/random_number_generator/sys/kern/kern_mib.c
  projects/random_number_generator/sys/kern/uipc_syscalls.c
  projects/random_number_generator/sys/netinet/tcp_input.c
  projects/random_number_generator/sys/powerpc/booke/platform_bare.c
  projects/random_number_generator/sys/powerpc/include/ofw_machdep.h
  projects/random_number_generator/sys/powerpc/mpc85xx/platform_mpc85xx.c
  projects/random_number_generator/sys/powerpc/ofw/ofw_machdep.c
  projects/random_number_generator/sys/powerpc/powermac/platform_powermac.c
  projects/random_number_generator/sys/powerpc/powerpc/platform.c
  projects/random_number_generator/sys/powerpc/powerpc/platform_if.m
  projects/random_number_generator/sys/powerpc/ps3/platform_ps3.c
  projects/random_number_generator/sys/powerpc/pseries/platform_chrp.c
  projects/random_number_generator/sys/powerpc/wii/platform_wii.c
Directory Properties:
  projects/random_number_generator/   (props changed)
  projects/random_number_generator/contrib/gcc/   (props changed)
  projects/random_number_generator/sys/   (props changed)

Modified: projects/random_number_generator/contrib/gcc/cp/ChangeLog.gcc43
==============================================================================
--- projects/random_number_generator/contrib/gcc/cp/ChangeLog.gcc43	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcc/cp/ChangeLog.gcc43	Mon Dec  2 08:36:53 2013	(r258839)
@@ -1,4 +1,4 @@
-2007-07-09  Geoffrey Keating  <geoffk@apple.com>
+2007-07-09  Geoffrey Keating  <geoffk@apple.com> (r126529)
 
 	PR 32617
 	* decl.c (cxx_init_decl_processing): Don't set
@@ -18,6 +18,13 @@
 	* decl2.c (determine_visibility): Remove duplicate code for
 	handling type info.
 
+2007-05-05  Geoffrey Keating  <geoffk@apple.com> (r124467)
+
+	PR 31775
+	* mangle.c (write_mangled_name): Mangle static variable names.
+	(write_unqualified_name): Use local-source-name for
+	namespace-scope static variables.
+
 2007-03-12  Seongbae Park <seongbae.park@gmail.com> (r122851)
 
 	* decl.c (compute_array_index_type): New warning flag warn_vla.

Modified: projects/random_number_generator/contrib/gcc/cp/mangle.c
==============================================================================
--- projects/random_number_generator/contrib/gcc/cp/mangle.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcc/cp/mangle.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -688,7 +688,8 @@ write_mangled_name (const tree decl, boo
 	}
     }
   else if (TREE_CODE (decl) == VAR_DECL
-	   /* The names of global variables aren't mangled.  */
+	   /* The names of non-static global variables aren't mangled.  */
+	   && DECL_EXTERNAL_LINKAGE_P (decl)
 	   && (CP_DECL_CONTEXT (decl) == global_namespace
 	       /* And neither are `extern "C"' variables.  */
 	       || DECL_EXTERN_C_P (decl)))
@@ -1086,7 +1087,10 @@ write_template_prefix (const tree node)
 
     <unqualified-name>  ::= <operator-name>
 			::= <special-name>
-			::= <source-name>  */
+			::= <source-name>
+			::= <local-source-name> 
+
+    <local-source-name>	::= L <source-name> <discriminator> */
 
 static void
 write_unqualified_name (const tree decl)
@@ -1126,6 +1130,16 @@ write_unqualified_name (const tree decl)
 
       write_string (oni[DECL_OVERLOADED_OPERATOR_P (decl)].mangled_name);
     }
+  else if (VAR_OR_FUNCTION_DECL_P (decl) && ! TREE_PUBLIC (decl)
+	   && DECL_NAMESPACE_SCOPE_P (decl)
+	   && decl_linkage (decl) == lk_internal)
+    {
+      MANGLE_TRACE_TREE ("local-source-name", decl);
+      write_char ('L');
+      write_source_name (DECL_NAME (decl));
+      /* The default discriminator is 1, and that's all we ever use,
+	 so there's no code to output one here.  */
+    }
   else
     write_source_name (DECL_NAME (decl));
 }

Modified: projects/random_number_generator/contrib/gcclibs/libcpp/ChangeLog.gcc43
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libcpp/ChangeLog.gcc43	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libcpp/ChangeLog.gcc43	Mon Dec  2 08:36:53 2013	(r258839)
@@ -7,6 +7,11 @@
 	* include/cpplib.h: Add CPP_N_BINARY, to be used for 0b-prefixed
 	binary integer constants.
 	
+2007-05-31  Dave Korn  <dave.korn@artimi.com> (r125212)
+
+	PR preprocessor/14331
+	* lex.c (_cpp_get_fresh_line):  Don't warn if no newline at EOF.
+
 2007-05-21  Ian Lance Taylor  <iant@google.com> (r124929)
 
 	* internal.h (struct cpp_reader): Add new fields:
@@ -23,6 +28,29 @@
 	(_cpp_cleanup_files): Free pfile->nonexistent_file_hash and
 	pfile->nonexistent_file_ob.
 
+2007-05-14  Janis Johnson  <janis187@us.ibm.com> (r124731)
+
+	PR c/31924
+	* expr.c (interpret_float_suffix): Check for invalid suffix.
+
+2007-05-02  Eric Christopher  <echristo@apple.com> (r124358)
+
+	* expr.c (num_div_op): Don't overflow if the result is
+	zero.
+
+2007-05-02  Tom Tromey  <tromey@redhat.com> (r124356)
+
+	PR preprocessor/28709:
+	* macro.c (paste_tokens): Remove PASTE_LEFT from the old lhs.
+
+2007-01-30  Tom Tromey  <tromey@redhat.com> (r121340)
+
+	PR preprocessor/29966:
+	* macro.c (lex_expansion_token): Save and restore cpp_reader's
+	cur_token.
+	(_cpp_create_definition): Don't restore cur_token here.
+	* lex.c (_cpp_lex_token): Added assertion.
+
 2006-12-29  Ian Lance Taylor  <iant@google.com> (r120263)
 
 	* lex.c (_cpp_clean_line): Add uses of __builtin_expect.  Don't

Modified: projects/random_number_generator/contrib/gcclibs/libcpp/expr.c
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libcpp/expr.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libcpp/expr.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -87,16 +87,19 @@ interpret_float_suffix (const uchar *s, 
   while (len--)
     switch (s[len])
       {
-      case 'f': case 'F': f++; break;
-      case 'l': case 'L': l++; break;
-      case 'i': case 'I':
-      case 'j': case 'J': i++; break;
-      case 'd': case 'D': 
-	/* Disallow fd, ld suffixes.  */
-	if (d && (f || l))
+      case 'f': case 'F':
+	if (d > 0)
+	  return 0;
+	f++;
+	break;
+      case 'l': case 'L':
+	if (d > 0)
 	  return 0;
-	d++;
+	l++;
 	break;
+      case 'i': case 'I':
+      case 'j': case 'J': i++; break;
+      case 'd': case 'D': d++; break;
       default:
 	return 0;
       }
@@ -494,7 +497,7 @@ append_digit (cpp_num num, int digit, in
   if (add_low + digit < add_low)
     add_high++;
   add_low += digit;
-    
+
   if (result.low + add_low < result.low)
     add_high++;
   if (result.high + add_high < result.high)
@@ -1580,7 +1583,8 @@ num_div_op (cpp_reader *pfile, cpp_num l
 	{
 	  if (negate)
 	    result = num_negate (result, precision);
-	  result.overflow = num_positive (result, precision) ^ !negate;
+	  result.overflow = (num_positive (result, precision) ^ !negate
+			     && !num_zerop (result));
 	}
 
       return result;

Modified: projects/random_number_generator/contrib/gcclibs/libcpp/lex.c
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libcpp/lex.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libcpp/lex.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -766,6 +766,11 @@ _cpp_lex_token (cpp_reader *pfile)
 	  pfile->cur_run = next_tokenrun (pfile->cur_run);
 	  pfile->cur_token = pfile->cur_run->base;
 	}
+      /* We assume that the current token is somewhere in the current
+	 run.  */
+      if (pfile->cur_token < pfile->cur_run->base
+	  || pfile->cur_token >= pfile->cur_run->limit)
+	abort ();
 
       if (pfile->lookaheads)
 	{
@@ -847,11 +852,8 @@ _cpp_get_fresh_line (cpp_reader *pfile)
 	  && buffer->next_line > buffer->rlimit
 	  && !buffer->from_stage3)
 	{
-	  /* Only warn once.  */
+	  /* Clip to buffer size.  */
 	  buffer->next_line = buffer->rlimit;
-	  cpp_error_with_line (pfile, CPP_DL_PEDWARN, pfile->line_table->highest_line,
-			       CPP_BUF_COLUMN (buffer, buffer->cur),
-			       "no newline at end of file");
 	}
 
       return_at_eof = buffer->return_at_eof;

Modified: projects/random_number_generator/contrib/gcclibs/libcpp/macro.c
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libcpp/macro.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libcpp/macro.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -1,6 +1,7 @@
 /* Part of CPP library.  (Macro and #define handling.)
    Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003, 2004, 2005,
+   2006 Free Software Foundation, Inc.
    Written by Per Bothner, 1994.
    Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -438,19 +439,18 @@ static bool
 paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs)
 {
   unsigned char *buf, *end, *lhsend;
-  const cpp_token *lhs;
+  cpp_token *lhs;
   unsigned int len;
 
-  lhs = *plhs;
-  len = cpp_token_len (lhs) + cpp_token_len (rhs) + 1;
+  len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 1;
   buf = (unsigned char *) alloca (len);
-  end = lhsend = cpp_spell_token (pfile, lhs, buf, false);
+  end = lhsend = cpp_spell_token (pfile, *plhs, buf, false);
 
   /* Avoid comment headers, since they are still processed in stage 3.
      It is simpler to insert a space here, rather than modifying the
      lexer to ignore comments in some circumstances.  Simply returning
      false doesn't work, since we want to clear the PASTE_LEFT flag.  */
-  if (lhs->type == CPP_DIV && rhs->type != CPP_EQ)
+  if ((*plhs)->type == CPP_DIV && rhs->type != CPP_EQ)
     *end++ = ' ';
   end = cpp_spell_token (pfile, rhs, end, false);
   *end = '\n';
@@ -460,13 +460,22 @@ paste_tokens (cpp_reader *pfile, const c
 
   /* Set pfile->cur_token as required by _cpp_lex_direct.  */
   pfile->cur_token = _cpp_temp_token (pfile);
-  *plhs = _cpp_lex_direct (pfile);
+  lhs = _cpp_lex_direct (pfile);
   if (pfile->buffer->cur != pfile->buffer->rlimit)
     {
+      source_location saved_loc = lhs->src_loc;
+
       _cpp_pop_buffer (pfile);
       _cpp_backup_tokens (pfile, 1);
       *lhsend = '\0';
 
+      /* We have to remove the PASTE_LEFT flag from the old lhs, but
+	 we want to keep the new location.  */
+      *lhs = **plhs;
+      *plhs = lhs;
+      lhs->src_loc = saved_loc;
+      lhs->flags &= ~PASTE_LEFT;
+
       /* Mandatory error for all apart from assembler.  */
       if (CPP_OPTION (pfile, lang) != CLK_ASM)
 	cpp_error (pfile, CPP_DL_ERROR,
@@ -475,6 +484,7 @@ paste_tokens (cpp_reader *pfile, const c
       return false;
     }
 
+  *plhs = lhs;
   _cpp_pop_buffer (pfile);
   return true;
 }
@@ -1405,10 +1415,12 @@ alloc_expansion_token (cpp_reader *pfile
 static cpp_token *
 lex_expansion_token (cpp_reader *pfile, cpp_macro *macro)
 {
-  cpp_token *token;
+  cpp_token *token, *saved_cur_token;
 
+  saved_cur_token = pfile->cur_token;
   pfile->cur_token = alloc_expansion_token (pfile, macro);
   token = _cpp_lex_direct (pfile);
+  pfile->cur_token = saved_cur_token;
 
   /* Is this a parameter?  */
   if (token->type == CPP_NAME
@@ -1597,18 +1609,12 @@ _cpp_create_definition (cpp_reader *pfil
     ok = _cpp_create_trad_definition (pfile, macro);
   else
     {
-      cpp_token *saved_cur_token = pfile->cur_token;
-
       ok = create_iso_definition (pfile, macro);
 
-      /* Restore lexer position because of games lex_expansion_token()
-	 plays lexing the macro.  We set the type for SEEN_EOL() in
-	 directives.c.
+      /* We set the type for SEEN_EOL() in directives.c.
 
 	 Longer term we should lex the whole line before coming here,
 	 and just copy the expansion.  */
-      saved_cur_token[-1].type = pfile->cur_token[-1].type;
-      pfile->cur_token = saved_cur_token;
 
       /* Stop the lexer accepting __VA_ARGS__.  */
       pfile->state.va_args_ok = 0;

Modified: projects/random_number_generator/contrib/gcclibs/libcpp/pch.c
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libcpp/pch.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libcpp/pch.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -35,14 +35,14 @@ static int write_defs (cpp_reader *, cpp
 static int save_macros (cpp_reader *, cpp_hashnode *, void *);
 
 /* This structure represents a macro definition on disk.  */
-struct macrodef_struct 
+struct macrodef_struct
 {
   unsigned int definition_length;
   unsigned short name_length;
   unsigned short flags;
 };
 
-/* This is how we write out a macro definition.  
+/* This is how we write out a macro definition.
    Suitable for being called by cpp_forall_identifiers.  */
 
 static int
@@ -54,7 +54,7 @@ write_macdef (cpp_reader *pfile, cpp_has
     case NT_VOID:
       if (! (hn->flags & NODE_POISONED))
 	return 1;
-      
+
     case NT_MACRO:
       if ((hn->flags & NODE_BUILTIN))
 	return 1;
@@ -76,7 +76,7 @@ write_macdef (cpp_reader *pfile, cpp_has
 	    defn = NODE_NAME (hn);
 	    s.definition_length = s.name_length;
 	  }
-	
+
 	if (fwrite (&s, sizeof (s), 1, f) != 1
 	    || fwrite (defn, 1, s.definition_length, f) != s.definition_length)
 	  {
@@ -86,7 +86,7 @@ write_macdef (cpp_reader *pfile, cpp_has
 	  }
       }
       return 1;
-      
+
     case NT_ASSERTION:
       /* Not currently implemented.  */
       return 1;
@@ -123,7 +123,7 @@ static int
 save_idents (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p)
 {
   struct cpp_savedstate *const ss = (struct cpp_savedstate *)ss_p;
-  
+
   if (hn->type != NT_VOID)
     {
       struct cpp_string news;
@@ -136,7 +136,7 @@ save_idents (cpp_reader *pfile ATTRIBUTE
 	{
 	  struct cpp_string *sp;
 	  unsigned char *text;
-	  
+
 	  sp = XNEW (struct cpp_string);
 	  *slot = sp;
 
@@ -157,7 +157,7 @@ hashmem (const void *p_p, size_t sz)
   const unsigned char *p = (const unsigned char *)p_p;
   size_t i;
   hashval_t h;
-  
+
   h = 0;
   for (i = 0; i < sz; i++)
     h = h * 67 - (*p++ - 113);
@@ -194,10 +194,10 @@ cpp_save_state (cpp_reader *r, FILE *f)
 {
   /* Save the list of non-void identifiers for the dependency checking.  */
   r->savedstate = XNEW (struct cpp_savedstate);
-  r->savedstate->definedhash = htab_create (100, cpp_string_hash, 
+  r->savedstate->definedhash = htab_create (100, cpp_string_hash,
 					    cpp_string_eq, NULL);
   cpp_forall_identifiers (r, save_idents, r->savedstate);
-  
+
   /* Write out the list of defined identifiers.  */
   cpp_forall_identifiers (r, write_macdef, f);
 
@@ -210,20 +210,20 @@ static int
 count_defs (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p)
 {
   struct cpp_savedstate *const ss = (struct cpp_savedstate *)ss_p;
-  
+
   switch (hn->type)
     {
     case NT_MACRO:
       if (hn->flags & NODE_BUILTIN)
 	return 1;
-      
+
       /* else fall through.  */
 
     case NT_VOID:
       {
 	struct cpp_string news;
 	void **slot;
-	
+
 	news.len = NODE_LEN (hn);
 	news.text = NODE_NAME (hn);
 	slot = (void **) htab_find (ss->definedhash, &news);
@@ -249,20 +249,20 @@ static int
 write_defs (cpp_reader *pfile ATTRIBUTE_UNUSED, cpp_hashnode *hn, void *ss_p)
 {
   struct cpp_savedstate *const ss = (struct cpp_savedstate *)ss_p;
-  
+
   switch (hn->type)
     {
     case NT_MACRO:
       if (hn->flags & NODE_BUILTIN)
 	return 1;
-      
+
       /* else fall through.  */
 
     case NT_VOID:
       {
 	struct cpp_string news;
 	void **slot;
-	
+
 	news.len = NODE_LEN (hn);
 	news.text = NODE_NAME (hn);
 	slot = (void **) htab_find (ss->definedhash, &news);
@@ -303,7 +303,7 @@ cpp_write_pch_deps (cpp_reader *r, FILE 
   struct cpp_savedstate *const ss = r->savedstate;
   unsigned char *definedstrs;
   size_t i;
-  
+
   /* Collect the list of identifiers which have been seen and
      weren't defined to anything previously.  */
   ss->hashsize = 0;
@@ -404,7 +404,7 @@ collect_ht_nodes (cpp_reader *pfile ATTR
    with the preprocessor's current definitions.  It will be consistent
    when:
 
-   - anything that was defined just before the PCH was generated 
+   - anything that was defined just before the PCH was generated
      is defined the same way now; and
    - anything that was not defined then, but is defined now, was not
      used by the PCH.
@@ -430,10 +430,10 @@ cpp_valid_state (cpp_reader *r, const ch
     {
       cpp_hashnode *h;
       const unsigned char *newdefn;
-      
+
       if (read (fd, &m, sizeof (m)) != sizeof (m))
 	goto error;
-      
+
       if (m.name_length == 0)
 	break;
 
@@ -453,10 +453,10 @@ cpp_valid_state (cpp_reader *r, const ch
 	  namebuf = XNEWVEC (unsigned char, namebufsz);
 	}
 
-      if ((size_t)read (fd, namebuf, m.definition_length) 
+      if ((size_t)read (fd, namebuf, m.definition_length)
 	  != m.definition_length)
 	goto error;
-      
+
       h = cpp_lookup (r, namebuf, m.name_length);
       if (m.flags & NODE_POISONED
 	  || h->type != NT_MACRO
@@ -470,7 +470,7 @@ cpp_valid_state (cpp_reader *r, const ch
 	}
 
       newdefn = cpp_macro_definition (r, h);
-      
+
       if (m.definition_length != ustrlen (newdefn)
 	  || memcmp (namebuf, newdefn, m.definition_length) != 0)
 	{
@@ -498,17 +498,17 @@ cpp_valid_state (cpp_reader *r, const ch
   nl.defs = XNEWVEC (cpp_hashnode *, nl.asize);
   cpp_forall_identifiers (r, &collect_ht_nodes, &nl);
   qsort (nl.defs, nl.n_defs, sizeof (cpp_hashnode *), &comp_hashnodes);
- 
+
   /* Loop through nl.defs and undeftab, both of which are sorted lists.
      There should be no matches.  */
   first = undeftab;
   last = undeftab + m.definition_length;
   i = 0;
- 
+
   while (first < last && i < nl.n_defs)
     {
       int cmp = ustrcmp (first, NODE_NAME (nl.defs[i]));
- 
+
       if (cmp < 0)
  	first += ustrlen (first) + 1;
       else if (cmp > 0)
@@ -516,13 +516,13 @@ cpp_valid_state (cpp_reader *r, const ch
       else
 	{
 	  if (CPP_OPTION (r, warn_invalid_pch))
-	    cpp_error (r, CPP_DL_WARNING_SYSHDR, 
+	    cpp_error (r, CPP_DL_WARNING_SYSHDR,
 		       "%s: not used because `%s' is defined",
 		       name, first);
 	  goto fail;
 	}
     }
-   
+
   free(nl.defs);
   free (undeftab);
 
@@ -545,7 +545,7 @@ cpp_valid_state (cpp_reader *r, const ch
 
 /* Save all the existing macros.  */
 
-struct save_macro_data 
+struct save_macro_data
 {
   uchar **defns;
   size_t count;
@@ -567,7 +567,7 @@ struct save_macro_data 
    file were not saved in this way, but this is not done (yet), except
    for builtins, and for #assert by default.  */
 
-static int 
+static int
 save_macros (cpp_reader *r, cpp_hashnode *h, void *data_p)
 {
   struct save_macro_data *data = (struct save_macro_data *)data_p;
@@ -577,9 +577,9 @@ save_macros (cpp_reader *r, cpp_hashnode
       if (data->count == data->array_size)
 	{
 	  data->array_size *= 2;
-	  data->defns = XRESIZEVEC (uchar *, data->defns, (data->array_size)); 
+	  data->defns = XRESIZEVEC (uchar *, data->defns, (data->array_size));
 	}
-      
+
       switch (h->type)
 	{
 	case NT_ASSERTION:
@@ -596,7 +596,7 @@ save_macros (cpp_reader *r, cpp_hashnode
 	    data->defns[data->count][defnlen] = '\n';
 	  }
 	  break;
-	  
+
 	default:
 	  abort ();
 	}
@@ -612,7 +612,7 @@ void
 cpp_prepare_state (cpp_reader *r, struct save_macro_data **data)
 {
   struct save_macro_data *d = XNEW (struct save_macro_data);
-  
+
   d->array_size = 512;
   d->defns = XNEWVEC (uchar *, d->array_size);
   d->count = 0;
@@ -622,7 +622,7 @@ cpp_prepare_state (cpp_reader *r, struct
 }
 
 /* Given a precompiled header that was previously determined to be valid,
-   apply all its definitions (and undefinitions) to the current state. 
+   apply all its definitions (and undefinitions) to the current state.
    DEPNAME is passed to deps_restore.  */
 
 int
@@ -632,7 +632,7 @@ cpp_read_state (cpp_reader *r, const cha
   size_t i;
   struct lexer_state old_state;
 
-  /* Restore spec_nodes, which will be full of references to the old 
+  /* Restore spec_nodes, which will be full of references to the old
      hashtable entries and so will now be invalid.  */
   {
     struct spec_nodes *s = &r->spec_nodes;
@@ -691,7 +691,7 @@ cpp_read_state (cpp_reader *r, const cha
     goto error;
 
   return 0;
-  
+
  error:
   cpp_errno (r, CPP_DL_ERROR, "while reading precompiled header");
   return -1;

Copied: projects/random_number_generator/contrib/gcclibs/libiberty/ChangeLog.gcc43 (from r258837, head/contrib/gcclibs/libiberty/ChangeLog.gcc43)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/random_number_generator/contrib/gcclibs/libiberty/ChangeLog.gcc43	Mon Dec  2 08:36:53 2013	(r258839, copy of r258837, head/contrib/gcclibs/libiberty/ChangeLog.gcc43)
@@ -0,0 +1,60 @@
+2007-05-05  Geoffrey Keating  <geoffk@apple.com> (r124467)
+
+	PR 31775
+	* mangle.c (write_mangled_name): Mangle static variable names.
+	(write_unqualified_name): Use local-source-name for
+	namespace-scope static variables.
+
+2007-03-15  Geoffrey Keating  <geoffk@apple.com> (r122972)
+
+	* cp-demangle.c (d_encoding): Exit early on error.
+	(d_pointer_to_member_type): Exit early if cplus_demangle_type
+	returns NULL.
+	(cplus_demangle_type): Likewise.
+	* testsuite/demangle-expected: New testcase.
+
+2007-01-31  Ben Elliston  <bje@au.ibm.com> (r121364)
+
+	* strsignal.c (psignal): Change type of signo to int.
+	* functions.texi: Regenerate.
+
+2007-01-12  Ben Elliston  <bje@au.ibm.com> (r120702)
+
+	* pex-unix.c (writeerr): Cast write result to void.
+
+	* choose-temp.c (choose_temp_base): Check the result of the call
+	to mktemp rather than testing the length of the modified string.
+
+2006-12-20  Geoffrey Keating  <geoffk@apple.com> (r120097)
+
+	* cp-demangle.h: Add comment explaining what to do to avoid
+	overrunning string.
+	(d_check_char): New.
+	(d_next_char): Don't advance past trailing '\0'.
+	* cp-demangle.c (cplus_demangle_mangled_name): Use d_check_char.
+	(d_nested_name): Likewise.
+	(d_special_name): Likewise.
+	(d_call_offset): Likewise.
+	(d_function_type): Likewise.
+	(d_array_type): Likewise.
+	(d_pointer_to_member_type): Likewise.
+	(d_template_param): Likewise.
+	(d_template_args): Likewise.
+	(d_template_arg): Likewise.
+	(d_expr_primary): Likewise.
+	(d_local_name): Likewise.
+	(d_substitution): Likewise.
+	(d_ctor_dtor_name): Use d_advance rather than d_next_char.
+	* testsuite/test-demangle.c: Include sys/mman.h.
+	(MAP_ANONYMOUS): Define.
+	(protect_end): New.
+	(main): Use protect_end.
+	* testsuite/demangle-expected: Add testcases for overrunning
+	the end of the string.
+
+2006-11-07  Julian Brown  <julian@codesourcery.com> (r118552)
+
+	* floatformat.c (get_field): Fix segfault with little-endian word
+	order on 64-bit hosts.
+	(put_field): Likewise.
+	(min): Move definition.

Modified: projects/random_number_generator/contrib/gcclibs/libiberty/choose-temp.c
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libiberty/choose-temp.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libiberty/choose-temp.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -65,8 +65,7 @@ choose_temp_base (void)
   strcpy (temp_filename, base);
   strcpy (temp_filename + len, TEMP_FILE);
 
-  mktemp (temp_filename);
-  if (strlen (temp_filename) == 0)
+  if (mktemp (temp_filename) == 0)
     abort ();
   return temp_filename;
 }

Modified: projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.c
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.c	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.c	Mon Dec  2 08:36:53 2013	(r258839)
@@ -913,9 +913,9 @@ CP_STATIC_IF_GLIBCPP_V3
 struct demangle_component *
 cplus_demangle_mangled_name (struct d_info *di, int top_level)
 {
-  if (d_next_char (di) != '_')
+  if (! d_check_char (di, '_'))
     return NULL;
-  if (d_next_char (di) != 'Z')
+  if (! d_check_char (di, 'Z'))
     return NULL;
   return d_encoding (di, top_level);
 }
@@ -1021,7 +1021,7 @@ d_encoding (struct d_info *di, int top_l
 	}
 
       peek = d_peek_char (di);
-      if (peek == '\0' || peek == 'E')
+      if (dc == NULL || peek == '\0' || peek == 'E')
 	return dc;
       return d_make_comp (di, DEMANGLE_COMPONENT_TYPED_NAME, dc,
 			  d_bare_function_type (di, has_return_type (dc)));
@@ -1054,11 +1054,9 @@ d_name (struct d_info *di)
     case 'Z':
       return d_local_name (di);
 
-/* APPLE LOCAL begin mainline 2007-05-09 5173149 */ \
     case 'L':
       return d_unqualified_name (di);
 	
-/* APPLE LOCAL end mainline 2007-05-09 5173149 */ \
     case 'S':
       {
 	int subst;
@@ -1128,7 +1126,7 @@ d_nested_name (struct d_info *di)
   struct demangle_component *ret;
   struct demangle_component **pret;
 
-  if (d_next_char (di) != 'N')
+  if (! d_check_char (di, 'N'))
     return NULL;
 
   pret = d_cv_qualifiers (di, &ret, 1);
@@ -1139,7 +1137,7 @@ d_nested_name (struct d_info *di)
   if (*pret == NULL)
     return NULL;
 
-  if (d_next_char (di) != 'E')
+  if (! d_check_char (di, 'E'))
     return NULL;
 
   return ret;
@@ -1179,10 +1177,8 @@ d_prefix (struct d_info *di)
       if (IS_DIGIT (peek)
 	  || IS_LOWER (peek)
 	  || peek == 'C'
-/* APPLE LOCAL begin mainline 2007-05-09 5173149 */ \
 	  || peek == 'D'
 	  || peek == 'L')
-/* APPLE LOCAL end mainline 2007-05-09 5173149 */ \
 	dc = d_unqualified_name (di);
       else if (peek == 'S')
 	dc = d_substitution (di, 1);
@@ -1216,11 +1212,9 @@ d_prefix (struct d_info *di)
 /* <unqualified-name> ::= <operator-name>
                       ::= <ctor-dtor-name>
                       ::= <source-name>
- APPLE LOCAL begin mainline 2007-05-09 5173149
 		      ::= <local-source-name> 
 
     <local-source-name>	::= L <source-name> <discriminator>
- APPLE LOCAL end mainline 2007-05-09 5173149
 */
 
 static struct demangle_component *
@@ -1242,7 +1236,6 @@ d_unqualified_name (struct d_info *di)
     }
   else if (peek == 'C' || peek == 'D')
     return d_ctor_dtor_name (di);
-/* APPLE LOCAL begin mainline 2007-05-09 5173149 */ \
   else if (peek == 'L')
     {
       struct demangle_component * ret;
@@ -1256,7 +1249,6 @@ d_unqualified_name (struct d_info *di)
 	return NULL;
       return ret;
     }
-/* APPLE LOCAL end mainline 2007-05-09 5173149 */ \
   else
     return NULL;
 }
@@ -1477,11 +1469,8 @@ d_operator_name (struct d_info *di)
 static struct demangle_component *
 d_special_name (struct d_info *di)
 {
-  char c;
-
   di->expansion += 20;
-  c = d_next_char (di);
-  if (c == 'T')
+  if (d_check_char (di, 'T'))
     {
       switch (d_next_char (di))
 	{
@@ -1530,7 +1519,7 @@ d_special_name (struct d_info *di)
 	    offset = d_number (di);
 	    if (offset < 0)
 	      return NULL;
-	    if (d_next_char (di) != '_')
+	    if (! d_check_char (di, '_'))
 	      return NULL;
 	    base_type = cplus_demangle_type (di);
 	    /* We don't display the offset.  FIXME: We should display
@@ -1551,7 +1540,7 @@ d_special_name (struct d_info *di)
 	  return NULL;
 	}
     }
-  else if (c == 'G')
+  else if (d_check_char (di, 'G'))
     {
       switch (d_next_char (di))
 	{
@@ -1598,14 +1587,14 @@ d_call_offset (struct d_info *di, int c)
   else if (c == 'v')
     {
       d_number (di);
-      if (d_next_char (di) != '_')
+      if (! d_check_char (di, '_'))
 	return 0;
       d_number (di);
     }
   else
     return 0;
 
-  if (d_next_char (di) != '_')
+  if (! d_check_char (di, '_'))
     return 0;
 
   return 1;
@@ -1629,13 +1618,13 @@ d_ctor_dtor_name (struct d_info *di)
       else if (di->last_name->type == DEMANGLE_COMPONENT_SUB_STD)
 	di->expansion += di->last_name->u.s_string.len;
     }
-  switch (d_next_char (di))
+  switch (d_peek_char (di))
     {
     case 'C':
       {
 	enum gnu_v3_ctor_kinds kind;
 
-	switch (d_next_char (di))
+	switch (d_peek_next_char (di))
 	  {
 	  case '1':
 	    kind = gnu_v3_complete_object_ctor;
@@ -1649,6 +1638,7 @@ d_ctor_dtor_name (struct d_info *di)
 	  default:
 	    return NULL;
 	  }
+	d_advance (di, 2);
 	return d_make_ctor (di, kind, di->last_name);
       }
 
@@ -1656,7 +1646,7 @@ d_ctor_dtor_name (struct d_info *di)
       {
 	enum gnu_v3_dtor_kinds kind;
 
-	switch (d_next_char (di))
+	switch (d_peek_next_char (di))
 	  {
 	  case '0':
 	    kind = gnu_v3_deleting_dtor;
@@ -1670,6 +1660,7 @@ d_ctor_dtor_name (struct d_info *di)
 	  default:
 	    return NULL;
 	  }
+	d_advance (di, 2);
 	return d_make_dtor (di, kind, di->last_name);
       }
 
@@ -1763,7 +1754,7 @@ cplus_demangle_type (struct d_info *di)
       if (pret == NULL)
 	return NULL;
       *pret = cplus_demangle_type (di);
-      if (! d_add_substitution (di, ret))
+      if (! *pret || ! d_add_substitution (di, ret))
 	return NULL;
       return ret;
     }
@@ -1953,7 +1944,7 @@ d_function_type (struct d_info *di)
 {
   struct demangle_component *ret;
 
-  if (d_next_char (di) != 'F')
+  if (! d_check_char (di, 'F'))
     return NULL;
   if (d_peek_char (di) == 'Y')
     {
@@ -1962,7 +1953,7 @@ d_function_type (struct d_info *di)
       d_advance (di, 1);
     }
   ret = d_bare_function_type (di, 1);
-  if (d_next_char (di) != 'E')
+  if (! d_check_char (di, 'E'))
     return NULL;
   return ret;
 }
@@ -2049,7 +2040,7 @@ d_array_type (struct d_info *di)
   char peek;
   struct demangle_component *dim;
 
-  if (d_next_char (di) != 'A')
+  if (! d_check_char (di, 'A'))
     return NULL;
 
   peek = d_peek_char (di);
@@ -2077,7 +2068,7 @@ d_array_type (struct d_info *di)
 	return NULL;
     }
 
-  if (d_next_char (di) != '_')
+  if (! d_check_char (di, '_'))
     return NULL;
 
   return d_make_comp (di, DEMANGLE_COMPONENT_ARRAY_TYPE, dim,
@@ -2093,7 +2084,7 @@ d_pointer_to_member_type (struct d_info 
   struct demangle_component *mem;
   struct demangle_component **pmem;
 
-  if (d_next_char (di) != 'M')
+  if (! d_check_char (di, 'M'))
     return NULL;
 
   cl = cplus_demangle_type (di);
@@ -2118,6 +2109,8 @@ d_pointer_to_member_type (struct d_info 
   if (pmem == NULL)
     return NULL;
   *pmem = cplus_demangle_type (di);
+  if (*pmem == NULL)
+    return NULL;
 
   if (pmem != &mem && (*pmem)->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
     {
@@ -2137,7 +2130,7 @@ d_template_param (struct d_info *di)
 {
   long param;
 
-  if (d_next_char (di) != 'T')
+  if (! d_check_char (di, 'T'))
     return NULL;
 
   if (d_peek_char (di) == '_')
@@ -2150,7 +2143,7 @@ d_template_param (struct d_info *di)
       param += 1;
     }
 
-  if (d_next_char (di) != '_')
+  if (! d_check_char (di, '_'))
     return NULL;
 
   ++di->did_subs;
@@ -2172,7 +2165,7 @@ d_template_args (struct d_info *di)
      constructor or destructor.  */
   hold_last_name = di->last_name;
 
-  if (d_next_char (di) != 'I')
+  if (! d_check_char (di, 'I'))
     return NULL;
 
   al = NULL;
@@ -2217,7 +2210,7 @@ d_template_arg (struct d_info *di)
     case 'X':
       d_advance (di, 1);
       ret = d_expression (di);
-      if (d_next_char (di) != 'E')
+      if (! d_check_char (di, 'E'))
 	return NULL;
       return ret;
 
@@ -2344,7 +2337,7 @@ d_expr_primary (struct d_info *di)
 {
   struct demangle_component *ret;
 
-  if (d_next_char (di) != 'L')
+  if (! d_check_char (di, 'L'))
     return NULL;
   if (d_peek_char (di) == '_')
     ret = cplus_demangle_mangled_name (di, 0);
@@ -2390,7 +2383,7 @@ d_expr_primary (struct d_info *di)
 	}
       ret = d_make_comp (di, t, type, d_make_name (di, s, d_str (di) - s));
     }
-  if (d_next_char (di) != 'E')
+  if (! d_check_char (di, 'E'))
     return NULL;
   return ret;
 }
@@ -2404,12 +2397,12 @@ d_local_name (struct d_info *di)
 {
   struct demangle_component *function;
 
-  if (d_next_char (di) != 'Z')
+  if (! d_check_char (di, 'Z'))
     return NULL;
 
   function = d_encoding (di, 0);
 
-  if (d_next_char (di) != 'E')
+  if (! d_check_char (di, 'E'))
     return NULL;
 
   if (d_peek_char (di) == 's')
@@ -2514,7 +2507,7 @@ d_substitution (struct d_info *di, int p
 {
   char c;
 
-  if (d_next_char (di) != 'S')
+  if (! d_check_char (di, 'S'))
     return NULL;
 
   c = d_next_char (di);

Modified: projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.h
==============================================================================
--- projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.h	Mon Dec  2 08:21:28 2013	(r258838)
+++ projects/random_number_generator/contrib/gcclibs/libiberty/cp-demangle.h	Mon Dec  2 08:36:53 2013	(r258839)
@@ -123,10 +123,16 @@ struct d_info
   int expansion;
 };
 
+/* To avoid running past the ending '\0', don't:
+   - call d_peek_next_char if d_peek_char returned '\0'
+   - call d_advance with an 'i' that is too large
+   - call d_check_char(di, '\0')
+   Everything else is safe.  */
 #define d_peek_char(di) (*((di)->n))
 #define d_peek_next_char(di) ((di)->n[1])
 #define d_advance(di, i) ((di)->n += (i))
-#define d_next_char(di) (*((di)->n++))
+#define d_check_char(di, c) (d_peek_char(di) == c ? ((di)->n++, 1) : 0)
+#define d_next_char(di) (d_peek_char(di) == '\0' ? '\0' : *((di)->n++))
 #define d_str(di) ((di)->n)
 
 /* Functions and arrays in cp-demangle.c which are referenced by

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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