mirror of git://gcc.gnu.org/git/gcc.git
re PR other/17991 (Two-process fixincludes broken: pz_mn_name_pat undefined)
2004-08-14 Paolo Bonzini <bonzini@gnu.org>
PR other/17991
* Makefile.in (ALLOBJ, TESTOBJ, FIXOBJ): Add fixopts.o.
Update copyright year.
* fixfixes.c (main): Call initialize_opts from fixopts.c.
* fixincl.c (initialize): Call initialize_opts from fixopts.c,
do not include code for parsing options (environment vars).
(fix_with_system): Use a search path for applyfix, so that you
can run the test suite with two-process fixincludes.
* fixopts.c: New file.
* configure.ac: Add --enable-twoprocess. Export ac_exeext
to config.h. Default to --enable-twoprocess for MinGW32.
* config.h.in: Regenerate.
* configure: Regenerate.
From-SVN: r89087
This commit is contained in:
parent
e26ce7eddf
commit
ad643a75f7
|
|
@ -1,3 +1,20 @@
|
||||||
|
2004-08-14 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
|
PR other/17991
|
||||||
|
|
||||||
|
* Makefile.in (ALLOBJ, TESTOBJ, FIXOBJ): Add fixopts.o.
|
||||||
|
Update copyright year.
|
||||||
|
* fixfixes.c (main): Call initialize_opts from fixopts.c.
|
||||||
|
* fixincl.c (initialize): Call initialize_opts from fixopts.c,
|
||||||
|
do not include code for parsing options (environment vars).
|
||||||
|
(fix_with_system): Use a search path for applyfix, so that you
|
||||||
|
can run the test suite with two-process fixincludes.
|
||||||
|
* fixopts.c: New file.
|
||||||
|
* configure.ac: Add --enable-twoprocess. Export ac_exeext
|
||||||
|
to config.h. Default to --enable-twoprocess for MinGW32.
|
||||||
|
* config.h.in: Regenerate.
|
||||||
|
* configure: Regenerate.
|
||||||
|
|
||||||
2004-10-04 Loren J. Rittle <ljrittle@acm.org>
|
2004-10-04 Loren J. Rittle <ljrittle@acm.org>
|
||||||
|
|
||||||
* tests/base/sys/cdefs.h: Update from test area.
|
* tests/base/sys/cdefs.h: Update from test area.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# Makefile for fixincludes.
|
# Makefile for fixincludes.
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
|
# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
|
||||||
#This file is part of fixincludes.
|
#This file is part of fixincludes.
|
||||||
|
|
||||||
|
|
@ -60,10 +61,10 @@ default : all
|
||||||
LIBIBERTY=../libiberty/libiberty.a
|
LIBIBERTY=../libiberty/libiberty.a
|
||||||
|
|
||||||
ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
|
ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
|
||||||
fixlib.o
|
fixlib.o fixopts.o
|
||||||
|
|
||||||
TESTOBJ = fixincl.o fixlib.o fixtests.o
|
TESTOBJ = fixincl.o fixlib.o fixtests.o fixopts.o
|
||||||
FIXOBJ = fixfixes.o fixlib.o
|
FIXOBJ = fixfixes.o fixlib.o fixopts.o
|
||||||
|
|
||||||
HDR = server.h fixlib.h
|
HDR = server.h fixlib.h
|
||||||
FI = fixincl@EXEEXT@
|
FI = fixincl@EXEEXT@
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Defined to the executable file extension on the host system */
|
||||||
|
#undef EXE_EXT
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `abort', and to 0 if you don't.
|
/* Define to 1 if you have the declaration of `abort', and to 0 if you don't.
|
||||||
*/
|
*/
|
||||||
#undef HAVE_DECL_ABORT
|
#undef HAVE_DECL_ABORT
|
||||||
|
|
|
||||||
|
|
@ -847,6 +847,7 @@ if test -n "$ac_init_help"; then
|
||||||
Optional Features:
|
Optional Features:
|
||||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||||
|
--enable-twoprocess Use a separate process to apply the fixes
|
||||||
--enable-maintainer-mode enable make rules and dependencies not useful
|
--enable-maintainer-mode enable make rules and dependencies not useful
|
||||||
(and sometimes confusing) to the casual installer
|
(and sometimes confusing) to the casual installer
|
||||||
|
|
||||||
|
|
@ -2343,19 +2344,39 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
# Choose one or two-process fix methodology. Systems that cannot handle
|
# Choose one or two-process fix methodology. Systems that cannot handle
|
||||||
# bi-directional pipes must use the two process method.
|
# bi-directional pipes must use the two process method.
|
||||||
#
|
#
|
||||||
case $host in
|
# Check whether --enable-twoprocess or --disable-twoprocess was given.
|
||||||
|
if test "${enable_twoprocess+set}" = set; then
|
||||||
|
enableval="$enable_twoprocess"
|
||||||
|
if test "x$enable_twoprocess" = yes; then
|
||||||
|
TARGET=twoprocess
|
||||||
|
else
|
||||||
|
TARGET=oneprocess
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
case $host in
|
||||||
i?86-*-msdosdjgpp* | \
|
i?86-*-msdosdjgpp* | \
|
||||||
|
i?86-*-mingw32* | \
|
||||||
*-*-beos* )
|
*-*-beos* )
|
||||||
TARGET=twoprocess
|
TARGET=twoprocess
|
||||||
|
;;
|
||||||
|
|
||||||
|
* )
|
||||||
|
TARGET=oneprocess
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi;
|
||||||
|
|
||||||
|
|
||||||
|
if test $TARGET = twoprocess; then
|
||||||
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
cat >>confdefs.h <<\_ACEOF
|
||||||
#define SEPARATE_FIX_PROC 1
|
#define SEPARATE_FIX_PROC 1
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
;;
|
fi
|
||||||
|
|
||||||
|
case $host in
|
||||||
vax-dec-bsd* )
|
vax-dec-bsd* )
|
||||||
TARGET=oneprocess
|
|
||||||
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
cat >>confdefs.h <<\_ACEOF
|
||||||
#define exit xexit
|
#define exit xexit
|
||||||
|
|
@ -2367,13 +2388,14 @@ cat >>confdefs.h <<\_ACEOF
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
* )
|
|
||||||
TARGET=oneprocess
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define EXE_EXT "$ac_exeext"
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
|
|
||||||
ac_ext=c
|
ac_ext=c
|
||||||
|
|
|
||||||
|
|
@ -9,25 +9,41 @@ AC_PROG_CC
|
||||||
# Choose one or two-process fix methodology. Systems that cannot handle
|
# Choose one or two-process fix methodology. Systems that cannot handle
|
||||||
# bi-directional pipes must use the two process method.
|
# bi-directional pipes must use the two process method.
|
||||||
#
|
#
|
||||||
case $host in
|
AC_ARG_ENABLE([twoprocess],
|
||||||
|
[ --enable-twoprocess Use a separate process to apply the fixes],
|
||||||
|
[if test "x$enable_twoprocess" = yes; then
|
||||||
|
TARGET=twoprocess
|
||||||
|
else
|
||||||
|
TARGET=oneprocess
|
||||||
|
fi],
|
||||||
|
[case $host in
|
||||||
i?86-*-msdosdjgpp* | \
|
i?86-*-msdosdjgpp* | \
|
||||||
|
i?86-*-mingw32* | \
|
||||||
*-*-beos* )
|
*-*-beos* )
|
||||||
TARGET=twoprocess
|
TARGET=twoprocess
|
||||||
AC_DEFINE(SEPARATE_FIX_PROC, 1, [Define if testing and fixing are done by separate process])
|
|
||||||
;;
|
|
||||||
|
|
||||||
vax-dec-bsd* )
|
|
||||||
TARGET=oneprocess
|
|
||||||
AC_DEFINE(exit, xexit, [Define to xexit if the host system does not support atexit])
|
|
||||||
AC_DEFINE(atexit, xatexit, [Define to xatexit if the host system does not support atexit])
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
* )
|
* )
|
||||||
TARGET=oneprocess
|
TARGET=oneprocess
|
||||||
;;
|
;;
|
||||||
esac
|
esac])
|
||||||
AC_SUBST(TARGET)
|
AC_SUBST(TARGET)
|
||||||
|
|
||||||
|
if test $TARGET = twoprocess; then
|
||||||
|
AC_DEFINE(SEPARATE_FIX_PROC, 1,
|
||||||
|
[Define if testing and fixing are done by separate process])
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $host in
|
||||||
|
vax-dec-bsd* )
|
||||||
|
AC_DEFINE(exit, xexit, [Define to xexit if the host system does not support atexit])
|
||||||
|
AC_DEFINE(atexit, xatexit, [Define to xatexit if the host system does not support atexit])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([EXE_EXT], "$ac_exeext",
|
||||||
|
[Defined to the executable file extension on the host system])
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
AC_CHECK_HEADERS([stddef.h stdlib.h strings.h unistd.h fcntl.h sys/file.h \
|
AC_CHECK_HEADERS([stddef.h stdlib.h strings.h unistd.h fcntl.h sys/file.h \
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
Test to see if a particular fix should be applied to a header file.
|
Test to see if a particular fix should be applied to a header file.
|
||||||
|
|
||||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003
|
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
= = = = = = = = = = = = = = = = = = = = = = = = =
|
= = = = = = = = = = = = = = = = = = = = = = = = =
|
||||||
|
|
@ -749,6 +749,8 @@ main( int argc, char** argv )
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initialize_opts ();
|
||||||
|
|
||||||
{
|
{
|
||||||
char* pz = argv[1];
|
char* pz = argv[1];
|
||||||
long idx;
|
long idx;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
files which are fixed to work correctly with ANSI C and placed in a
|
files which are fixed to work correctly with ANSI C and placed in a
|
||||||
directory that GCC will search.
|
directory that GCC will search.
|
||||||
|
|
||||||
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
|
@ -23,6 +23,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#include "fixlib.h"
|
#include "fixlib.h"
|
||||||
|
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#if defined( HAVE_MMAP_FILE )
|
#if defined( HAVE_MMAP_FILE )
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#define BAD_ADDR ((void*)-1)
|
#define BAD_ADDR ((void*)-1)
|
||||||
|
|
@ -49,12 +51,6 @@ static const char z_std_preamble[] =
|
||||||
This had to be done to correct non-standard usages in the\n\
|
This had to be done to correct non-standard usages in the\n\
|
||||||
original, manufacturer supplied header file. */\n\n";
|
original, manufacturer supplied header file. */\n\n";
|
||||||
|
|
||||||
/* Working environment strings. Essentially, invocation 'options'. */
|
|
||||||
|
|
||||||
#define _ENV_(v,m,n,t) tCC* v = NULL;
|
|
||||||
ENV_TABLE
|
|
||||||
#undef _ENV_
|
|
||||||
|
|
||||||
int find_base_len = 0;
|
int find_base_len = 0;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
@ -214,18 +210,6 @@ do_version (void)
|
||||||
void
|
void
|
||||||
initialize ( int argc, char** argv )
|
initialize ( int argc, char** argv )
|
||||||
{
|
{
|
||||||
static const char var_not_found[] =
|
|
||||||
#ifndef __STDC__
|
|
||||||
"fixincl ERROR: %s environment variable not defined\n"
|
|
||||||
#else
|
|
||||||
"fixincl ERROR: %s environment variable not defined\n"
|
|
||||||
"each of these must be defined:\n"
|
|
||||||
# define _ENV_(vv,mm,nn,tt) "\t" nn " - " tt "\n"
|
|
||||||
ENV_TABLE
|
|
||||||
# undef _ENV_
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
|
|
||||||
xmalloc_set_program_name (argv[0]);
|
xmalloc_set_program_name (argv[0]);
|
||||||
|
|
||||||
switch (argc)
|
switch (argc)
|
||||||
|
|
@ -255,14 +239,7 @@ initialize ( int argc, char** argv )
|
||||||
signal (SIGCHLD, SIG_DFL);
|
signal (SIGCHLD, SIG_DFL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _ENV_(v,m,n,t) { tSCC var[] = n; \
|
initialize_opts ();
|
||||||
v = getenv (var); if (m && (v == NULL)) { \
|
|
||||||
fprintf (stderr, var_not_found, var); \
|
|
||||||
exit (EXIT_FAILURE); } }
|
|
||||||
|
|
||||||
ENV_TABLE
|
|
||||||
|
|
||||||
#undef _ENV_
|
|
||||||
|
|
||||||
if (ISDIGIT ( *pz_verbose ))
|
if (ISDIGIT ( *pz_verbose ))
|
||||||
verbose_level = (te_verbose)atoi( pz_verbose );
|
verbose_level = (te_verbose)atoi( pz_verbose );
|
||||||
|
|
@ -877,32 +854,41 @@ fix_with_system (tFixDesc* p_fixd,
|
||||||
char* pz_cmd;
|
char* pz_cmd;
|
||||||
char* pz_scan;
|
char* pz_scan;
|
||||||
size_t argsize;
|
size_t argsize;
|
||||||
|
int i;
|
||||||
|
tSCC z_applyfix_prog[2] = {
|
||||||
|
"/../fixincludes/applyfix" EXE_EXT,
|
||||||
|
"/../../fixincludes/applyfix" EXE_EXT };
|
||||||
|
|
||||||
if (p_fixd->fd_flags & FD_SUBROUTINE)
|
if (p_fixd->fd_flags & FD_SUBROUTINE)
|
||||||
{
|
for (i = 0; i < 2; i++)
|
||||||
tSCC z_applyfix_prog[] = "/fixinc/applyfix";
|
{
|
||||||
|
struct stat buf;
|
||||||
|
|
||||||
argsize = 32
|
argsize = 32
|
||||||
+ strlen( pz_orig_dir )
|
+ strlen( pz_orig_dir )
|
||||||
+ sizeof( z_applyfix_prog )
|
+ sizeof( z_applyfix_prog )
|
||||||
+ strlen( pz_fix_file )
|
+ strlen( pz_fix_file )
|
||||||
+ strlen( pz_file_source )
|
+ strlen( pz_file_source )
|
||||||
+ strlen( pz_temp_file );
|
+ strlen( pz_temp_file );
|
||||||
|
|
||||||
pz_cmd = xmalloc (argsize);
|
pz_cmd = xmalloc (argsize);
|
||||||
|
|
||||||
strcpy( pz_cmd, pz_orig_dir );
|
strcpy( pz_cmd, pz_orig_dir );
|
||||||
pz_scan = pz_cmd + strlen( pz_orig_dir );
|
pz_scan = pz_cmd + strlen( pz_orig_dir );
|
||||||
strcpy( pz_scan, z_applyfix_prog );
|
strcpy( pz_scan, z_applyfix_prog );
|
||||||
pz_scan += sizeof( z_applyfix_prog ) - 1;
|
pz_scan += sizeof( z_applyfix_prog ) - 1;
|
||||||
*(pz_scan++) = ' ';
|
|
||||||
|
|
||||||
/*
|
if (stat (pz_scan, &buf) != -1)
|
||||||
* Now add the fix number and file names that may be needed
|
{
|
||||||
*/
|
*(pz_scan++) = ' ';
|
||||||
sprintf (pz_scan, "%ld \'%s\' \'%s\' \'%s\'", p_fixd - fixDescList,
|
/*
|
||||||
pz_fix_file, pz_file_source, pz_temp_file);
|
* Now add the fix number and file names that may be needed
|
||||||
}
|
*/
|
||||||
|
sprintf (pz_scan, "%ld \'%s\' \'%s\' \'%s\'", p_fixd - fixDescList,
|
||||||
|
pz_fix_file, pz_file_source, pz_temp_file);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else /* NOT an "internal" fix: */
|
else /* NOT an "internal" fix: */
|
||||||
{
|
{
|
||||||
size_t parg_size;
|
size_t parg_size;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
files which are fixed to work correctly with ANSI C and placed in a
|
files which are fixed to work correctly with ANSI C and placed in a
|
||||||
directory that GCC will search.
|
directory that GCC will search.
|
||||||
|
|
||||||
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
|
Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -224,4 +224,6 @@ char* make_raw_shell_str ( char* pz_d, tCC* pz_s, size_t smax );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
t_bool mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
|
t_bool mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
|
||||||
|
|
||||||
|
void initialize_opts ( void );
|
||||||
#endif /* ! GCC_FIXLIB_H */
|
#endif /* ! GCC_FIXLIB_H */
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
/* Handle options that are passed from environment variables.
|
||||||
|
|
||||||
|
Copyright (C) 2004 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with GCC; see the file COPYING. If not, write to
|
||||||
|
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include "fixlib.h"
|
||||||
|
|
||||||
|
#define _ENV_(v,m,n,t) tCC* v = NULL;
|
||||||
|
ENV_TABLE
|
||||||
|
#undef _ENV_
|
||||||
|
|
||||||
|
void
|
||||||
|
initialize_opts ()
|
||||||
|
{
|
||||||
|
static const char var_not_found[] =
|
||||||
|
#ifndef __STDC__
|
||||||
|
"fixincl ERROR: %s environment variable not defined\n"
|
||||||
|
#else
|
||||||
|
"fixincl ERROR: %s environment variable not defined\n"
|
||||||
|
"each of these must be defined:\n"
|
||||||
|
# define _ENV_(vv,mm,nn,tt) "\t" nn " - " tt "\n"
|
||||||
|
ENV_TABLE
|
||||||
|
# undef _ENV_
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
#define _ENV_(v,m,n,t) { tSCC var[] = n; \
|
||||||
|
v = getenv (var); if (m && (v == NULL)) { \
|
||||||
|
fprintf (stderr, var_not_found, var); \
|
||||||
|
exit (EXIT_FAILURE); } }
|
||||||
|
|
||||||
|
ENV_TABLE
|
||||||
|
|
||||||
|
#undef _ENV_
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue