=== modified file 'gcc/c-family/c-lex.c'
@@ -1037,7 +1037,7 @@ lex_string (const cpp_token *tok, tree *
/* We have read one more token than we want. */
_cpp_backup_tokens (parse_in, 1);
if (concats)
- strs = XOBFINISH (&str_ob, cpp_string *);
+ strs = XOBFINISH (&str_ob, cpp_string);
if (concats && !objc_string && !in_system_header)
warning (OPT_Wtraditional,
=== modified file 'gcc/collect2.c'
@@ -514,7 +514,7 @@ extract_string (const char **pp)
obstack_1grow (&temporary_obstack, '\0');
*pp = p;
- return XOBFINISH (&temporary_obstack, char *);
+ return XOBFINISH (&temporary_obstack, char);
}
void
@@ -535,7 +535,7 @@ dump_ld_file (const char *name, FILE *to
const char *word, *p;
char *result;
obstack_1grow (&temporary_obstack, '\0');
- word = XOBFINISH (&temporary_obstack, const char *);
+ word = XOBFINISH (&temporary_obstack, const char);
if (*word == '.')
++word, putc ('.', to);
@@ -943,7 +943,7 @@ maybe_run_lto_and_relink (char **lto_ld_
lto_o_files = XNEWVEC (char *, num_files + 1);
lto_o_files[num_files] = NULL;
- start = XOBFINISH (&temporary_obstack, char *);
+ start = XOBFINISH (&temporary_obstack, char);
for (i = 0; i < num_files; ++i)
{
end = start;
=== modified file 'gcc/dbxout.c'
@@ -864,7 +864,7 @@ dbxout_finish_complex_stabs (tree sym, s
obstack_1grow (&stabstr_ob, '\0');
len = obstack_object_size (&stabstr_ob);
- chunk = str = XOBFINISH (&stabstr_ob, char *);
+ chunk = str = XOBFINISH (&stabstr_ob, char);
/* Within the buffer are a sequence of NUL-separated strings,
each of which is to be written out as a separate stab
@@ -897,7 +897,7 @@ dbxout_finish_complex_stabs (tree sym, s
comma than to do a two-character fputs. */
obstack_grow (&stabstr_ob, "\",", 2);
len = obstack_object_size (&stabstr_ob);
- str = XOBFINISH (&stabstr_ob, char *);
+ str = XOBFINISH (&stabstr_ob, char);
fwrite (str, 1, len, asm_out_file);
DBX_FINISH_STABS (sym, code, line, addr, label, number);
=== modified file 'gcc/gcc.c'
@@ -1435,7 +1435,7 @@ init_spec (void)
}
obstack_1grow (&obstack, '\0');
- libgcc_spec = XOBFINISH (&obstack, const char *);
+ libgcc_spec = XOBFINISH (&obstack, const char);
}
#endif
#ifdef USE_AS_TRADITIONAL_FORMAT
@@ -1444,7 +1444,7 @@ init_spec (void)
static const char tf[] = "--traditional-format ";
obstack_grow (&obstack, tf, sizeof(tf) - 1);
obstack_grow0 (&obstack, asm_spec, strlen (asm_spec));
- asm_spec = XOBFINISH (&obstack, const char *);
+ asm_spec = XOBFINISH (&obstack, const char);
}
#endif
@@ -1469,7 +1469,7 @@ init_spec (void)
}
# endif
obstack_grow0 (&obstack, link_spec, strlen (link_spec));
- link_spec = XOBFINISH (&obstack, const char *);
+ link_spec = XOBFINISH (&obstack, const char);
#endif
specs = sl;
@@ -2277,7 +2277,7 @@ build_search_list (const struct path_pre
for_each_path (paths, do_multi, 0, add_to_obstack, &info);
obstack_1grow (&collect_obstack, '\0');
- return XOBFINISH (&collect_obstack, char *);
+ return XOBFINISH (&collect_obstack, char);
}
/* Rebuild the COMPILER_PATH and LIBRARY_PATH environment variables
@@ -2924,7 +2924,7 @@ convert_filename (const char *name, int
{
obstack_grow (&obstack, name, len - 2);
obstack_grow0 (&obstack, TARGET_OBJECT_SUFFIX, strlen (TARGET_OBJECT_SUFFIX));
- name = XOBFINISH (&obstack, const char *);
+ name = XOBFINISH (&obstack, const char);
}
#endif
@@ -2945,7 +2945,7 @@ convert_filename (const char *name, int
obstack_grow (&obstack, name, len);
obstack_grow0 (&obstack, TARGET_EXECUTABLE_SUFFIX,
strlen (TARGET_EXECUTABLE_SUFFIX));
- name = XOBFINISH (&obstack, const char *);
+ name = XOBFINISH (&obstack, const char);
#endif
return name;
@@ -4047,7 +4047,7 @@ set_collect_gcc_options (void)
}
}
obstack_grow (&collect_obstack, "\0", 1);
- xputenv (XOBFINISH (&collect_obstack, char *));
+ xputenv (XOBFINISH (&collect_obstack, char));
}
/* Process a spec string, accumulating and running commands. */
@@ -4117,7 +4117,7 @@ end_going_arg (void)
const char *string;
obstack_1grow (&obstack, 0);
- string = XOBFINISH (&obstack, const char *);
+ string = XOBFINISH (&obstack, const char);
if (this_is_library_file)
string = find_file (string);
if (this_is_linker_script)
@@ -6242,21 +6242,21 @@ main (int argc, char **argv)
obstack_grow (&multilib_obstack, p, strlen (p));
obstack_1grow (&multilib_obstack, 0);
- multilib_select = XOBFINISH (&multilib_obstack, const char *);
+ multilib_select = XOBFINISH (&multilib_obstack, const char);
q = multilib_matches_raw;
while ((p = *q++) != (char *) 0)
obstack_grow (&multilib_obstack, p, strlen (p));
obstack_1grow (&multilib_obstack, 0);
- multilib_matches = XOBFINISH (&multilib_obstack, const char *);
+ multilib_matches = XOBFINISH (&multilib_obstack, const char);
q = multilib_exclusions_raw;
while ((p = *q++) != (char *) 0)
obstack_grow (&multilib_obstack, p, strlen (p));
obstack_1grow (&multilib_obstack, 0);
- multilib_exclusions = XOBFINISH (&multilib_obstack, const char *);
+ multilib_exclusions = XOBFINISH (&multilib_obstack, const char);
need_space = FALSE;
for (i = 0; i < ARRAY_SIZE (multilib_defaults_raw); i++)
@@ -6270,7 +6270,7 @@ main (int argc, char **argv)
}
obstack_1grow (&multilib_obstack, 0);
- multilib_defaults = XOBFINISH (&multilib_obstack, const char *);
+ multilib_defaults = XOBFINISH (&multilib_obstack, const char);
}
#ifdef INIT_ENVIRONMENT
@@ -6357,7 +6357,7 @@ main (int argc, char **argv)
{
obstack_grow (&obstack, "%(sysroot_spec) ", strlen ("%(sysroot_spec) "));
obstack_grow0 (&obstack, link_spec, strlen (link_spec));
- set_spec ("link", XOBFINISH (&obstack, const char *), false);
+ set_spec ("link", XOBFINISH (&obstack, const char), false);
}
#endif
@@ -6508,7 +6508,7 @@ main (int argc, char **argv)
obstack_init (&collect_obstack);
obstack_grow (&collect_obstack, "COLLECT_GCC=", sizeof ("COLLECT_GCC=") - 1);
obstack_grow (&collect_obstack, argv[0], strlen (argv[0]) + 1);
- xputenv (XOBFINISH (&collect_obstack, char *));
+ xputenv (XOBFINISH (&collect_obstack, char));
/* Set up to remember the pathname of the lto wrapper. */
@@ -6525,7 +6525,7 @@ main (int argc, char **argv)
sizeof ("COLLECT_LTO_WRAPPER=") - 1);
obstack_grow (&collect_obstack, lto_wrapper_spec,
strlen (lto_wrapper_spec) + 1);
- xputenv (XOBFINISH (&collect_obstack, char *));
+ xputenv (XOBFINISH (&collect_obstack, char));
}
/* Reject switches that no pass was interested in. */
@@ -6665,7 +6665,7 @@ warranty; not even for MERCHANTABILITY o
obstack_init (&obstack);
do_spec_1 (THREAD_MODEL_SPEC, 0, thread_model);
obstack_1grow (&obstack, '\0');
- thrmod = XOBFINISH (&obstack, const char *);
+ thrmod = XOBFINISH (&obstack, const char);
#else
thrmod = thread_model;
#endif
@@ -7391,7 +7391,7 @@ set_multilib_dir (void)
obstack_grow (&multilib_obstack, start, end - start);
obstack_1grow (&multilib_obstack, 0);
- mdswitches[i].str = XOBFINISH (&multilib_obstack, const char *);
+ mdswitches[i].str = XOBFINISH (&multilib_obstack, const char);
mdswitches[i++].len = end - start;
if (*end == '\0')
=== modified file 'gcc/genflags.c'
@@ -286,7 +286,7 @@ main (int argc, char **argv)
/* Print out the prototypes now. */
dummy = (rtx) 0;
obstack_grow (&obstack, &dummy, sizeof (rtx));
- insns = XOBFINISH (&obstack, rtx *);
+ insns = XOBFINISH (&obstack, rtx);
for (insn_ptr = insns; *insn_ptr; insn_ptr++)
gen_proto (*insn_ptr);
=== modified file 'gcc/gengtype-state.c'
@@ -306,7 +306,7 @@ read_a_state_token (void)
if (c >= 0)
ungetc (c, state_file);
obstack_1grow (&id_obstack, (char) 0);
- ids = XOBFINISH (&id_obstack, char *);
+ ids = XOBFINISH (&id_obstack, char);
sid = state_ident_by_name (ids, INSERT);
obstack_free (&id_obstack, NULL);
ids = NULL;
@@ -403,7 +403,7 @@ read_a_state_token (void)
if (c != '"')
fatal_reading_state (NULL_STATE_TOKEN, "Unterminated string");
obstack_1grow (&bstring_obstack, '\0');
- cstr = XOBFINISH (&bstring_obstack, char *);
+ cstr = XOBFINISH (&bstring_obstack, char);
cslen = strlen (cstr);
tk = (struct state_token_st *)
xcalloc (sizeof (struct state_token_st) + cslen, 1);
=== modified file 'gcc/gengtype.c'
@@ -2033,7 +2033,7 @@ matching_file_name_substitute (const cha
obstack_1grow (&str_obstack, c);
}
obstack_1grow (&str_obstack, '\0');
- rawstr = XOBFINISH (&str_obstack, char *);
+ rawstr = XOBFINISH (&str_obstack, char);
str = xstrdup (rawstr);
obstack_free (&str_obstack, NULL);
DBGPRINTF ("matched replacement %s", str);
=== modified file 'gcc/genpreds.c'
@@ -138,7 +138,7 @@ write_predicate_subfunction (struct pred
obstack_grow (rtl_obstack, p->name, strlen (p->name));
obstack_grow (rtl_obstack, "_1 (op, mode)",
sizeof "_1 (op, mode)");
- match_test_str = XOBFINISH (rtl_obstack, const char *);
+ match_test_str = XOBFINISH (rtl_obstack, const char);
/* Add the function-call expression to the complete expression to be
evaluated. */
@@ -703,7 +703,7 @@ mangle (const char *name)
}
obstack_1grow (rtl_obstack, '\0');
- return XOBFINISH (rtl_obstack, const char *);
+ return XOBFINISH (rtl_obstack, const char);
}
/* Add one constraint, of any sort, to the tables. NAME is its name;
=== modified file 'gcc/gensupport.c'
@@ -1297,7 +1297,7 @@ gen_mnemonic_setattr (htab_t mnemonic_ht
obstack_1grow (&string_obstack, '\0');
set_attr = rtx_alloc (SET_ATTR);
- XSTR (set_attr, 1) = XOBFINISH (&string_obstack, char *);
+ XSTR (set_attr, 1) = XOBFINISH (&string_obstack, char);
attr_name = XNEWVAR (char, strlen (MNEMONIC_ATTR_NAME) + 1);
strcpy (attr_name, MNEMONIC_ATTR_NAME);
XSTR (set_attr, 0) = attr_name;
@@ -1388,7 +1388,7 @@ gen_mnemonic_attr (void)
/* Replace the last ',' with the zero end character. */
*((char *)obstack_next_free (&string_obstack) - 1) = '\0';
- XSTR (mnemonic_attr, 1) = XOBFINISH (&string_obstack, char *);
+ XSTR (mnemonic_attr, 1) = XOBFINISH (&string_obstack, char);
}
/* The entry point for initializing the reader. */
=== modified file 'gcc/java/class.c'
@@ -2458,7 +2458,7 @@ layout_class (tree this_class)
obstack_grow (&temporary_obstack, buffer, strlen (buffer));
}
obstack_1grow (&temporary_obstack, '\0');
- report = XOBFINISH (&temporary_obstack, char *);
+ report = XOBFINISH (&temporary_obstack, char);
cyclic_inheritance_report = ggc_strdup (report);
obstack_free (&temporary_obstack, report);
TYPE_SIZE (this_class) = error_mark_node;
=== modified file 'gcc/java/jvgenmain.c'
@@ -192,5 +192,5 @@ do_mangle_classname (const char *string)
append_gpp_mangled_name (&ptr [-count], count);
obstack_grow (mangle_obstack, "6class$E", strlen ("6class$E"));
obstack_1grow (mangle_obstack, '\0');
- return XOBFINISH (mangle_obstack, char *);
+ return XOBFINISH (mangle_obstack, char);
}
=== modified file 'gcc/lto-opts.c'
@@ -124,7 +124,7 @@ lto_write_options (void)
option->canonical_option[j]);
}
obstack_grow (&temporary_obstack, "\0", 1);
- args = XOBFINISH (&temporary_obstack, char *);
+ args = XOBFINISH (&temporary_obstack, char);
lto_output_data_stream (&stream, args, strlen (args) + 1);
lto_write_stream (&stream);
=== modified file 'gcc/lto-wrapper.c'
@@ -336,7 +336,7 @@ get_options_from_collect_gcc_options (co
obstack_ptr_grow (&argv_obstack, NULL);
argc = obstack_object_size (&argv_obstack) / sizeof (void *) - 1;
- argv = XOBFINISH (&argv_obstack, const char **);
+ argv = XOBFINISH (&argv_obstack, const char *);
decode_cmdline_options_to_array (argc, (const char **)argv,
lang_mask,
@@ -732,7 +732,7 @@ run_gcc (unsigned argc, char *argv[])
obstack_ptr_grow (&argv_obstack, argv[i]);
obstack_ptr_grow (&argv_obstack, NULL);
- new_argv = XOBFINISH (&argv_obstack, const char **);
+ new_argv = XOBFINISH (&argv_obstack, const char *);
argv_ptr = &new_argv[new_head_argc];
fork_execute (CONST_CAST (char **, new_argv));
@@ -807,7 +807,7 @@ cont:
the resulting name to the LTRANS output list. */
obstack_grow (&env_obstack, input_name, strlen (input_name) - 2);
obstack_grow (&env_obstack, ".ltrans.o", sizeof (".ltrans.o"));
- output_name = XOBFINISH (&env_obstack, char *);
+ output_name = XOBFINISH (&env_obstack, char);
/* Adjust the dumpbase if the linker output file was seen. */
if (linker_output)
=== modified file 'gcc/objc/objc-encoding.c'
@@ -164,7 +164,7 @@ encode_method_prototype (tree method_dec
finish_encoding:
obstack_1grow (&util_obstack, '\0');
- result = get_identifier (XOBFINISH (&util_obstack, char *));
+ result = get_identifier (XOBFINISH (&util_obstack, char));
obstack_free (&util_obstack, util_firstobj);
return result;
}
@@ -179,7 +179,7 @@ objc_build_encode_expr (tree type)
encode_type (type, obstack_object_size (&util_obstack),
OBJC_ENCODE_INLINE_DEFS);
obstack_1grow (&util_obstack, 0); /* null terminate string */
- string = XOBFINISH (&util_obstack, const char *);
+ string = XOBFINISH (&util_obstack, const char);
/* Synthesize a string that represents the encoded struct/union. */
result = my_build_string (strlen (string) + 1, string);
@@ -847,7 +847,7 @@ encode_field_decl (tree field_decl)
obstack_1grow (&util_obstack, 0);
/* Get identifier for the string. */
- result = get_identifier (XOBFINISH (&util_obstack, char *));
+ result = get_identifier (XOBFINISH (&util_obstack, char));
obstack_free (&util_obstack, util_firstobj);
return result;
@@ -945,7 +945,7 @@ objc_v2_encode_prop_attr (tree property)
/* NULL-terminate string. */
obstack_1grow (&util_obstack, 0);
- string = XOBFINISH (&util_obstack, char *);
+ string = XOBFINISH (&util_obstack, char);
obstack_free (&util_obstack, util_firstobj);
return get_identifier (string);
}
=== modified file 'gcc/pretty-print.c'
@@ -273,7 +273,7 @@ pp_base_format (pretty_printer *pp, text
/* Handled in phase 2. Terminate the plain chunk here. */
obstack_1grow (&buffer->chunk_obstack, '\0');
gcc_assert (chunk < PP_NL_ARGMAX * 2);
- args[chunk++] = XOBFINISH (&buffer->chunk_obstack, const char *);
+ args[chunk++] = XOBFINISH (&buffer->chunk_obstack, const char);
break;
}
@@ -352,12 +352,12 @@ pp_base_format (pretty_printer *pp, text
obstack_1grow (&buffer->chunk_obstack, '\0');
gcc_assert (chunk < PP_NL_ARGMAX * 2);
- args[chunk++] = XOBFINISH (&buffer->chunk_obstack, const char *);
+ args[chunk++] = XOBFINISH (&buffer->chunk_obstack, const char);
}
obstack_1grow (&buffer->chunk_obstack, '\0');
gcc_assert (chunk < PP_NL_ARGMAX * 2);
- args[chunk++] = XOBFINISH (&buffer->chunk_obstack, const char *);
+ args[chunk++] = XOBFINISH (&buffer->chunk_obstack, const char);
args[chunk] = 0;
/* Set output to the argument obstack, and switch line-wrapping and
@@ -515,7 +515,7 @@ pp_base_format (pretty_printer *pp, text
pp_string (pp, close_quote);
obstack_1grow (&buffer->chunk_obstack, '\0');
- *formatters[argno] = XOBFINISH (&buffer->chunk_obstack, const char *);
+ *formatters[argno] = XOBFINISH (&buffer->chunk_obstack, const char);
}
#ifdef ENABLE_CHECKING
=== modified file 'gcc/read-md.c'
@@ -206,7 +206,7 @@ join_c_conditions (const char *cond1, co
obstack_ptr_grow (&joined_conditions_obstack, result);
obstack_ptr_grow (&joined_conditions_obstack, cond1);
obstack_ptr_grow (&joined_conditions_obstack, cond2);
- entry = XOBFINISH (&joined_conditions_obstack, const void **);
+ entry = XOBFINISH (&joined_conditions_obstack, const void *);
*htab_find_slot (joined_conditions, entry, INSERT) = entry;
return result;
}
@@ -512,7 +512,7 @@ read_quoted_string (void)
}
obstack_1grow (&string_obstack, 0);
- return XOBFINISH (&string_obstack, char *);
+ return XOBFINISH (&string_obstack, char);
}
/* Read a braced string (a la Tcl) onto the string obstack. Caller
@@ -549,7 +549,7 @@ read_braced_string (void)
}
obstack_1grow (&string_obstack, 0);
- return XOBFINISH (&string_obstack, char *);
+ return XOBFINISH (&string_obstack, char);
}
/* Read some kind of string constant. This is the high-level routine
=== modified file 'gcc/read-rtl.c'
@@ -263,7 +263,7 @@ apply_iterator_to_string (const char *st
if (base != copy)
{
obstack_grow (&string_obstack, base, strlen (base) + 1);
- copy = XOBFINISH (&string_obstack, char *);
+ copy = XOBFINISH (&string_obstack, char);
copy_md_ptr_loc (copy, string);
return copy;
}
@@ -723,7 +723,7 @@ record_potential_iterator_use (struct it
/* Copy the attribute string into permanent storage, without the
angle brackets around it. */
obstack_grow0 (&string_obstack, name + 1, len - 2);
- record_attribute_use (group, ptr, XOBFINISH (&string_obstack, char *));
+ record_attribute_use (group, ptr, XOBFINISH (&string_obstack, char));
}
else
{
@@ -1028,7 +1028,7 @@ read_rtx_code (const char *code_name)
obstack_grow (&string_obstack, fn, strlen (fn));
sprintf (line_name, ":%d", read_md_lineno);
obstack_grow (&string_obstack, line_name, strlen (line_name)+1);
- stringbuf = XOBFINISH (&string_obstack, char *);
+ stringbuf = XOBFINISH (&string_obstack, char);
}
if (star_if_braced)
=== modified file 'gcc/tlink.c'
@@ -319,7 +319,7 @@ obstack_fgets (FILE *stream, struct obst
if (obstack_object_size (ob) == 0)
return NULL;
obstack_1grow (ob, '\0');
- return XOBFINISH (ob, char *);
+ return XOBFINISH (ob, char);
}
static char *
@@ -542,7 +542,7 @@ recompile_files (void)
done:
obstack_ptr_grow (&temporary_obstack, f->main);
obstack_ptr_grow (&temporary_obstack, NULL);
- argv = XOBFINISH (&temporary_obstack, char **);
+ argv = XOBFINISH (&temporary_obstack, char *);
if (tlink_verbose)
fprintf (stderr, _("collect: recompiling %s\n"), f->main);
=== modified file 'gcc/tree-sra.c'
@@ -1416,7 +1416,7 @@ make_fancy_name (tree expr)
{
make_fancy_name_1 (expr);
obstack_1grow (&name_obstack, '\0');
- return XOBFINISH (&name_obstack, char *);
+ return XOBFINISH (&name_obstack, char);
}
/* Construct a MEM_REF that would reference a part of aggregate BASE of type
=== modified file 'include/libiberty.h'
@@ -361,12 +361,27 @@ extern unsigned int xcrc32 (const unsign
#define XDUPVAR(T, P, S1, S2) ((T *) xmemdup ((P), (S1), (S2)))
#define XRESIZEVAR(T, P, S) ((T *) xrealloc ((P), (S)))
-/* Type-safe obstack allocator. */
+/* Type-safe obstack allocator. You must first initialize the obstack.
+ T: Type, O: Obstack, N: Number of elements, S: Size in bytes,
+ P: Pointer to element. */
#define XOBNEW(O, T) ((T *) obstack_alloc ((O), sizeof (T)))
#define XOBNEWVEC(O, T, N) ((T *) obstack_alloc ((O), sizeof (T) * (N)))
#define XOBNEWVAR(O, T, S) ((T *) obstack_alloc ((O), (S)))
-#define XOBFINISH(O, T) ((T) obstack_finish ((O)))
+#define XOBDELETE(O, P) (obstack_free ((O), (P)))
+
+/* The following is for growing/shrinking objects in an obstack (D: Data to
+ grow the object with). This is useful when you don't know the object size
+ in advance, so you can't use obstack_alloc() You must finalise it with
+ obstack_finish() before actually using it.
+
+ See http://gcc.gnu.org/onlinedocs/libiberty/Growing-Objects.html */
+
+#define XOBGROW(O, T, D) obstack_grow ((O), (D), sizeof (T))
+#define XOBGROWVEC(O, T, D, N) obstack_grow ((O), (D), sizeof (T) * (N))
+#define XOBSHRINK(O, T) obstack_blank ((O), -1 * sizeof (T))
+#define XOBSHRINKVEC(O, T, N) obstack_blank ((O), -1 * sizeof (T) * (N))
+#define XOBFINISH(O, T) ((T *) obstack_finish ((O)))
/* hex character manipulation routines */
=== modified file 'libcpp/files.c'
@@ -1210,9 +1210,7 @@ _cpp_init_files (cpp_reader *pfile)
pfile->nonexistent_file_hash = htab_create_alloc (127, htab_hash_string,
nonexistent_file_hash_eq,
NULL, xcalloc, free);
- _obstack_begin (&pfile->nonexistent_file_ob, 0, 0,
- (void *(*) (long)) xmalloc,
- (void (*) (void *)) free);
+ obstack_init (&pfile->nonexistent_file_ob);
}
/* Finalize everything in this source file. */
=== modified file 'libcpp/identifiers.c'
@@ -55,9 +55,7 @@ _cpp_init_hashtable (cpp_reader *pfile,
table = ht_create (13); /* 8K (=2^13) entries. */
table->alloc_node = alloc_node;
- _obstack_begin (&pfile->hash_ob, 0, 0,
- (void *(*) (long)) xmalloc,
- (void (*) (void *)) free);
+ obstack_init (&pfile->hash_ob);
}
table->pfile = pfile;
=== modified file 'libcpp/include/symtab.h'
@@ -21,6 +21,11 @@ along with this program; see the file CO
#include "obstack.h"
+#ifndef obstack_chunk_alloc
+ #define obstack_chunk_alloc (void *(*) (long)) xmalloc
+ #define obstack_chunk_free (void (*) (void *)) free
+#endif
+
#ifndef GTY
#define GTY(x) /* nothing */
#endif
=== modified file 'libcpp/init.c'
@@ -242,9 +242,7 @@ cpp_create_reader (enum c_lang lang, cpp
_cpp_expand_op_stack (pfile);
/* Initialize the buffer obstack. */
- _obstack_begin (&pfile->buffer_ob, 0, 0,
- (void *(*) (long)) xmalloc,
- (void (*) (void *)) free);
+ obstack_init (&pfile->buffer_ob);
_cpp_init_files (pfile);
=== modified file 'libcpp/internal.h'
@@ -51,6 +51,12 @@ struct cset_converter
int width;
};
+#ifndef obstack_chunk_alloc
+ /* Needed for calling obstack_init(). */
+ #define obstack_chunk_alloc (void *(*) (long)) xmalloc
+ #define obstack_chunk_free (void (*) (void *)) free
+#endif
+
#define BITS_PER_CPPCHAR_T (CHAR_BIT * sizeof (cppchar_t))
/* Test if a sign is valid within a preprocessing number. */
=== modified file 'libcpp/symtab.c'
@@ -62,9 +62,7 @@ ht_create (unsigned int order)
table = XCNEW (cpp_hash_table);
/* Strings need no alignment. */
- _obstack_begin (&table->stack, 0, 0,
- (void *(*) (long)) xmalloc,
- (void (*) (void *)) free);
+ obstack_init (&table->stack);
obstack_alignment_mask (&table->stack) = 0;