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/...
Mark Murray
markm at FreeBSD.org
Mon Dec 2 08:36:56 UTC 2013
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 at apple.com>
+2007-07-09 Geoffrey Keating <geoffk at 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 at 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 at 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 at 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 at 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 at us.ibm.com> (r124731)
+
+ PR c/31924
+ * expr.c (interpret_float_suffix): Check for invalid suffix.
+
+2007-05-02 Eric Christopher <echristo at apple.com> (r124358)
+
+ * expr.c (num_div_op): Don't overflow if the result is
+ zero.
+
+2007-05-02 Tom Tromey <tromey at redhat.com> (r124356)
+
+ PR preprocessor/28709:
+ * macro.c (paste_tokens): Remove PASTE_LEFT from the old lhs.
+
+2007-01-30 Tom Tromey <tromey at 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 at 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 at 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 at 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 at au.ibm.com> (r121364)
+
+ * strsignal.c (psignal): Change type of signo to int.
+ * functions.texi: Regenerate.
+
+2007-01-12 Ben Elliston <bje at 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 at 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 at 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 ***
More information about the svn-src-projects
mailing list