mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-05 18:47:30 +08:00
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>
|
||||
|
||||
* tests/base/sys/cdefs.h: Update from test area.
|
||||
|
@ -1,6 +1,7 @@
|
||||
# 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.
|
||||
|
||||
@ -60,10 +61,10 @@ default : all
|
||||
LIBIBERTY=../libiberty/libiberty.a
|
||||
|
||||
ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
|
||||
fixlib.o
|
||||
fixlib.o fixopts.o
|
||||
|
||||
TESTOBJ = fixincl.o fixlib.o fixtests.o
|
||||
FIXOBJ = fixfixes.o fixlib.o
|
||||
TESTOBJ = fixincl.o fixlib.o fixtests.o fixopts.o
|
||||
FIXOBJ = fixfixes.o fixlib.o fixopts.o
|
||||
|
||||
HDR = server.h fixlib.h
|
||||
FI = fixincl@EXEEXT@
|
||||
|
@ -1,5 +1,8 @@
|
||||
/* 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.
|
||||
*/
|
||||
#undef HAVE_DECL_ABORT
|
||||
|
36
fixincludes/configure
vendored
36
fixincludes/configure
vendored
@ -847,6 +847,7 @@ if test -n "$ac_init_help"; then
|
||||
Optional Features:
|
||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||
--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
|
||||
(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
|
||||
# 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-*-mingw32* | \
|
||||
*-*-beos* )
|
||||
TARGET=twoprocess
|
||||
;;
|
||||
|
||||
* )
|
||||
TARGET=oneprocess
|
||||
;;
|
||||
esac
|
||||
fi;
|
||||
|
||||
|
||||
if test $TARGET = twoprocess; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define SEPARATE_FIX_PROC 1
|
||||
_ACEOF
|
||||
|
||||
;;
|
||||
fi
|
||||
|
||||
case $host in
|
||||
vax-dec-bsd* )
|
||||
TARGET=oneprocess
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define exit xexit
|
||||
@ -2367,13 +2388,14 @@ cat >>confdefs.h <<\_ACEOF
|
||||
_ACEOF
|
||||
|
||||
;;
|
||||
|
||||
* )
|
||||
TARGET=oneprocess
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define EXE_EXT "$ac_exeext"
|
||||
_ACEOF
|
||||
|
||||
|
||||
# Checks for header files.
|
||||
|
||||
ac_ext=c
|
||||
|
@ -9,25 +9,41 @@ AC_PROG_CC
|
||||
# Choose one or two-process fix methodology. Systems that cannot handle
|
||||
# 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-*-mingw32* | \
|
||||
*-*-beos* )
|
||||
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
|
||||
;;
|
||||
esac
|
||||
esac])
|
||||
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.
|
||||
AC_HEADER_STDC
|
||||
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.
|
||||
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
= = = = = = = = = = = = = = = = = = = = = = = = =
|
||||
@ -749,6 +749,8 @@ main( int argc, char** argv )
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
initialize_opts ();
|
||||
|
||||
{
|
||||
char* pz = argv[1];
|
||||
long idx;
|
||||
|
@ -2,7 +2,7 @@
|
||||
files which are fixed to work correctly with ANSI C and placed in a
|
||||
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.
|
||||
|
||||
@ -23,6 +23,8 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "fixlib.h"
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#if defined( HAVE_MMAP_FILE )
|
||||
#include <sys/mman.h>
|
||||
#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\
|
||||
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;
|
||||
|
||||
typedef enum {
|
||||
@ -214,18 +210,6 @@ do_version (void)
|
||||
void
|
||||
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]);
|
||||
|
||||
switch (argc)
|
||||
@ -255,14 +239,7 @@ initialize ( int argc, char** argv )
|
||||
signal (SIGCHLD, SIG_DFL);
|
||||
#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_
|
||||
initialize_opts ();
|
||||
|
||||
if (ISDIGIT ( *pz_verbose ))
|
||||
verbose_level = (te_verbose)atoi( pz_verbose );
|
||||
@ -877,32 +854,41 @@ fix_with_system (tFixDesc* p_fixd,
|
||||
char* pz_cmd;
|
||||
char* pz_scan;
|
||||
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)
|
||||
{
|
||||
tSCC z_applyfix_prog[] = "/fixinc/applyfix";
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
struct stat buf;
|
||||
|
||||
argsize = 32
|
||||
+ strlen( pz_orig_dir )
|
||||
+ sizeof( z_applyfix_prog )
|
||||
+ strlen( pz_fix_file )
|
||||
+ strlen( pz_file_source )
|
||||
+ strlen( pz_temp_file );
|
||||
argsize = 32
|
||||
+ strlen( pz_orig_dir )
|
||||
+ sizeof( z_applyfix_prog )
|
||||
+ strlen( pz_fix_file )
|
||||
+ strlen( pz_file_source )
|
||||
+ strlen( pz_temp_file );
|
||||
|
||||
pz_cmd = xmalloc (argsize);
|
||||
pz_cmd = xmalloc (argsize);
|
||||
|
||||
strcpy( pz_cmd, pz_orig_dir );
|
||||
pz_scan = pz_cmd + strlen( pz_orig_dir );
|
||||
strcpy( pz_scan, z_applyfix_prog );
|
||||
pz_scan += sizeof( z_applyfix_prog ) - 1;
|
||||
*(pz_scan++) = ' ';
|
||||
strcpy( pz_cmd, pz_orig_dir );
|
||||
pz_scan = pz_cmd + strlen( pz_orig_dir );
|
||||
strcpy( pz_scan, z_applyfix_prog );
|
||||
pz_scan += sizeof( z_applyfix_prog ) - 1;
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
if (stat (pz_scan, &buf) != -1)
|
||||
{
|
||||
*(pz_scan++) = ' ';
|
||||
/*
|
||||
* 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: */
|
||||
{
|
||||
size_t parg_size;
|
||||
|
@ -3,7 +3,7 @@
|
||||
files which are fixed to work correctly with ANSI C and placed in a
|
||||
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.
|
||||
|
||||
|
@ -224,4 +224,6 @@ char* make_raw_shell_str ( char* pz_d, tCC* pz_s, size_t smax );
|
||||
#endif
|
||||
|
||||
t_bool mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
|
||||
|
||||
void initialize_opts ( void );
|
||||
#endif /* ! GCC_FIXLIB_H */
|
||||
|
51
fixincludes/fixopts.c
Normal file
51
fixincludes/fixopts.c
Normal file
@ -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
Block a user