Commit Graph

48 Commits

Author SHA1 Message Date
Andrew Burgess
ea23809688 libiberty/argv.c: remove only_whitespace
After the commit:

  commit 5e1d530da8 (gcc-buildargv)
  Date:   Sat Feb 10 11:22:13 2024 +0000

      libiberty/buildargv: handle input consisting of only white space

The function only_whitespace (in argv.c) was no longer being called.
Lets delete it.

There should be no user visible changes after this commit.

2024-07-29  Andrew Burgess  <aburgess@redhat.com>

libiberty/

	* argv.c (only_whitespace): Delete.
2024-08-05 12:35:38 +01:00
Andrew Burgess
5e1d530da8 libiberty/buildargv: handle input consisting of only white space
GDB makes use of the libiberty function buildargv for splitting the
inferior (program being debugged) argument string in the case where
the inferior is not being started under a shell.

I have recently been working to improve this area of GDB, and noticed
some unexpected behaviour to the libiberty function buildargv, when
the input is a string consisting only of white space.

What I observe is that if the input to buildargv is a string
containing only white space, then buildargv will return an argv list
containing a single empty argument, e.g.:

  char **argv = buildargv (" ");
  assert (*argv[0] == '\0');
  assert (argv[1] == NULL);

We get the same output from buildargv if the input is a single space,
or multiple spaces.  Other white space characters give the same
results.

This doesn't seem right to me, and in fact, there appears to be a work
around for this issue in expandargv where we have this code:

  /* If the file is empty or contains only whitespace, buildargv would
     return a single empty argument.  In this context we want no arguments,
     instead.  */
  if (only_whitespace (buffer))
    {
      file_argv = (char **) xmalloc (sizeof (char *));
      file_argv[0] = NULL;
    }
  else
    /* Parse the string.  */
    file_argv = buildargv (buffer);

I think that the correct behaviour in this situation is to return an
empty argv array, e.g.:

  char **argv = buildargv (" ");
  assert (argv[0] == NULL);

And it turns out that this is a trivial change to buildargv.  The diff
does look big, but this is because I've re-indented a block.  Check
with 'git diff -b' to see the minimal changes.  I've also removed the
work around from expandargv.

When testing this sort of thing I normally write the tests first, and
then fix the code.  In this case test-expandargv.c has sort-of been
used as a mechanism for testing the buildargv function (expandargv
does call buildargv most of the time), however, for this particular
issue the work around in expandargv (mentioned above) masked the
buildargv bug.

I did consider adding a new test-buildargv.c file, however, this would
have basically been a copy & paste of test-expandargv.c (with some
minor changes to call buildargv).  This would be fine now, but feels
like we would eventually end up with one file not being updated as
much as the other, and so test coverage would suffer.

Instead, I have added some explicit buildargv testing to the
test-expandargv.c file, this reuses the test input that is already
defined for expandargv.

Of course, once I removed the work around from expandargv then we now
do always call buildargv from expandargv, and so the bug I'm fixing
would impact both expandargv and buildargv, so maybe the new testing
is redundant?  I tend to think more testing is always better, so I've
left it in for now.

2024-07-16  Andrew Burgess  <aburgess@redhat.com>

libiberty/

	* argv.c (buildargv): Treat input of only whitespace as an empty
	argument list.
	(expandargv): Remove work around for intput that is only
	whitespace.
	* testsuite/test-expandargv.c: Add new tests 10, 11, and 12.
	Extend testing to call buildargv in more cases.
2024-07-16 13:52:03 +01:00
Andrew Burgess
a87954610f libiberty/buildargv: POSIX behaviour for backslash handling
GDB makes use of the libiberty function buildargv for splitting the
inferior (program being debugged) argument string in the case where
the inferior is not being started under a shell.

I have recently been working to improve this area of GDB, and have
tracked done some of the unexpected behaviour to the libiberty
function buildargv, and how it handles backslash escapes.

For reference, I've been mostly reading:

  https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html

The issues that I would like to fix are:

  1. Backslashes within single quotes should not be treated as an
  escape, thus: '\a' should split to \a, retaining the backslash.

  2. Backslashes within double quotes should only act as an escape if
  they are immediately before one of the characters $ (dollar),
  ` (backtick), " (double quote), ` (backslash), or \n (newline).  In
  all other cases a backslash should not be treated as an escape
  character.  Thus: "\a" should split to \a, but "\$" should split to
  $.

  3. A backslash-newline sequence should be treated as a line
  continuation, both the backslash and the newline should be removed.

I've updated libiberty and also added some tests.  All the existing
libiberty tests continue to pass, but I'm not sure if there is more
testing that should be done, buildargv is used within lto-wraper.cc,
so maybe there's some testing folk can suggest that I run?

2024-07-16  Andrew Burgess  <aburgess@redhat.com>

libiberty/

	* argv.c (buildargv): Backslashes within single quotes are
	literal, backslashes only escape POSIX defined special characters
	within double quotes, and backslashed newlines should act as line
	continuations.
	* testsuite/test-expandargv.c: Add new tests 7, 8, and 9.
2024-07-16 13:51:15 +01:00
Jakub Jelinek
a945c346f5 Update copyright years. 2024-01-03 12:19:35 +01:00
Costas Argyris
3fe017ee79 libiberty: writeargv: Simplify function error mode.
You are right, this is also a remnant of the old function design
that I completely missed.    Here is the follow-up patch for that.

Thanks for pointing it out.

Costas

On Tue, 6 Jun 2023 at 04:12, Jeff Law <jeffreyalaw@gmail.com> wrote:

    On 6/5/23 08:37, Costas Argyris via Gcc-patches wrote:
    > writeargv can be simplified by getting rid of the error exit mode
    > that was only relevant many years ago when the function used
    > to open the file descriptor internally.
    [ ... ]
    Thanks.  I've pushed this to the trunk.

    You could (as a follow-up) simplify it even further.  There's no need
    for the status variable as far as I can tell.  You could just have the
    final return be "return 0;" instead of "return status;".

libiberty/
	* argv.c (writeargv): Constant propagate "0" for "status",
	simplifying the code slightly.
2023-06-06 20:50:07 -06:00
Costas Argyris
4d1e4ce986 libiberty: writeargv: Simplify function error mode.
writeargv can be simplified by getting rid of the error exit mode
that was only relevant many years ago when the function used
to open the file descriptor internally.

0001-libiberty-writeargv-Simplify-function-error-mode.patch

From 1271552baee5561fa61652f4ca7673c9667e4f8f Mon Sep 17 00:00:00 2001
From: Costas Argyris <costas.argyris@gmail.com>
Date: Mon, 5 Jun 2023 15:02:06 +0100
Subject: [PATCH] libiberty: writeargv: Simplify function error mode.

The goto-based error mode was based on a previous version
of the function where it was responsible for opening the
file, so it had to close it upon any exit:

https://inbox.sourceware.org/gcc-patches/20070417200340.GM9017@sparrowhawk.codesourcery.com/

(thanks pinskia)

This is no longer the case though since now the function
takes the file descriptor as input, so the exit mode on
error can be just a simple return 1 statement.

libiberty/
	* argv.c (writeargv): Simplify & remove gotos.

Signed-off-by: Costas Argyris <costas.argyris@gmail.com>
2023-06-05 21:10:26 -06:00
Jakub Jelinek
83ffe9cde7 Update copyright years. 2023-01-16 11:52:17 +01:00
Jakub Jelinek
7adcbafe45 Update copyright years. 2022-01-03 10:42:10 +01:00
Ayush Mittal
0b2b7ef367 [PATCH v2] libiberty(argv.c): Fix memory leak in expandargv
libiberty:
	* argv.c (expandargv): free allocated buffer if read fails.
2021-02-18 22:00:06 -07:00
Jakub Jelinek
99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
Alexandre Oliva
18193e8f00 [libiberty] output empty args as a pair of quotes
writeargv writes out empty arguments in a way that expandargv skips
them instead of preserving them.  Fixed by writing out a pair of
quotes for them.


for  libiberty/ChangeLog

	* argv.c (writeargv): Output empty args as "".
2020-01-23 16:45:24 -03:00
Jakub Jelinek
8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Jakub Jelinek
a554497024 Update copyright years.
From-SVN: r267494
2019-01-01 13:31:55 +01:00
Daniel van Gerpen
d6df811e5d argv.c (expandargv): Fix memory leak for expanded arguments.
* argv.c (expandargv): Fix memory leak for expanded
        arguments.

From-SVN: r259775
2018-04-30 12:00:49 -06:00
Daniel van Gerpen
3ec62f5406 argv.c (expandargv): Correct check for dynamically allocated argv.
2018-01-10  Daniel van Gerpen  <daniel@vangerpen.de>

	* argv.c (expandargv): Correct check for dynamically
	allocated argv.

From-SVN: r256460
2018-01-10 15:40:53 -07:00
Jakub Jelinek
85ec4feb11 Update copyright years.
From-SVN: r256169
2018-01-03 11:03:58 +01:00
Jakub Jelinek
2afd3180c5 Update copyright years.
From-SVN: r244052
2017-01-04 12:30:51 +01:00
DJ Delorie
2207ff5dd1 * argv.c (expandargv): Check for directories passed as @-files.
From-SVN: r243280
2016-12-06 01:38:23 -05:00
Mike Frysinger
66f49f07d8 libiberty: {count,dup,write}argv: constify argv input slightly
Would be more useful if we could use "const char * const *", but there's
a long standing bug where gcc warns about incompatible pointers when you
try to pass in "char **".  We can at least constify the array itself as
gcc will not warn in that case.

From-SVN: r232089
2016-01-05 20:23:30 +00:00
Mike Frysinger
ae120683c6 libiberty: dupargv: rewrite to use xstrdup
This func is basically open coding the xstrdup function, so gut it
and use that directly.

From-SVN: r232086
2016-01-05 19:55:21 +00:00
H.J. Lu
fabfa16b37 Replace malloc with xmalloc
* argv.c (dupargv): Replace malloc with xmalloc.  Don't check
	xmalloc return.
	(buildargv): Likewise.  Also replace strdup with xstrdup.
	(expandargv): Don't check dupargv return.

From-SVN: r190767
2012-08-28 18:03:21 -07:00
H.J. Lu
55529d369c Replace alloca with xmalloc/free
PR binutils/14526
	* argv.c (buildargv): Replace alloca with xmalloc/free.

From-SVN: r190766
2012-08-28 17:46:36 -07:00
Doug Evans
be50fcea4e libiberty.h (countargv): Declare.
include/
	* libiberty.h (countargv): Declare.

	libiberty/
	* argv.c (countargv): New function.

From-SVN: r179318
2011-09-28 19:04:30 +00:00
Nick Clifton
ec760bea7f argv.c (expandargv): Limit the number of times that response files are opened in order to prevent...
* argv.c (expandargv): Limit the number of times that response
        files are opened in order to prevent infinite recursion.

From-SVN: r163222
2010-08-13 11:36:38 +00:00
Daniel Gutson
70277b3073 argv.c (consume_whitespace): New function.
2009-10-08  Daniel Gutson  <dgutson@codesourcery.com>
        Daniel Jacobowitz  <dan@codesourcery.com>
        Pedro Alves  <pedro@codesourcery.com>

        libiberty/
        * argv.c (consume_whitespace): New function.
        (only_whitespace): New function.
        (buildargv): Always use ISSPACE by calling consume_whitespace.
        (expandargv): Skip empty files.  Do not stop at the first empty
        argument (calling only_whitespace)..
        * testsuite/test-expandargv.c: (test_data): Test empty lines
        and empty arguments.
        (run_tests): Fix false positives due to shorter arguments.


Co-Authored-By: Daniel Jacobowitz <dan@codesourcery.com>
Co-Authored-By: Pedro Alves <pedro@codesourcery.com>

From-SVN: r152560
2009-10-08 15:14:41 +00:00
DJ Delorie
f4e00f444b argv.c (writeargv): Fix typo in inline documentation.
* argv.c (writeargv): Fix typo in inline documentation.
* functions.texi: Regenerate.

From-SVN: r126855
2007-07-23 13:29:17 -04:00
Simon Baldwin
38bb34854d argv.c (writeargv): Removed declaration of unused variable.
2007-07-02  Simon Baldwin <simonb@google.com>

        * argv.c (writeargv): Removed declaration of unused variable.

From-SVN: r126217
2007-07-02 17:25:37 +00:00
Nathan Froyd
2091ff6689 libiberty.h (writeargv): Declare.
include/
2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>

	* libiberty.h (writeargv): Declare.

libiberty/
2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>

	* argv.c (writeargv): New function.

gcc/
2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc.c (at_file_supplied): New variable.
	(main): Set it if we expanded argv.
	(do_spec_1): Pass an @-file to the linker if we were called with
	an @-file argument and HAVE_GNU_LD.
	* collect2.c (at_file_supplied): New variable.
	(response_file): New variable.
	(collect_exit): Unlink response_file if necessary.
	(handler): Likewise.
	(do_wait): Likewise.
	(main): Set at_file_supplied if we expanded argv.
	(collect_execute): Pass an @-file to subprocesses if we were called
	with an @-file argument.
	* configure.ac: Add define for HAVE_GNU_LD.
	* configure: Regenerate.
	* config.in: Regenerate.

From-SVN: r124532
2007-05-08 00:37:39 +00:00
Thomas Neumann
017133fdc1 argv.c: Use ANSI C declarations.
* argv.c: Use ANSI C declarations.
* make-relative-prefix.c: Likewise.

From-SVN: r123722
2007-04-11 15:02:45 -04:00
Carlos O'Donell
974c2c56f4 Makefile.in: Add test-expandargv test.
libiberty/

2006-01-20  Carlos O'Donell  <carlos@codesourcery.com>

	* testsuite/Makefile.in: Add test-expandargv test.
	* testsuite/test-expandargv.c: New test.
	* argv.c (expandargv): Check for errors with ferror,
	rather than just by looking at return value from fread.

From-SVN: r110047
2006-01-20 22:55:36 +00:00
Mark Mitchell
affbb54ac4 * argv.c (expandargv): Do not use xmalloc_failed.
From-SVN: r104695
2005-09-27 15:21:41 +00:00
Mark Mitchell
97393d0a03 libiberty.h (expandargv): New function.
* libiberty.h (expandargv): New function.

	* argv.c (safe-ctype.h): Include it.
	(ISBLANK): Remove.
	(stdio.h): Include.
	(buildargv): Use ISSPACE instead of ISBLANK.
	(expandargv): New function.

From-SVN: r104664
2005-09-26 20:55:10 +00:00
Nick Clifton
ee58dffdbc Update the address and phone number of the FSF organization.
From-SVN: r99519
2005-05-10 15:33:18 +00:00
Gabriel Dos Reis
3c60ae5ab5 asprintf.c: Include config.h.
* asprintf.c: Include config.h.
        * basename.c: Likewise.
        * fdmatch.c: Likewise.
        * hex.c: Likewise.
        * lbasename.c: Likewise.
        * spaces.c: Likewise.
        * xatexit.c:Likewise.
        * configure.ac:  Do check declarations for basename, ffs, asprintf
        and vasprintf for real.
        * configure: Regenerate.

From-SVN: r98218
2005-04-16 00:40:08 +00:00
Gabriel Dos Reis
0e0af50b89 argv.c (dupargv): Mallocate space of argv[argc], not sizeof(char *) of that amuont.
* argv.c (dupargv): Mallocate space of argv[argc], not
	sizeof(char *) of that amuont.  Cast result to char *.

From-SVN: r98083
2005-04-13 13:49:19 +00:00
Gabriel Dos Reis
9486db4fb6 demangle.h: Remove uses of PARAMS.
include/
2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        * demangle.h: Remove uses of PARAMS.

        * libiberty.h (ANSI_PROTOTYPES): Remove guard since
        ANSI_PROTOTYPES is always assumed.
        Remove uses of PARAMS throughout.

libiberty/
2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        Convert libiberty to use ISO C prototype style 2/n.
        * cp-demangle.h: Remove uses of PARAMS.
        * cp-demangle.c: Likewise.
        (d_dump, cplus_demangle_fill_name,
        cplus_demangle_fill_extended_operator,
        cplus_demangle_fill_ctor,
        cplus_demangle_fill_dtor, d_make_empty, d_make_comp,
        d_make_name,
        d_make_builtin_type, d_make_operator,
        d_make_extended_operator,
        d_make_ctor, d_make_dtor, d_make_template_param, d_make_sub,
        cplus_demangle_mangled_name, has_return_type,
        is_ctor_dtor_or_conversion, d_encoding, d_name, d_nested_name,
        d_prefix, d_unqualified_name, d_source_name, d_number,
        d_identifier, d_operator_name, d_special_name, d_call_offset,
        d_ctor_dtor_name, cplus_demangle_type, d_cv_qualifiers,
        d_function_type, d_bare_function_type, d_class_enum_type,
        d_array_type, d_pointer_to_member_type, d_template_param,
        d_template_args, d_template_arg, d_expression, d_expr_primary,
        d_local_name, d_discriminator, d_add_substitution,
        d_substitution, d_print_resize, d_print_append_char,
        d_print_append_buffer, d_print_error, cplus_demangle_print,
        d_print_comp, d_print_java_identifier, d_print_mod_list,
        d_print_mod, d_print_function_type, d_print_array_type,
        d_print_expr_op, d_print_cast, cplus_demangle_init_info,
        d_demangle, __cxa_demangle, cplus_demangle_v3,
        java_demangle_v3,
        is_ctor_or_dtor, is_gnu_v3_mangled_ctor,
        is_gnu_v3_mangled_dtor,
        print_usage, main):

2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        Convert libiberty to ISO C prototype style 1/n.
        * _doprnt.c: Remove conditional #include <varargs.h> on
        ANSI_PROTOTYPES as the latter is always assumed.
        (_doprnt, checkit, main): Use ISO C prototype.
        * alloca.c (find_stack_direction, C_alloca): Use ISO C
        prototype.
        * argv.c: Remove conditional #includes on ANSI_PROTOTYPES.
        (dupargv, freeargv, buildargv, main): Use ISO C prototype.
        * atexit.c (atexit): Likewise
        * asprintf.c: Remove conditional include on ANSI_PROTOTYPES.
        (asprintf): Use ISO C prototype.
        * basename.c (basename): Likewise
        * bcmp.c (bcmp): Likewise.
        * bcopy.c (bcopy): Likewise.
        * bzero.c (bzero): Likewise.
        * bsearch.c (bsearch): Likewise.  Improve const-correctness.
        * choose-temp.c (choose_temp_base): Likewise.
        * calloc.c: Remove conditional #include on ANSI_PROTOTYPES.
        (calloc): Use ISO C prototype.
        * clock.c (clock): Likewise.
        * concat.c: Remove conditional #include on ANSI_PROTOTYPES.
        (vconcat_length, vconcat_copy, concat_length, concat_copy,
        concat_copy2, concat, reconcat, main): Use ISO C prototype.
        * copysign.c (copysign): Likewise.

From-SVN: r97085
2005-03-26 19:24:33 +00:00
Kaveh R. Ghazi
c9ac9147cf argv.c: Fix comments.
* argv.c: Fix comments.
	* calloc.c: Don't unnecessarily include "libiberty.h".
	(bzero): Add prototype.
	* floatformat.c: Include "ansidecl.h", rely on ANSI_PROTOTYPES.
	* getcwd.c (getcwd): Use standard definition to avoid conflicts
	with system headers.
	* hashtab.c (htab_traverse): Delete unused variables.
	* rename.c: Include "ansidecl.h".
	(rename): Use standard definition to avoid conflicts with system
	headers.
	* strsignal.c: Rely on ANSI_PROTOTYPES.
	* strstr.c: Check GNUC >= 2, not GNUC == 2.
	* vfprintf.c: Include "ansidecl.h", rely on ANSI_PROTOTYPES.
	* vprintf.c: Include "ansidecl.h" earlier, rely on
	ANSI_PROTOTYPES.
	* vsprintf.c: Include "ansidecl.h" earlier, rely on
	ANSI_PROTOTYPES and possibly include <stdarg.h>.

	* Makefile.in: Regenerate dependencies.

From-SVN: r65659
2003-04-15 20:36:33 +00:00
Roger Sayle
0ae0f1b084 argv.c: Use ANSI_PROTOTYPES instead of __STDC__.
* argv.c: Use ANSI_PROTOTYPES instead of __STDC__.
	* memchr.c: Likewise.
	* strcasecmp.c: Likewise.
	* strncasecmp.c: Likewise.
	* strncmp.c: Likewise.
	* xatexit.c: Likewise.
	* xmalloc.c: Likewise.

	* copysign.c: Use traditional function declaration instead of DEFUN.
	* sigsetmask.c: Likewise.

	* memcmp.c: Both of the above, ANSI_PROTOTYPES and DEFUN.
	* memset.c: Likewise.

	* memcpy.c: ANSI_PROTOTYPES, DEFUN and prototype bcopy.
	* memmove.c: Likewise.

From-SVN: r65619
2003-04-15 03:35:47 +00:00
DJ Delorie
5bed56d982 argv.c, [...]: Improve manual formatting.
* argv.c, asprintf.c, choose-temp.c, concat.c, cplus-dem.c,
ffs.c, fnmatch.txh, getruntime.c, make-temp-file.c,
mkstemps.c, pexecute.c, random.c, strsitnal.c, vasprintf.c:
Improve manual formatting.
* functions.texi: Regenerate.

From-SVN: r46323
2001-10-17 17:15:41 -04:00
DJ Delorie
aac04c15d7 Makefile.in (TEXIFILES): Add fnmatch.txh.
* Makefile.in (TEXIFILES): Add fnmatch.txh.
(maint-undoc): New.
maint-tool: Add "undoc" tool.
* alloca.c, argv.c, asprintf.c, choose-temp.c, concat.c,
fdmatch.c, ffs.c, getruntime.c, insque.c, lbasename.c,
make-temp-file.c, mkstemps.c, pexecute.c, random.c, spaces.c,
strerror.s, strsignal.c, strtol.c, vasprintf.c: Add or update
documentation.
* fnmatch.txh: New.
* functions.texi: Regenerate.

From-SVN: r46274
2001-10-15 22:50:13 -04:00
Kaveh R. Ghazi
0be6abca22 demangle.h (demangler_engine): Const-ify.
include:
	* demangle.h (demangler_engine): Const-ify.
	* libiberty.h (buildargv): Likewise.

libiberty:
	* argv.c (buildargv, tests, main): Const-ify.
	* cp-demangle.c (operator_code): Likewise.
	* cplus-dem.c (optable, libiberty_demanglers,
	cplus_demangle_set_style, cplus_demangle_name_to_style,
	print_demangler_list): Likewise.
	* hashtab.c (higher_prime_number): Likewise.
	* strcasecmp.c (charmap): Likewise.
	* strerror.c (error_info, strerror, main): Likewise.
	* strncasecmp.c (charmap): Likewise.
	* strsignal.c (signal_info): Likewise.

From-SVN: r46060
2001-10-07 14:45:04 +00:00
Zack Weinberg
b548dffbda aclocal.m4 (libiberty_AC_FUNC_C_ALLOCA): New.
libiberty:
	* aclocal.m4 (libiberty_AC_FUNC_C_ALLOCA): New.
	* configure.in: Replace all alloca logic with a simple use of
	the above new macro.
	* config.table: Kill *-*-beos* entry.
	* config/mh-beos: Delete.
	* configure, config.in: Regenerate.

	* Makefile.in (ALLOCA, HFILES): Kill.
	(REQUIRED_OFILES): Add alloca.o.
	(alloca.o): Depend on libiberty.h.
	(argv.o): Don't depend on alloca-conf.h.
	* alloca-conf.h: Delete.
	* alloca.c: Include libiberty.h.  Kill all #ifdef emacs
	blocks.  Provide the C alloca unconditionally.  Use PTR where
	appropriate.  Make i00afunc static.
	* argv.c: Don't include alloca-conf.h.

include:
	* libiberty.h: Prototype C_alloca; define alloca to either
	__builtin_alloca or C_alloca as appropriate.

gcc:
	* aclocal.m4 (AM_GNU_GETTEXT): Don't AC_REQUIRE
	AC_FUNC_ALLOCA.
	* configure, config.in: Regenerate.
	* config.gcc: Remove references to deleted files.

	* genattr.c, genattrtab.c, genextract.c, genoutput.c,
	genrecog.c, rtl.c: Do not use alloca anywhere.

	* Makefile.in, build-make, system.h, config/x-interix,
	config/x-svr4, config/xm-interix.h, config/xm-openbsd.h,
	config/alpha/xm-alpha.h, config/alpha/xm-vms.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/h8300/xm-h8300.h, config/i370/x-oe,
	config/i370/xm-linux.h, config/i386/x-aix, config/i386/x-beos,
	config/i386/x-ncr3000, config/i386/x-sco5,
	config/i386/xm-dgux.h, config/i860/x-sysv4,
	config/i960/xm-i960.h, config/m32r/xm-m32r.h,
	config/m68k/x-crds, config/m68k/x-dpx2, config/m68k/x-hp320,
	config/m68k/x-hp320g, config/m69k/x-mot3300,
	config/m68k/x-mot3300-gas, config/m68k/xm-amix.h,
	config/m68k/xm-hp320.h, config/m68k/xm-m68kv.h,
	config/m68k/xm-mot3300.h, config/m88k/x-dolph,
	config/m88k/x-sysv4, config/m88k/x-tekXD88,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/x-iris, config/mips/x-iris3,
	config/mips/x-sni-svr4, config/mips/x-sysv,
	config/mips/xm-iris6.h, config/mips/xm-mips.h,
	config/mips/xm-nws3250v4.h, config/pa/x-hpux,
	config/pa/x-pa-mpeix, config/pa/xm-pa.h,
	config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h,
	config/pa/xm-papro.h, config/romp/xm-romp.h,
	config/rs6000/x-aix31, config/rs6000/x-aix41,
	config/rs6000/x-beos, config/rs6000/x-lynx,
	config/rs6000/x-mach, config/rs6000/x-rs6000,
	config/rs6000/x-sysv4, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/x-sysv4, config/sparc/xm-linux.h,
	config/sparc/xm-pbd.h, config/sparc/xm-sparc.h,
	config/vax/xm-vms.h: Eradicate all references to alloca and
	related stuff.

	* config/xm-alloca.h, config/clipper/x-clix,
	config/i386/xm-sysv4.h, config/i860/x-fx2800,
	config/i860/x-sysv3, config/m88k/x-sysv3,
	config/sparc/xm-sol2.h, config/we32k/x-we32k: Delete
	(contained only alloca related hacks).

	* config/i386/xm-beos.h, config/rs6000/xm-beos.h: Just define
	USE_C_ALLOCA.

From-SVN: r40259
2001-03-06 09:52:35 +00:00
Zack Weinberg
f6bbde28c4 safe-ctype.h: New file.
include:
	* safe-ctype.h: New file.
libiberty:
	* safe-ctype.c: New file.
	* Makefile.in (CFILES): Add safe-ctype.c.
	(REQUIRED_OFILES): Add safe-ctype.o.

	* argv.c: Define ISBLANK and use it, not isspace.
	* basename.c, cplus-dem.c, fnmatch.c, pexecute.c, strtod.c,
	strtol.c, strtoul.c: Include safe-ctype.h, not ctype.h.  Use
	uppercase ctype macros.  Don't test ISUPPER(c)/ISLOWER(c)
	before calling TOLOWER(c)/TOUPPER(c).
gcc:
	* Makefile.in (HOST_RTL): Add safe-ctype.o.
	(safe-ctype.o): New rule.
	* system.h: Include safe-ctype.h, not ctype.h.  No need to
	wrap ctype macros.

	* cpphash.h: Zap IStable and related macros.  Define is_* in
	terms of safe-ctype.h macros.
	* cppinit.c: Delete the IStable and all related code.

	* tradcpp.c: Delete is_idchar, is_idstart, is_hor_space, and
	is_space arrays.  Delete initialize_char_syntax.  Change all
	references to the above arrays to use macros instead.
	* tradcpp.h: Define is_idchar, is_idstart, is_space, and
	is_nvspace in terms of safe_ctype.h's macros.
	* tradcif.y: is_idchar, is_idstart are macros not arrays.

	* config/i370/i370.c, config/winnt/dirent.c,
	config/winnt/fixinc-nt.c, config/winnt/ld.c:
	Use uppercase ctype macros.  If we included ctype.h,
	include safe-ctype.h instead.

	* fixinc/fixfixes.c: Use uppercase ctype macros.  Don't test
	ISLOWER(c) before calling TOUPPER(c).
	* fixinc/fixincl.c (extract_quoted_files): Simplify out some gunk.
	* fixinc/gnu-regex.c: Include safe-ctype.h, not ctype.h.  No need to
	wrap ctype macros.  Don't test ISUPPER(x) before calling TOLOWER(x).
gcc/ch:
	* lex.c: Don't bother checking whether ISUPPER(c) before
	calling TOLOWER(c).  Don't bother checking whether isascii(c)
	before testing ISSPACE(c); ISSPACE(c) includes '\n'.
gcc/f:
	* Make-lang.in: Link f/fini with safe-ctype.o.
	* bad.c: Don't test ISUPPER(c) || ISLOWER(c) before calling TOUPPER(c).
	* com.c: Use TOUPPER, not ffesrc_toupper.
	* fini.c: Don't test ISALPHA(c) before calling TOUPPER(c)/TOLOWER(c).
	* intrin.c: Don't test IN_CTYPE_DOMAIN(c).
	* src.c: Delete ffesrc_toupper_ and ffesrc_tolower_ and their
	initializing code; use TOUPPER and TOLOWER instead of
	ffesrc_toupper and ffesrc_tolower.
	* src.h: Don't declare ffesrc_toupper_ or ffesrc_tolower_.
	Don't define ffesrc_toupper or ffesrc_tolower.
gcc/java:
	* jvgenmain.c: Use ISPRINT not isascii.

From-SVN: r38124
2000-12-08 03:00:26 +00:00
Richard Henderson
a81c752ad3 argv.c: Include stdlib.h and string.h instead of prototyping directly.
* argv.c: Include stdlib.h and string.h instead of
        prototyping directly.
        * choose-temp.c: Conditionally include string.h.

From-SVN: r28099
1999-07-14 10:29:38 -07:00
Kaveh R. Ghazi
087aa39894 Warning fixes:
* argv.c (buildargv): Cast the result of alloca in assignment.
        * choose-temp.c: Include stdlib.h.
        * cplus-dem.c (demangle_arm_pt): Remove unused prototype.
        (snarf_numeric_literal): Constify first parameter.
        (code_for_qualifier): Avoid a gcc extension, make the parameter an
        int, not a char.
        (demangle_qualifier): Likewise.
        (demangle_signature): Cast the argument of a ctype function to
        unsigned char.
        (arm_pt): Add parens around assignment used as truth value.
        (demangle_arm_hp_template): Constify variable `args'.
        (do_hpacc_template_const_value): Cast the argument of a ctype
        function to unsigned char.
        (do_hpacc_template_literal): Remove unused variable `i'.
        (snarf_numeric_literal): Constify parameter `args'.
        Cast the argument of a ctype function to unsigned char.
        * floatformat.c (floatformat_to_double): Add explicit braces to
        avoid ambiguous `else'.
        * fnmatch.c (fnmatch): Change type of variables `c', `c1',
        `cstart' and `cend' to unsigned char.  Cast the argument of macro
        `FOLD', which uses ctype functions, to unsigned char.
        * objalloc.c (free): Add prototype.

From-SVN: r24392
1998-12-22 06:57:17 +00:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
Jason Merrill
19ddc834bc cplus-dem.c (demangle_signature): Don't look for return types on constructors.
Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>

	* cplus-dem.c (demangle_signature): Don't look for return types on
	constructors.  Handle member template constructors.

and update from devo.

From-SVN: r15901
1997-10-14 15:10:45 -04:00
Jason Merrill
6599da043e Initial revision
From-SVN: r14877
1997-08-21 18:57:35 -04:00