Makefile.in (machname.h): Remove.

2004-08-30  Paolo Bonzini  <bonzini@gnu.org>

	* fixinc/Makefile.in (machname.h): Remove.
	(fixincl.x): Do not pass $@ to genfixes.
	* fixinc/genfixes: Remove code to produce machname.h.
	* fixinc/fixincl.sh: Move it here instead.
	* fixinc/fixlib.c: Do not conditionalize on MN_NAME_PAT's presence,
	instead check if pz_mn_name_pat is NULL.  Make mn_get_regexps
	return a bool indicating whether pz_mn_name_pat is NULL.
	* fixinc/fixlib.h: Do not conditionalize on MN_NAME_PAT's presence.
	Declare extern C variables for the ENV_TABLE.
	* fixinc/fixfixes.c: Do not conditionalize on MN_NAME_PAT's presence,
	instead use the result of mn_get_regexps.
	* fixinc/fixtests.c: Likewise.

From-SVN: r86771
This commit is contained in:
Paolo Bonzini 2004-08-30 13:32:57 +00:00 committed by Paolo Bonzini
parent fc6633e0cf
commit 89b8abbf7d
8 changed files with 82 additions and 86 deletions

View File

@ -3,6 +3,21 @@
* tree.h (BINFO_PRIMARY_BASE_OF): Remove.
(struct tree_binfo): Remove primary field.
2004-08-30 Paolo Bonzini <bonzini@gnu.org>
* fixinc/Makefile.in (machname.h): Remove.
(fixincl.x): Do not pass $@ to genfixes.
* fixinc/genfixes: Remove code to produce machname.h.
* fixinc/fixincl.sh: Move it here instead.
* fixinc/fixlib.c: Do not conditionalize on MN_NAME_PAT's presence,
instead check if pz_mn_name_pat is NULL. Make mn_get_regexps
return a bool indicating whether pz_mn_name_pat is NULL.
* fixinc/fixlib.h: Do not conditionalize on MN_NAME_PAT's presence.
Declare extern C variables for the ENV_TABLE.
* fixinc/fixfixes.c: Do not conditionalize on MN_NAME_PAT's presence,
instead use the result of mn_get_regexps.
* fixinc/fixtests.c: Likewise.
2004-08-30 Paolo Bonzini <bonzini@gnu.org>
* configure.ac: Do not run fixincludes after stage1 during

View File

@ -73,7 +73,7 @@ ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
TESTOBJ = fixincl.o fixlib.o fixtests.o
FIXOBJ = fixfixes.o fixlib.o
HDR = server.h fixlib.h machname.h
HDR = server.h fixlib.h
FI = fixincl@build_exeext@
AF = applyfix@build_exeext@
@ -102,17 +102,11 @@ server.o : server.c
procopen.o : procopen.c
fixlib.o : fixlib.c
# 'machname.h' is built in the build directory.
# 'fixincl.x' in the source dir.
#
machname.h: ../specs
$(SHELL) $(srcdir)/genfixes $@
$(srcdir)/fixincl.x: @MAINT@ fixincl.tpl inclhack.def
cd $(srcdir) ; $(SHELL) ./genfixes $@
cd $(srcdir) ; $(SHELL) ./genfixes
clean:
rm -f *.o *-stamp $(AF) $(FI) machname.h *~
rm -f *.o *-stamp $(AF) $(FI) *~
maintainer-clean : clean
rm -f $(srcdir)/fixincl.x
@ -129,8 +123,7 @@ install-bin : $(TARGETS)
Makefile: Makefile.in ../config.status
cd .. \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
$(SHELL) ./config.status
&& $(SHELL) ./config.status $(subdir)/Makefile
check : $(TARGETS)
autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def

View File

@ -488,9 +488,6 @@ FIX_PROC_HEAD( char_macro_def_fix )
FIX_PROC_HEAD( machine_name_fix )
{
#ifndef MN_NAME_PAT
fputs( "The target machine has no needed machine name fixes\n", stderr );
#else
regmatch_t match[2];
const char *line, *base, *limit, *p, *q;
regex_t *label_re, *name_re;
@ -499,7 +496,11 @@ FIX_PROC_HEAD( machine_name_fix )
IGNORE_ARG(filname);
IGNORE_ARG(p_fixd);
mn_get_regexps (&label_re, &name_re, "machine_name_fix");
if (!mn_get_regexps (&label_re, &name_re, "machine_name_fix"))
{
fputs( "The target machine has no needed machine name fixes\n", stderr );
goto done;
}
scratch[0] = '_';
scratch[1] = '_';
@ -577,7 +578,6 @@ FIX_PROC_HEAD( machine_name_fix )
}
}
done:
#endif
fputs (text, stdout);
}

View File

@ -131,6 +131,36 @@ else
LINKS=false
fi
# # # # # # # # # # # # # # # # # # # # #
#
# Extract from the gcc -dM and from the specs file all the predefined
# macros that are not in the C89 reserved namespace (the reserved
# namespace is all identifiers beginnning with two underscores or one
# underscore followed by a capital letter). The specs file is in
# ${ORIGDIR}, as is cc1. A regular expression to find any of those
# macros in a header file is written to MN_NAME_PAT.
#
# Note dependency on ASCII. \012 = newline.
# tr ' ' '\n' is, alas, not portable.
echo | ${ORIGDIR}/cc1 -quiet -dM -E - |
sed -n 's/^#define \([a-zA-Z][a-zA-Z0-9_]*\).*/\1/p' > mn.T
tr -s '\040\011' '\012\012' < ${ORIGDIR}/specs |
sed -n 's/^.*-D\([a-zA-Z_][a-zA-Z0-9_]*\).*/\1/p' >> mn.T
if sort -u mn.T | grep -v '^_[_A-Z]' > mn.U
then
if test $VERBOSE -gt 0
then echo "Forbidden identifiers: `tr '\012' ' ' <mn.U`" ; fi
sed 's/^/\\\\</; s/$/\\\\>/; $!s/$/|/' < mn.U | tr -d '\012' > mn.V
MN_NAME_PAT="`cat mn.V`"
export MN_NAME_PAT
else
if test $VERBOSE -gt 0
then echo "No forbidden identifiers defined by this target" ; fi
fi
rm -f mn.[TUV]
# # # # # # # # # # # # # # # # # # # # #
#
# Search each input directory for broken header files.

View File

@ -204,32 +204,30 @@ compile_re( tCC* pat, regex_t* re, int match, tCC* e1, tCC* e2 )
/* * * * * * * * * * * * *
Helper routine and data for the machine_name test and fix.
machname.h is created by black magic in the Makefile. */
#ifdef MN_NAME_PAT
Helper routine and data for the machine_name test and fix. */
tSCC mn_label_pat[] = "^[ \t]*#[ \t]*(if|ifdef|ifndef)[ \t]+";
static regex_t mn_label_re;
tSCC mn_name_pat[] = MN_NAME_PAT;
static regex_t mn_name_re;
static int mn_compiled = 0;
void
t_bool
mn_get_regexps(regex_t** label_re, regex_t** name_re, tCC* who )
{
if (! pz_mn_name_pat)
return BOOL_FALSE;
if (! mn_compiled)
{
compile_re (mn_label_pat, &mn_label_re, 1, "label pattern", who);
compile_re (mn_name_pat, &mn_name_re, 1, "name pattern", who);
compile_re (pz_mn_name_pat, &mn_name_re, 1, "name pattern", who);
mn_compiled++;
}
*label_re = &mn_label_re;
*name_re = &mn_name_re;
return BOOL_TRUE;
}
#endif
#ifdef SEPARATE_FIX_PROC

View File

@ -33,7 +33,6 @@ Boston, MA 02111-1307, USA. */
#include <signal.h>
#include "xregex.h"
#include "machname.h"
#include "libiberty.h"
#ifndef STDIN_FILENO
@ -117,12 +116,19 @@ typedef int apply_fix_p_t; /* Apply Fix Predicate Type */
_ENV_( pz_dest_dir, BOOL_TRUE, "DESTDIR", \
"output directory" ) \
\
_ENV_( pz_mn_name_pat, BOOL_FALSE, "MN_NAME_PAT", \
"regex matching forbidden identifiers" ) \
\
_ENV_( pz_verbose, BOOL_FALSE, "VERBOSE", \
"amount of user entertainment" ) \
\
_ENV_( pz_find_base, BOOL_TRUE, "FIND_BASE", \
"leader to trim from file names" )
#define _ENV_(v,m,n,t) extern tCC* v;
ENV_TABLE
#undef _ENV_
/* Test Descriptor
Each fix may have associated tests that determine
@ -219,7 +225,5 @@ apply_fix_p_t
char* make_raw_shell_str ( char* pz_d, tCC* pz_s, size_t smax );
#endif
#ifdef MN_NAME_PAT
void mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
#endif
t_bool mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
#endif /* ! GCC_FIXLIB_H */

View File

@ -68,15 +68,13 @@ static apply_fix_p_t test ( tCC* fname ATTRIBUTE_UNUSED, \
TEST_FOR_FIX_PROC_HEAD( machine_name_test )
{
#ifndef MN_NAME_PAT
return SKIP_FIX;
#else
regex_t *label_re, *name_re;
regmatch_t match[2];
tCC *base, *limit;
IGNORE_ARG(fname);
mn_get_regexps(&label_re, &name_re, "machine_name_test");
if (!mn_get_regexps (&label_re, &name_re, "machine_name_test"))
return SKIP_FIX;
for (base = text;
xregexec (label_re, base, 2, match, 0) == 0;
@ -114,7 +112,6 @@ TEST_FOR_FIX_PROC_HEAD( machine_name_test )
/* Otherwise, keep looking... */
}
return SKIP_FIX;
#endif
}

View File

@ -45,11 +45,8 @@ do
;;
'-?' )
echo "USAGE: gendefs [ -D<def-name> ... ] [ <output-name> ]"
echo "USAGE: gendefs [ -D<def-name> ... ]"
echo "WHERE: '<def-name>' specifies a #define test name from inclhack.def"
echo " and '<output-name>' is one of:"
echo " fixincl.x machine.h"
echo "The default is to produce the first three outputs."
exit 0
;;
@ -66,53 +63,15 @@ fi
AG="autogen $AG"
set -e
case "$1" in
fixincl.x | */fixincl.x )
if [ -z "`${AG} -v | fgrep 'Ver. 5.'`" ]
then
echo "AutoGen appears to be out of date or not correctly installed."
echo "Please download and install:"
echo " ftp://gcc.gnu.org/pub/gcc/infrastructure/autogen.tar.gz"
touch fixincl.x
else
echo AutoGen-ing fixincl.x
$AG inclhack.def
fi
;;
machname.h | */machname.h )
# This script extracts from the specs file all the predefined macros
# that are not in the C89 reserved namespace (the reserved namespace
# is all identifiers beginnning with two underscores or one underscore
# followed by a capital letter). The specs file is on standard input.
# A #define for a regular expression to find any of those macros in a
# header file is written to standard output.
# Note dependency on ASCII. \040 = space, \011 = tab, \012 = newline.
# tr ' ' '\n' is, alas, not portable.
tr -s '\040\011' '\012\012' < ../specs |
sed -n 's/^.*-D\([a-zA-Z_][a-zA-Z0-9_]*\).*$/\1/p' |
sort -u > mn.T
if grep -v '^_[_A-Z]' mn.T > mn.U
then
echo "Forbidden identifiers: `tr '\012' ' ' <mn.U`" >&2
sed 's/^/\\\\</; s/$/\\\\>/' <mn.U | tr '\012' '|' > mn.V
echo '' >>mn.V
sed 's/^/#define MN_NAME_PAT "/; s/|$/"/' < mn.V > machname.T
else
echo "No forbidden identifiers defined by this target" >&2
echo '#undef MN_NAME_PAT' > machname.T
fi
rm -f mn.[TUV]
mv -f machname.T machname.h
;;
* )
echo genfixes cannot create $1
exit 1
;;
esac
if [ -z "`${AG} -v | fgrep 'Ver. 5.'`" ]
then
echo "AutoGen appears to be out of date or not correctly installed."
echo "Please download and install:"
echo " ftp://gcc.gnu.org/pub/gcc/infrastructure/autogen.tar.gz"
touch fixincl.x
else
echo AutoGen-ing fixincl.x
$AG inclhack.def
fi
exit 0