mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 22:51:37 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (40 commits) kbuild: introduce ccflags-y, asflags-y and ldflags-y kbuild: enable 'make CPPFLAGS=...' to add additional options to CPP kbuild: enable use of AFLAGS and CFLAGS on commandline kbuild: enable 'make AFLAGS=...' to add additional options to AS kbuild: fix AFLAGS use in h8300 and m68knommu kbuild: check for wrong use of CFLAGS kbuild: enable 'make CFLAGS=...' to add additional options to CC kbuild: fix up CFLAGS usage kbuild: make modpost detect unterminated device id lists kbuild: call export_report from the Makefile kbuild: move Kai Germaschewski to CREDITS kconfig/menuconfig: distinguish between selected-by-another options and comments kconfig: tristate choices with mixed tristate and boolean values include/linux/Kbuild: remove duplicate entries kbuild: kill backward compatibility checks kbuild: kill EXTRA_ARFLAGS kbuild: fix documentation in makefiles.txt kbuild: call make once for all targets when O=.. is used kbuild: pass -g to assembler under CONFIG_DEBUG_INFO kbuild: update _shipped files for kconfig syntax cleanup ... Fix up conflicts in arch/um/sys-{x86_64,i386}/Makefile manually.
This commit is contained in:
commit
821f3eff7c
106 changed files with 4048 additions and 2946 deletions
|
@ -75,24 +75,24 @@ try-run = $(shell set -e; \
|
|||
# Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,)
|
||||
|
||||
as-option = $(call try-run,\
|
||||
$(CC) $(CFLAGS) $(1) -c -xassembler /dev/null -o "$$TMP",$(1),$(2))
|
||||
$(CC) $(KBUILD_CFLAGS) $(1) -c -xassembler /dev/null -o "$$TMP",$(1),$(2))
|
||||
|
||||
# as-instr
|
||||
# Usage: cflags-y += $(call as-instr,instr,option1,option2)
|
||||
|
||||
as-instr = $(call try-run,\
|
||||
echo -e "$(1)" | $(CC) $(AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3))
|
||||
echo -e "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3))
|
||||
|
||||
# cc-option
|
||||
# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
|
||||
|
||||
cc-option = $(call try-run,\
|
||||
$(CC) $(CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",$(1),$(2))
|
||||
$(CC) $(KBUILD_CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",$(1),$(2))
|
||||
|
||||
# cc-option-yn
|
||||
# Usage: flag := $(call cc-option-yn,-march=winchip-c6)
|
||||
cc-option-yn = $(call try-run,\
|
||||
$(CC) $(CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",y,n)
|
||||
$(CC) $(KBUILD_CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",y,n)
|
||||
|
||||
# cc-option-align
|
||||
# Prefix align with either -falign or -malign
|
||||
|
|
|
@ -22,16 +22,30 @@ EXTRA_AFLAGS :=
|
|||
EXTRA_CFLAGS :=
|
||||
EXTRA_CPPFLAGS :=
|
||||
EXTRA_LDFLAGS :=
|
||||
asflags-y :=
|
||||
ccflags-y :=
|
||||
cppflags-y :=
|
||||
ldflags-y :=
|
||||
|
||||
# Read .config if it exist, otherwise ignore
|
||||
-include include/config/auto.conf
|
||||
|
||||
include scripts/Kbuild.include
|
||||
|
||||
# For backward compatibility check that these variables does not change
|
||||
save-cflags := $(CFLAGS)
|
||||
|
||||
# The filename Kbuild has precedence over Makefile
|
||||
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
|
||||
include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
|
||||
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
|
||||
include $(kbuild-file)
|
||||
|
||||
# If the save-* variables changed error out
|
||||
ifeq ($(KBUILD_NOPEDANTIC),)
|
||||
ifneq ("$(save-cflags)","$(CFLAGS)")
|
||||
$(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS)
|
||||
endif
|
||||
endif
|
||||
include scripts/Makefile.lib
|
||||
|
||||
ifdef host-progs
|
||||
|
@ -55,31 +69,6 @@ _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
|
|||
_dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d)))
|
||||
endif
|
||||
|
||||
|
||||
ifdef EXTRA_TARGETS
|
||||
$(warning kbuild: $(obj)/Makefile - Usage of EXTRA_TARGETS is obsolete in 2.6. Please fix!)
|
||||
endif
|
||||
|
||||
ifdef build-targets
|
||||
$(warning kbuild: $(obj)/Makefile - Usage of build-targets is obsolete in 2.6. Please fix!)
|
||||
endif
|
||||
|
||||
ifdef export-objs
|
||||
$(warning kbuild: $(obj)/Makefile - Usage of export-objs is obsolete in 2.6. Please fix!)
|
||||
endif
|
||||
|
||||
ifdef O_TARGET
|
||||
$(warning kbuild: $(obj)/Makefile - Usage of O_TARGET := $(O_TARGET) is obsolete in 2.6. Please fix!)
|
||||
endif
|
||||
|
||||
ifdef L_TARGET
|
||||
$(error kbuild: $(obj)/Makefile - Use of L_TARGET is replaced by lib-y in 2.6. Please fix!)
|
||||
endif
|
||||
|
||||
ifdef list-multi
|
||||
$(warning kbuild: $(obj)/Makefile - list-multi := $(list-multi) is obsolete in 2.6. Please fix!)
|
||||
endif
|
||||
|
||||
ifndef obj
|
||||
$(warning kbuild: Makefile.build is included improperly)
|
||||
endif
|
||||
|
@ -291,7 +280,7 @@ endif # builtin-target
|
|||
#
|
||||
ifdef lib-target
|
||||
quiet_cmd_link_l_target = AR $@
|
||||
cmd_link_l_target = rm -f $@; $(AR) $(EXTRA_ARFLAGS) rcs $@ $(lib-y)
|
||||
cmd_link_l_target = rm -f $@; $(AR) rcs $@ $(lib-y)
|
||||
|
||||
$(lib-target): $(lib-y) FORCE
|
||||
$(call if_changed,link_l_target)
|
||||
|
|
|
@ -40,7 +40,7 @@ subdir-ymn := $(addprefix $(obj)/,$(subdir-ymn))
|
|||
# build a list of files to remove, usually releative to the current
|
||||
# directory
|
||||
|
||||
__clean-files := $(extra-y) $(EXTRA_TARGETS) $(always) \
|
||||
__clean-files := $(extra-y) $(always) \
|
||||
$(targets) $(clean-files) \
|
||||
$(host-progs) \
|
||||
$(hostprogs-y) $(hostprogs-m) $(hostprogs-)
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
# Backward compatibility - to be removed...
|
||||
extra-y += $(EXTRA_TARGETS)
|
||||
# Backward compatibility
|
||||
asflags-y += $(EXTRA_AFLAGS)
|
||||
ccflags-y += $(EXTRA_CFLAGS)
|
||||
cppflags-y += $(EXTRA_CPPFLAGS)
|
||||
ldflags-y += $(EXTRA_LDFLAGS)
|
||||
|
||||
# Figure out what we need to build from the various variables
|
||||
# ===========================================================================
|
||||
|
||||
|
@ -44,9 +48,9 @@ multi-objs-y := $(foreach m, $(multi-used-y), $($(m:.o=-objs)) $($(m:.o=-y)))
|
|||
multi-objs-m := $(foreach m, $(multi-used-m), $($(m:.o=-objs)) $($(m:.o=-y)))
|
||||
multi-objs := $(multi-objs-y) $(multi-objs-m)
|
||||
|
||||
# $(subdir-obj-y) is the list of objects in $(obj-y) which do not live
|
||||
# in the local directory
|
||||
subdir-obj-y := $(foreach o,$(obj-y),$(if $(filter-out $(o),$(notdir $(o))),$(o)))
|
||||
# $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to
|
||||
# tell kbuild to descend
|
||||
subdir-obj-y := $(filter %/built-in.o, $(obj-y))
|
||||
|
||||
# $(obj-dirs) is a list of directories that contain object files
|
||||
obj-dirs := $(dir $(multi-objs) $(subdir-obj-y))
|
||||
|
@ -86,9 +90,9 @@ basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(basetarget)))"
|
|||
modname_flags = $(if $(filter 1,$(words $(modname))),\
|
||||
-D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))")
|
||||
|
||||
_c_flags = $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(basetarget).o)
|
||||
_a_flags = $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o)
|
||||
_cpp_flags = $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CPPFLAGS_$(@F))
|
||||
_c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(basetarget).o)
|
||||
_a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(basetarget).o)
|
||||
_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F))
|
||||
|
||||
# If building the kernel in a separate objtree expand all occurrences
|
||||
# of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
|
||||
|
@ -108,16 +112,16 @@ __a_flags = $(call flags,_a_flags)
|
|||
__cpp_flags = $(call flags,_cpp_flags)
|
||||
endif
|
||||
|
||||
c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
|
||||
c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \
|
||||
$(__c_flags) $(modkern_cflags) \
|
||||
-D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags)
|
||||
|
||||
a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(CPPFLAGS) \
|
||||
a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \
|
||||
$(__a_flags) $(modkern_aflags)
|
||||
|
||||
cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(__cpp_flags)
|
||||
|
||||
ld_flags = $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
ld_flags = $(LDFLAGS) $(ldflags-y)
|
||||
|
||||
# Finds the multi-part object the current object will be linked into
|
||||
modname-multi = $(sort $(foreach m,$(multi-used),\
|
||||
|
@ -140,14 +144,14 @@ $(obj)/%:: $(src)/%_shipped
|
|||
# target: source(s) FORCE
|
||||
# $(if_changed,ld/objcopy/gzip)
|
||||
#
|
||||
# and add target to EXTRA_TARGETS so that we know we have to
|
||||
# and add target to extra-y so that we know we have to
|
||||
# read in the saved command line
|
||||
|
||||
# Linking
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
quiet_cmd_ld = LD $@
|
||||
cmd_ld = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$(@F)) \
|
||||
cmd_ld = $(LD) $(LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \
|
||||
$(filter-out FORCE,$^) -o $@
|
||||
|
||||
# Objcopy
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
###
|
||||
# Makefile.basic list the most basic programs used during the build process.
|
||||
# The programs listed herein is what is needed to do the basic stuff,
|
||||
# such as fix dependency file.
|
||||
# Makefile.basic lists the most basic programs used during the build process.
|
||||
# The programs listed herein are what are needed to do the basic stuff,
|
||||
# such as fix file dependencies.
|
||||
# This initial step is needed to avoid files to be recompiled
|
||||
# when kernel configuration changes (which is what happens when
|
||||
# .config is included by main Makefile.
|
||||
# ---------------------------------------------------------------------------
|
||||
# fixdep: Used to generate dependency information during build process
|
||||
# docproc: Used in Documentation/docbook
|
||||
# docproc: Used in Documentation/DocBook
|
||||
|
||||
hostprogs-y := fixdep docproc
|
||||
always := $(hostprogs-y)
|
||||
|
|
|
@ -10,8 +10,10 @@
|
|||
* documentation-frontend
|
||||
* Scans the template file and call kernel-doc for
|
||||
* all occurrences of ![EIF]file
|
||||
* Beforehand each referenced file are scanned for
|
||||
* any exported sympols "EXPORT_SYMBOL()" statements.
|
||||
* Beforehand each referenced file is scanned for
|
||||
* any symbols that are exported via these macros:
|
||||
* EXPORT_SYMBOL(), EXPORT_SYMBOL_GPL(), &
|
||||
* EXPORT_SYMBOL_GPL_FUTURE()
|
||||
* This is used to create proper -function and
|
||||
* -nofunction arguments in calls to kernel-doc.
|
||||
* Usage: docproc doc file.tmpl
|
||||
|
@ -73,7 +75,7 @@ void usage (void)
|
|||
}
|
||||
|
||||
/*
|
||||
* Execute kernel-doc with parameters givin in svec
|
||||
* Execute kernel-doc with parameters given in svec
|
||||
*/
|
||||
void exec_kernel_doc(char **svec)
|
||||
{
|
||||
|
@ -82,7 +84,7 @@ void exec_kernel_doc(char **svec)
|
|||
char real_filename[PATH_MAX + 1];
|
||||
/* Make sure output generated so far are flushed */
|
||||
fflush(stdout);
|
||||
switch(pid=fork()) {
|
||||
switch (pid=fork()) {
|
||||
case -1:
|
||||
perror("fork");
|
||||
exit(1);
|
||||
|
@ -133,6 +135,7 @@ struct symfile * add_new_file(char * filename)
|
|||
symfilelist[symfilecnt++].filename = strdup(filename);
|
||||
return &symfilelist[symfilecnt - 1];
|
||||
}
|
||||
|
||||
/* Check if file already are present in the list */
|
||||
struct symfile * filename_exist(char * filename)
|
||||
{
|
||||
|
@ -156,8 +159,8 @@ void noaction2(char * file, char * line) { file = file; line = line; }
|
|||
void printline(char * line) { printf("%s", line); }
|
||||
|
||||
/*
|
||||
* Find all symbols exported with EXPORT_SYMBOL and EXPORT_SYMBOL_GPL
|
||||
* in filename.
|
||||
* Find all symbols in filename that are exported with EXPORT_SYMBOL &
|
||||
* EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly).
|
||||
* All symbols located are stored in symfilelist.
|
||||
*/
|
||||
void find_export_symbols(char * filename)
|
||||
|
@ -179,15 +182,15 @@ void find_export_symbols(char * filename)
|
|||
perror(real_filename);
|
||||
exit(1);
|
||||
}
|
||||
while(fgets(line, MAXLINESZ, fp)) {
|
||||
while (fgets(line, MAXLINESZ, fp)) {
|
||||
char *p;
|
||||
char *e;
|
||||
if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != 0) ||
|
||||
((p = strstr(line, "EXPORT_SYMBOL")) != 0)) {
|
||||
if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) ||
|
||||
((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
|
||||
/* Skip EXPORT_SYMBOL{_GPL} */
|
||||
while (isalnum(*p) || *p == '_')
|
||||
p++;
|
||||
/* Remove paranteses and additional ws */
|
||||
/* Remove parentheses & additional whitespace */
|
||||
while (isspace(*p))
|
||||
p++;
|
||||
if (*p != '(')
|
||||
|
@ -211,7 +214,7 @@ void find_export_symbols(char * filename)
|
|||
* Document all external or internal functions in a file.
|
||||
* Call kernel-doc with following parameters:
|
||||
* kernel-doc -docbook -nofunction function_name1 filename
|
||||
* function names are obtained from all the src files
|
||||
* Function names are obtained from all the src files
|
||||
* by find_export_symbols.
|
||||
* intfunc uses -nofunction
|
||||
* extfunc uses -function
|
||||
|
@ -262,7 +265,7 @@ void singfunc(char * filename, char * line)
|
|||
vec[idx++] = KERNELDOC;
|
||||
vec[idx++] = DOCBOOK;
|
||||
|
||||
/* Split line up in individual parameters preceeded by FUNCTION */
|
||||
/* Split line up in individual parameters preceded by FUNCTION */
|
||||
for (i=0; line[i]; i++) {
|
||||
if (isspace(line[i])) {
|
||||
line[i] = '\0';
|
||||
|
@ -292,7 +295,7 @@ void parse_file(FILE *infile)
|
|||
{
|
||||
char line[MAXLINESZ];
|
||||
char * s;
|
||||
while(fgets(line, MAXLINESZ, infile)) {
|
||||
while (fgets(line, MAXLINESZ, infile)) {
|
||||
if (line[0] == '!') {
|
||||
s = line + 2;
|
||||
switch (line[1]) {
|
||||
|
@ -351,9 +354,9 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
/* Need to do this in two passes.
|
||||
* First pass is used to collect all symbols exported
|
||||
* in the various files.
|
||||
* in the various files;
|
||||
* Second pass generate the documentation.
|
||||
* This is required because function are declared
|
||||
* This is required because some functions are declared
|
||||
* and exported in different files :-((
|
||||
*/
|
||||
/* Collect symbols */
|
||||
|
@ -396,4 +399,3 @@ int main(int argc, char *argv[])
|
|||
fflush(stdout);
|
||||
return exitstatus;
|
||||
}
|
||||
|
||||
|
|
59
scripts/checkkconfigsymbols.sh
Executable file
59
scripts/checkkconfigsymbols.sh
Executable file
|
@ -0,0 +1,59 @@
|
|||
#!/bin/sh
|
||||
# Find Kconfig variables used in source code but never defined in Kconfig
|
||||
# Copyright (C) 2007, Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
|
||||
|
||||
# Tested with dash.
|
||||
paths="$@"
|
||||
[ -z "$paths" ] && paths=.
|
||||
|
||||
# Doing this once at the beginning saves a lot of time, on a cache-hot tree.
|
||||
Kconfigs="`find . -name 'Kconfig' -o -name 'Kconfig*[^~]'`"
|
||||
|
||||
echo -e "File list \tundefined symbol used"
|
||||
find $paths -name '*.[chS]' -o -name 'Makefile' -o -name 'Makefile*[^~]'| while read i
|
||||
do
|
||||
# Output the bare Kconfig variable and the filename; the _MODULE part at
|
||||
# the end is not removed here (would need perl an not-hungry regexp for that).
|
||||
sed -ne 's!^.*\<\(UML_\)\?CONFIG_\([0-9A-Z_]\+\).*!\2 '$i'!p' < $i
|
||||
done | \
|
||||
# Smart "sort|uniq" implemented in awk and tuned to collect the names of all
|
||||
# files which use a given symbol
|
||||
awk '{map[$1, count[$1]++] = $2; }
|
||||
END {
|
||||
for (combIdx in map) {
|
||||
split(combIdx, separate, SUBSEP);
|
||||
# The value may have been removed.
|
||||
if (! ( (separate[1], separate[2]) in map ) )
|
||||
continue;
|
||||
symb=separate[1];
|
||||
printf "%s ", symb;
|
||||
#Use gawk extension to delete the names vector
|
||||
delete names;
|
||||
#Portably delete the names vector
|
||||
#split("", names);
|
||||
for (i=0; i < count[symb]; i++) {
|
||||
names[map[symb, i]] = 1;
|
||||
# Unfortunately, we may still encounter symb, i in the
|
||||
# outside iteration.
|
||||
delete map[symb, i];
|
||||
}
|
||||
i=0;
|
||||
for (name in names) {
|
||||
if (i > 0)
|
||||
printf ", %s", name;
|
||||
else
|
||||
printf "%s", name;
|
||||
i++;
|
||||
}
|
||||
printf "\n";
|
||||
}
|
||||
}' |
|
||||
while read symb files; do
|
||||
# Remove the _MODULE suffix when checking the variable name. This should
|
||||
# be done only on tristate symbols, actually, but Kconfig parsing is
|
||||
# beyond the purpose of this script.
|
||||
symb_bare=`echo $symb | sed -e 's/_MODULE//'`
|
||||
if ! grep -q "\<$symb_bare\>" $Kconfigs; then
|
||||
echo -e "$files: \t$symb"
|
||||
fi
|
||||
done|sort
|
|
@ -103,16 +103,16 @@ foreach my $thismod (@allcfiles) {
|
|||
my $state=0;
|
||||
while ( <MODULE_MODULE> ) {
|
||||
chomp;
|
||||
if ($state eq 0) {
|
||||
if ($state == 0) {
|
||||
$state = 1 if ($_ =~ /static const struct modversion_info/);
|
||||
next;
|
||||
}
|
||||
if ($state eq 1) {
|
||||
if ($state == 1) {
|
||||
$state = 2 if ($_ =~ /__attribute__\(\(section\("__versions"\)\)\)/);
|
||||
next;
|
||||
}
|
||||
if ($state eq 2) {
|
||||
if ( $_ !~ /0x[0-9a-f]{7,8},/ ) {
|
||||
if ($state == 2) {
|
||||
if ( $_ !~ /0x[0-9a-f]+,/ ) {
|
||||
next;
|
||||
}
|
||||
my $sym = (split /([,"])/,)[4];
|
||||
|
@ -121,7 +121,7 @@ foreach my $thismod (@allcfiles) {
|
|||
push(@{$MODULE{$thismod}} , $sym);
|
||||
}
|
||||
}
|
||||
if ($state ne 2) {
|
||||
if ($state != 2) {
|
||||
print "WARNING:$thismod is not built with CONFIG_MODVERSION enabled\n";
|
||||
}
|
||||
close(MODULE_MODULE);
|
||||
|
|
|
@ -9,10 +9,16 @@
|
|||
# gcc-2.95.3, `030301' for gcc-3.3.1, etc.
|
||||
#
|
||||
|
||||
if [ $1 = "-p" ] ; then with_patchlevel=1; shift; fi
|
||||
if [[ $1 = "-p" ]] ; then with_patchlevel=1; shift; fi
|
||||
|
||||
compiler="$*"
|
||||
|
||||
if [ ${#compiler} -eq 0 ]; then
|
||||
echo "Error: No compiler specified."
|
||||
echo -e "Usage:\n\t$0 <gcc-command>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MAJOR=$(echo __GNUC__ | $compiler -E -xc - | tail -n 1)
|
||||
MINOR=$(echo __GNUC_MINOR__ | $compiler -E -xc - | tail -n 1)
|
||||
if [ "x$with_patchlevel" != "x" ] ; then
|
||||
|
|
|
@ -23,14 +23,16 @@ quiet_cmd_keywords.c = GPERF $@
|
|||
|
||||
$(obj)/keywords.c: $(obj)/keywords.gperf FORCE
|
||||
$(call if_changed,keywords.c)
|
||||
cp $@ $@_shipped
|
||||
|
||||
# flex
|
||||
|
||||
quiet_cmd_lex.c = FLEX $@
|
||||
cmd_lex.c = flex -o$@ -d $(filter-out FORCE,$^)
|
||||
cmd_lex.c = flex -o$@ -d $< $(obj)/parse.h
|
||||
|
||||
$(obj)/lex.c: $(obj)/lex.l $(obj)/parse.h FORCE
|
||||
$(obj)/lex.c: $(obj)/lex.l $(obj)/parse.h $(obj)/keywords.c FORCE
|
||||
$(call if_changed,lex.c)
|
||||
cp $@ $@_shipped
|
||||
|
||||
# bison
|
||||
|
||||
|
@ -39,6 +41,8 @@ quiet_cmd_parse.c = BISON $@
|
|||
|
||||
$(obj)/parse.c: $(obj)/parse.y FORCE
|
||||
$(call if_changed,parse.c)
|
||||
cp $@ $@_shipped
|
||||
cp $(@:.c=.h) $(@:.c=.h)_shipped
|
||||
|
||||
$(obj)/parse.h: $(obj)/parse.c ;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* ANSI-C code produced by gperf version 3.0.1 */
|
||||
/* ANSI-C code produced by gperf version 3.0.2 */
|
||||
/* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
|
@ -32,7 +32,7 @@
|
|||
|
||||
#line 3 "scripts/genksyms/keywords.gperf"
|
||||
struct resword { const char *name; int token; };
|
||||
/* maximum key range = 68, duplicates = 0 */
|
||||
/* maximum key range = 62, duplicates = 0 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
|
@ -46,32 +46,32 @@ is_reserved_hash (register const char *str, register unsigned int len)
|
|||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 0,
|
||||
71, 71, 71, 71, 71, 71, 35, 71, 71, 71,
|
||||
5, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 0, 71, 0, 71, 5,
|
||||
5, 0, 10, 20, 71, 25, 71, 71, 20, 0,
|
||||
20, 30, 25, 71, 10, 5, 0, 20, 15, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
|
||||
71, 71, 71, 71, 71, 71
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 5,
|
||||
65, 65, 65, 65, 65, 65, 35, 65, 65, 65,
|
||||
0, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 0, 65, 0, 65, 5,
|
||||
20, 15, 10, 30, 65, 15, 65, 65, 20, 0,
|
||||
10, 35, 20, 65, 10, 5, 0, 10, 5, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65
|
||||
};
|
||||
return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
|
||||
}
|
||||
|
@ -84,17 +84,17 @@ is_reserved_word (register const char *str, register unsigned int len)
|
|||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 42,
|
||||
TOTAL_KEYWORDS = 43,
|
||||
MIN_WORD_LENGTH = 3,
|
||||
MAX_WORD_LENGTH = 24,
|
||||
MIN_HASH_VALUE = 3,
|
||||
MAX_HASH_VALUE = 70
|
||||
MAX_HASH_VALUE = 64
|
||||
};
|
||||
|
||||
static const struct resword wordlist[] =
|
||||
{
|
||||
{""}, {""}, {""},
|
||||
#line 25 "scripts/genksyms/keywords.gperf"
|
||||
#line 26 "scripts/genksyms/keywords.gperf"
|
||||
{"asm", ASM_KEYW},
|
||||
{""},
|
||||
#line 8 "scripts/genksyms/keywords.gperf"
|
||||
|
@ -102,98 +102,98 @@ is_reserved_word (register const char *str, register unsigned int len)
|
|||
{""},
|
||||
#line 9 "scripts/genksyms/keywords.gperf"
|
||||
{"__asm__", ASM_KEYW},
|
||||
{""},
|
||||
#line 22 "scripts/genksyms/keywords.gperf"
|
||||
{"_restrict", RESTRICT_KEYW},
|
||||
#line 51 "scripts/genksyms/keywords.gperf"
|
||||
{""}, {""},
|
||||
#line 52 "scripts/genksyms/keywords.gperf"
|
||||
{"__typeof__", TYPEOF_KEYW},
|
||||
#line 10 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute", ATTRIBUTE_KEYW},
|
||||
{""},
|
||||
#line 12 "scripts/genksyms/keywords.gperf"
|
||||
{"__const", CONST_KEYW},
|
||||
#line 11 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute__", ATTRIBUTE_KEYW},
|
||||
#line 13 "scripts/genksyms/keywords.gperf"
|
||||
{"__const__", CONST_KEYW},
|
||||
#line 17 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed__", SIGNED_KEYW},
|
||||
#line 43 "scripts/genksyms/keywords.gperf"
|
||||
{"static", STATIC_KEYW},
|
||||
{""},
|
||||
#line 16 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed", SIGNED_KEYW},
|
||||
#line 31 "scripts/genksyms/keywords.gperf"
|
||||
{"char", CHAR_KEYW},
|
||||
{""},
|
||||
#line 44 "scripts/genksyms/keywords.gperf"
|
||||
{"struct", STRUCT_KEYW},
|
||||
#line 23 "scripts/genksyms/keywords.gperf"
|
||||
{"__restrict__", RESTRICT_KEYW},
|
||||
#line 24 "scripts/genksyms/keywords.gperf"
|
||||
{"restrict", RESTRICT_KEYW},
|
||||
#line 34 "scripts/genksyms/keywords.gperf"
|
||||
{"enum", ENUM_KEYW},
|
||||
#line 18 "scripts/genksyms/keywords.gperf"
|
||||
{"__volatile", VOLATILE_KEYW},
|
||||
#line 35 "scripts/genksyms/keywords.gperf"
|
||||
{"extern", EXTERN_KEYW},
|
||||
#line 19 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed__", SIGNED_KEYW},
|
||||
#line 44 "scripts/genksyms/keywords.gperf"
|
||||
{"static", STATIC_KEYW},
|
||||
#line 20 "scripts/genksyms/keywords.gperf"
|
||||
{"__volatile__", VOLATILE_KEYW},
|
||||
#line 38 "scripts/genksyms/keywords.gperf"
|
||||
#line 39 "scripts/genksyms/keywords.gperf"
|
||||
{"int", INT_KEYW},
|
||||
#line 7 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
|
||||
#line 32 "scripts/genksyms/keywords.gperf"
|
||||
{"const", CONST_KEYW},
|
||||
{"char", CHAR_KEYW},
|
||||
#line 33 "scripts/genksyms/keywords.gperf"
|
||||
{"double", DOUBLE_KEYW},
|
||||
{"const", CONST_KEYW},
|
||||
#line 45 "scripts/genksyms/keywords.gperf"
|
||||
{"struct", STRUCT_KEYW},
|
||||
#line 24 "scripts/genksyms/keywords.gperf"
|
||||
{"__restrict__", RESTRICT_KEYW},
|
||||
#line 25 "scripts/genksyms/keywords.gperf"
|
||||
{"restrict", RESTRICT_KEYW},
|
||||
#line 23 "scripts/genksyms/keywords.gperf"
|
||||
{"_restrict", RESTRICT_KEYW},
|
||||
#line 16 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline__", INLINE_KEYW},
|
||||
#line 10 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute", ATTRIBUTE_KEYW},
|
||||
{""},
|
||||
#line 14 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline", INLINE_KEYW},
|
||||
#line 30 "scripts/genksyms/keywords.gperf"
|
||||
{"auto", AUTO_KEYW},
|
||||
#line 15 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline__", INLINE_KEYW},
|
||||
#line 42 "scripts/genksyms/keywords.gperf"
|
||||
{"signed", SIGNED_KEYW},
|
||||
{"__extension__", EXTENSION_KEYW},
|
||||
#line 35 "scripts/genksyms/keywords.gperf"
|
||||
{"enum", ENUM_KEYW},
|
||||
#line 19 "scripts/genksyms/keywords.gperf"
|
||||
{"__volatile", VOLATILE_KEYW},
|
||||
#line 36 "scripts/genksyms/keywords.gperf"
|
||||
{"extern", EXTERN_KEYW},
|
||||
{""},
|
||||
#line 47 "scripts/genksyms/keywords.gperf"
|
||||
{"unsigned", UNSIGNED_KEYW},
|
||||
#line 17 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed", SIGNED_KEYW},
|
||||
#line 7 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
|
||||
{""},
|
||||
#line 41 "scripts/genksyms/keywords.gperf"
|
||||
{"short", SHORT_KEYW},
|
||||
#line 50 "scripts/genksyms/keywords.gperf"
|
||||
#line 51 "scripts/genksyms/keywords.gperf"
|
||||
{"typeof", TYPEOF_KEYW},
|
||||
#line 45 "scripts/genksyms/keywords.gperf"
|
||||
#line 46 "scripts/genksyms/keywords.gperf"
|
||||
{"typedef", TYPEDEF_KEYW},
|
||||
#line 15 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline", INLINE_KEYW},
|
||||
#line 31 "scripts/genksyms/keywords.gperf"
|
||||
{"auto", AUTO_KEYW},
|
||||
#line 47 "scripts/genksyms/keywords.gperf"
|
||||
{"union", UNION_KEYW},
|
||||
{""}, {""},
|
||||
#line 48 "scripts/genksyms/keywords.gperf"
|
||||
{"unsigned", UNSIGNED_KEYW},
|
||||
#line 49 "scripts/genksyms/keywords.gperf"
|
||||
{"void", VOID_KEYW},
|
||||
#line 42 "scripts/genksyms/keywords.gperf"
|
||||
{"short", SHORT_KEYW},
|
||||
{""}, {""},
|
||||
#line 50 "scripts/genksyms/keywords.gperf"
|
||||
{"volatile", VOLATILE_KEYW},
|
||||
{""},
|
||||
#line 36 "scripts/genksyms/keywords.gperf"
|
||||
{"float", FLOAT_KEYW},
|
||||
{""}, {""},
|
||||
#line 40 "scripts/genksyms/keywords.gperf"
|
||||
{"register", REGISTER_KEYW},
|
||||
#line 48 "scripts/genksyms/keywords.gperf"
|
||||
{"void", VOID_KEYW},
|
||||
{""},
|
||||
#line 37 "scripts/genksyms/keywords.gperf"
|
||||
{"inline", INLINE_KEYW},
|
||||
{"float", FLOAT_KEYW},
|
||||
#line 34 "scripts/genksyms/keywords.gperf"
|
||||
{"double", DOUBLE_KEYW},
|
||||
{""},
|
||||
#line 5 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
|
||||
{""},
|
||||
#line 21 "scripts/genksyms/keywords.gperf"
|
||||
{"_Bool", BOOL_KEYW},
|
||||
{""},
|
||||
{""}, {""},
|
||||
#line 38 "scripts/genksyms/keywords.gperf"
|
||||
{"inline", INLINE_KEYW},
|
||||
#line 6 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
|
||||
{""}, {""}, {""}, {""}, {""}, {""},
|
||||
#line 39 "scripts/genksyms/keywords.gperf"
|
||||
{"long", LONG_KEYW},
|
||||
{""}, {""}, {""}, {""}, {""},
|
||||
#line 46 "scripts/genksyms/keywords.gperf"
|
||||
{"union", UNION_KEYW}
|
||||
#line 41 "scripts/genksyms/keywords.gperf"
|
||||
{"register", REGISTER_KEYW},
|
||||
{""},
|
||||
#line 22 "scripts/genksyms/keywords.gperf"
|
||||
{"_Bool", BOOL_KEYW},
|
||||
#line 43 "scripts/genksyms/keywords.gperf"
|
||||
{"signed", SIGNED_KEYW},
|
||||
{""}, {""},
|
||||
#line 40 "scripts/genksyms/keywords.gperf"
|
||||
{"long", LONG_KEYW}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
|
|
|
@ -11,6 +11,7 @@ __attribute, ATTRIBUTE_KEYW
|
|||
__attribute__, ATTRIBUTE_KEYW
|
||||
__const, CONST_KEYW
|
||||
__const__, CONST_KEYW
|
||||
__extension__, EXTENSION_KEYW
|
||||
__inline, INLINE_KEYW
|
||||
__inline__, INLINE_KEYW
|
||||
__signed, SIGNED_KEYW
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,9 @@
|
|||
/* A Bison parser, made by GNU Bison 2.0. */
|
||||
/* A Bison parser, made by GNU Bison 2.3. */
|
||||
|
||||
/* Skeleton parser for Yacc-like parsing with Bison,
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Skeleton interface for Bison's Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -15,13 +17,21 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* As a special exception, when this file is copied by Bison into a
|
||||
Bison output file, you may use that output file without restriction.
|
||||
This special exception was added by the Free Software Foundation
|
||||
in version 1.24 of Bison. */
|
||||
/* As a special exception, you may create a larger work that contains
|
||||
part or all of the Bison parser skeleton and distribute that work
|
||||
under terms of your choice, so long as that work isn't itself a
|
||||
parser generator using the skeleton or a modified version thereof
|
||||
as a parser skeleton. Alternatively, if you modify or redistribute
|
||||
the parser skeleton itself, you may (at your option) remove this
|
||||
special exception, which will cause the skeleton and the resulting
|
||||
Bison output files to be licensed under the GNU General Public
|
||||
License without this special exception.
|
||||
|
||||
This special exception was added by the Free Software Foundation in
|
||||
version 2.2 of Bison. */
|
||||
|
||||
/* Tokens. */
|
||||
#ifndef YYTOKENTYPE
|
||||
|
@ -38,39 +48,41 @@
|
|||
DOUBLE_KEYW = 264,
|
||||
ENUM_KEYW = 265,
|
||||
EXTERN_KEYW = 266,
|
||||
FLOAT_KEYW = 267,
|
||||
INLINE_KEYW = 268,
|
||||
INT_KEYW = 269,
|
||||
LONG_KEYW = 270,
|
||||
REGISTER_KEYW = 271,
|
||||
RESTRICT_KEYW = 272,
|
||||
SHORT_KEYW = 273,
|
||||
SIGNED_KEYW = 274,
|
||||
STATIC_KEYW = 275,
|
||||
STRUCT_KEYW = 276,
|
||||
TYPEDEF_KEYW = 277,
|
||||
UNION_KEYW = 278,
|
||||
UNSIGNED_KEYW = 279,
|
||||
VOID_KEYW = 280,
|
||||
VOLATILE_KEYW = 281,
|
||||
TYPEOF_KEYW = 282,
|
||||
EXPORT_SYMBOL_KEYW = 283,
|
||||
ASM_PHRASE = 284,
|
||||
ATTRIBUTE_PHRASE = 285,
|
||||
BRACE_PHRASE = 286,
|
||||
BRACKET_PHRASE = 287,
|
||||
EXPRESSION_PHRASE = 288,
|
||||
CHAR = 289,
|
||||
DOTS = 290,
|
||||
IDENT = 291,
|
||||
INT = 292,
|
||||
REAL = 293,
|
||||
STRING = 294,
|
||||
TYPE = 295,
|
||||
OTHER = 296,
|
||||
FILENAME = 297
|
||||
EXTENSION_KEYW = 267,
|
||||
FLOAT_KEYW = 268,
|
||||
INLINE_KEYW = 269,
|
||||
INT_KEYW = 270,
|
||||
LONG_KEYW = 271,
|
||||
REGISTER_KEYW = 272,
|
||||
RESTRICT_KEYW = 273,
|
||||
SHORT_KEYW = 274,
|
||||
SIGNED_KEYW = 275,
|
||||
STATIC_KEYW = 276,
|
||||
STRUCT_KEYW = 277,
|
||||
TYPEDEF_KEYW = 278,
|
||||
UNION_KEYW = 279,
|
||||
UNSIGNED_KEYW = 280,
|
||||
VOID_KEYW = 281,
|
||||
VOLATILE_KEYW = 282,
|
||||
TYPEOF_KEYW = 283,
|
||||
EXPORT_SYMBOL_KEYW = 284,
|
||||
ASM_PHRASE = 285,
|
||||
ATTRIBUTE_PHRASE = 286,
|
||||
BRACE_PHRASE = 287,
|
||||
BRACKET_PHRASE = 288,
|
||||
EXPRESSION_PHRASE = 289,
|
||||
CHAR = 290,
|
||||
DOTS = 291,
|
||||
IDENT = 292,
|
||||
INT = 293,
|
||||
REAL = 294,
|
||||
STRING = 295,
|
||||
TYPE = 296,
|
||||
OTHER = 297,
|
||||
FILENAME = 298
|
||||
};
|
||||
#endif
|
||||
/* Tokens. */
|
||||
#define ASM_KEYW 258
|
||||
#define ATTRIBUTE_KEYW 259
|
||||
#define AUTO_KEYW 260
|
||||
|
@ -80,42 +92,43 @@
|
|||
#define DOUBLE_KEYW 264
|
||||
#define ENUM_KEYW 265
|
||||
#define EXTERN_KEYW 266
|
||||
#define FLOAT_KEYW 267
|
||||
#define INLINE_KEYW 268
|
||||
#define INT_KEYW 269
|
||||
#define LONG_KEYW 270
|
||||
#define REGISTER_KEYW 271
|
||||
#define RESTRICT_KEYW 272
|
||||
#define SHORT_KEYW 273
|
||||
#define SIGNED_KEYW 274
|
||||
#define STATIC_KEYW 275
|
||||
#define STRUCT_KEYW 276
|
||||
#define TYPEDEF_KEYW 277
|
||||
#define UNION_KEYW 278
|
||||
#define UNSIGNED_KEYW 279
|
||||
#define VOID_KEYW 280
|
||||
#define VOLATILE_KEYW 281
|
||||
#define TYPEOF_KEYW 282
|
||||
#define EXPORT_SYMBOL_KEYW 283
|
||||
#define ASM_PHRASE 284
|
||||
#define ATTRIBUTE_PHRASE 285
|
||||
#define BRACE_PHRASE 286
|
||||
#define BRACKET_PHRASE 287
|
||||
#define EXPRESSION_PHRASE 288
|
||||
#define CHAR 289
|
||||
#define DOTS 290
|
||||
#define IDENT 291
|
||||
#define INT 292
|
||||
#define REAL 293
|
||||
#define STRING 294
|
||||
#define TYPE 295
|
||||
#define OTHER 296
|
||||
#define FILENAME 297
|
||||
#define EXTENSION_KEYW 267
|
||||
#define FLOAT_KEYW 268
|
||||
#define INLINE_KEYW 269
|
||||
#define INT_KEYW 270
|
||||
#define LONG_KEYW 271
|
||||
#define REGISTER_KEYW 272
|
||||
#define RESTRICT_KEYW 273
|
||||
#define SHORT_KEYW 274
|
||||
#define SIGNED_KEYW 275
|
||||
#define STATIC_KEYW 276
|
||||
#define STRUCT_KEYW 277
|
||||
#define TYPEDEF_KEYW 278
|
||||
#define UNION_KEYW 279
|
||||
#define UNSIGNED_KEYW 280
|
||||
#define VOID_KEYW 281
|
||||
#define VOLATILE_KEYW 282
|
||||
#define TYPEOF_KEYW 283
|
||||
#define EXPORT_SYMBOL_KEYW 284
|
||||
#define ASM_PHRASE 285
|
||||
#define ATTRIBUTE_PHRASE 286
|
||||
#define BRACE_PHRASE 287
|
||||
#define BRACKET_PHRASE 288
|
||||
#define EXPRESSION_PHRASE 289
|
||||
#define CHAR 290
|
||||
#define DOTS 291
|
||||
#define IDENT 292
|
||||
#define INT 293
|
||||
#define REAL 294
|
||||
#define STRING 295
|
||||
#define TYPE 296
|
||||
#define OTHER 297
|
||||
#define FILENAME 298
|
||||
|
||||
|
||||
|
||||
|
||||
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef int YYSTYPE;
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
|
@ -124,5 +137,3 @@ typedef int YYSTYPE;
|
|||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ remove_list(struct string_list **pb, struct string_list **pe)
|
|||
%token DOUBLE_KEYW
|
||||
%token ENUM_KEYW
|
||||
%token EXTERN_KEYW
|
||||
%token EXTENSION_KEYW
|
||||
%token FLOAT_KEYW
|
||||
%token INLINE_KEYW
|
||||
%token INT_KEYW
|
||||
|
@ -110,7 +111,9 @@ declaration:
|
|||
;
|
||||
|
||||
declaration1:
|
||||
TYPEDEF_KEYW { is_typedef = 1; } simple_declaration
|
||||
EXTENSION_KEYW TYPEDEF_KEYW { is_typedef = 1; } simple_declaration
|
||||
{ $$ = $4; }
|
||||
| TYPEDEF_KEYW { is_typedef = 1; } simple_declaration
|
||||
{ $$ = $3; }
|
||||
| simple_declaration
|
||||
| function_definition
|
||||
|
|
|
@ -143,14 +143,8 @@ clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
|
|||
.tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c
|
||||
clean-files += mconf qconf gconf
|
||||
|
||||
# Needed for systems without gettext
|
||||
KBUILD_HAVE_NLS := $(shell \
|
||||
if echo "\#include <libintl.h>" | $(HOSTCC) $(HOSTCFLAGS) -E - > /dev/null 2>&1 ; \
|
||||
then echo yes ; \
|
||||
else echo no ; fi)
|
||||
ifeq ($(KBUILD_HAVE_NLS),no)
|
||||
HOSTCFLAGS += -DKBUILD_NO_NLS
|
||||
endif
|
||||
# Add environment specific flags
|
||||
HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))
|
||||
|
||||
# generated files seem to need this to find local include files
|
||||
HOSTCFLAGS_lex.zconf.o := -I$(src)
|
||||
|
|
14
scripts/kconfig/check.sh
Executable file
14
scripts/kconfig/check.sh
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
# Needed for systems without gettext
|
||||
$* -xc -o /dev/null - > /dev/null 2>&1 << EOF
|
||||
#include <libintl.h>
|
||||
int main()
|
||||
{
|
||||
gettext("");
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
if [ ! "$?" -eq "0" ]; then
|
||||
echo -DKBUILD_NO_NLS;
|
||||
fi
|
||||
|
|
@ -5,6 +5,25 @@
|
|||
|
||||
/* A lexical scanner generated by flex */
|
||||
|
||||
#define yy_create_buffer zconf_create_buffer
|
||||
#define yy_delete_buffer zconf_delete_buffer
|
||||
#define yy_flex_debug zconf_flex_debug
|
||||
#define yy_init_buffer zconf_init_buffer
|
||||
#define yy_flush_buffer zconf_flush_buffer
|
||||
#define yy_load_buffer_state zconf_load_buffer_state
|
||||
#define yy_switch_to_buffer zconf_switch_to_buffer
|
||||
#define yyin zconfin
|
||||
#define yyleng zconfleng
|
||||
#define yylex zconflex
|
||||
#define yylineno zconflineno
|
||||
#define yyout zconfout
|
||||
#define yyrestart zconfrestart
|
||||
#define yytext zconftext
|
||||
#define yywrap zconfwrap
|
||||
#define yyalloc zconfalloc
|
||||
#define yyrealloc zconfrealloc
|
||||
#define yyfree zconffree
|
||||
|
||||
#define FLEX_SCANNER
|
||||
#define YY_FLEX_MAJOR_VERSION 2
|
||||
#define YY_FLEX_MINOR_VERSION 5
|
||||
|
@ -33,7 +52,7 @@
|
|||
#if __STDC_VERSION__ >= 199901L
|
||||
|
||||
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
|
||||
* if you want the limit (max/min) macros for int types.
|
||||
* if you want the limit (max/min) macros for int types.
|
||||
*/
|
||||
#ifndef __STDC_LIMIT_MACROS
|
||||
#define __STDC_LIMIT_MACROS 1
|
||||
|
@ -335,7 +354,7 @@ void zconffree (void * );
|
|||
|
||||
/* Begin user sect3 */
|
||||
|
||||
#define zconfwrap() 1
|
||||
#define zconfwrap(n) 1
|
||||
#define YY_SKIP_YYWRAP
|
||||
|
||||
typedef unsigned char YY_CHAR;
|
||||
|
@ -1983,7 +2002,7 @@ YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
|
|||
|
||||
/** Setup the input buffer state to scan a string. The next call to zconflex() will
|
||||
* scan from a @e copy of @a str.
|
||||
* @param yystr a NUL-terminated string to scan
|
||||
* @param str a NUL-terminated string to scan
|
||||
*
|
||||
* @return the newly allocated buffer state object.
|
||||
* @note If you want to scan bytes that may contain NUL values, then use
|
||||
|
|
|
@ -35,9 +35,13 @@ static const char mconf_readme[] = N_(
|
|||
"kernel parameters which are not really features, but must be\n"
|
||||
"entered in as decimal or hexadecimal numbers or possibly text.\n"
|
||||
"\n"
|
||||
"Menu items beginning with [*], <M> or [ ] represent features\n"
|
||||
"configured to be built in, modularized or removed respectively.\n"
|
||||
"Pointed brackets <> represent module capable features.\n"
|
||||
"Menu items beginning with following braces represent features that\n"
|
||||
" [ ] can be built in or removed\n"
|
||||
" < > can be built in, modularized or removed\n"
|
||||
" { } can be built in or modularized (selected by other feature)\n"
|
||||
" - - are selected by other feature,\n"
|
||||
"while *, M or whitespace inside braces means to build in, build as\n"
|
||||
"a module or to exclude the feature respectively.\n"
|
||||
"\n"
|
||||
"To change any of these features, highlight it with the cursor\n"
|
||||
"keys and press <Y> to build it in, <M> to make it a module or\n"
|
||||
|
@ -357,8 +361,9 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym)
|
|||
bool hit;
|
||||
struct property *prop;
|
||||
|
||||
str_printf(r, "Symbol: %s [=%s]\n", sym->name,
|
||||
sym_get_string_value(sym));
|
||||
if (sym && sym->name)
|
||||
str_printf(r, "Symbol: %s [=%s]\n", sym->name,
|
||||
sym_get_string_value(sym));
|
||||
for_all_prompts(sym, prop)
|
||||
get_prompt_str(r, prop);
|
||||
hit = false;
|
||||
|
@ -481,6 +486,14 @@ static void build_conf(struct menu *menu)
|
|||
if (single_menu_mode && menu->data)
|
||||
goto conf_childs;
|
||||
return;
|
||||
case P_COMMENT:
|
||||
if (prompt) {
|
||||
child_count++;
|
||||
item_make(" %*c*** %s ***", indent + 1, ' ', prompt);
|
||||
item_set_tag(':');
|
||||
item_set_data(menu);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (prompt) {
|
||||
child_count++;
|
||||
|
@ -560,7 +573,7 @@ static void build_conf(struct menu *menu)
|
|||
if (sym_is_changable(sym))
|
||||
item_make("[%c]", val == no ? ' ' : '*');
|
||||
else
|
||||
item_make("---");
|
||||
item_make("-%c-", val == no ? ' ' : '*');
|
||||
item_set_tag('t');
|
||||
item_set_data(menu);
|
||||
break;
|
||||
|
@ -570,10 +583,13 @@ static void build_conf(struct menu *menu)
|
|||
case mod: ch = 'M'; break;
|
||||
default: ch = ' '; break;
|
||||
}
|
||||
if (sym_is_changable(sym))
|
||||
item_make("<%c>", ch);
|
||||
else
|
||||
item_make("---");
|
||||
if (sym_is_changable(sym)) {
|
||||
if (sym->rev_dep.tri == mod)
|
||||
item_make("{%c}", ch);
|
||||
else
|
||||
item_make("<%c>", ch);
|
||||
} else
|
||||
item_make("-%c-", ch);
|
||||
item_set_tag('t');
|
||||
item_set_data(menu);
|
||||
break;
|
||||
|
|
|
@ -235,16 +235,23 @@ void menu_finalize(struct menu *parent)
|
|||
sym = parent->sym;
|
||||
if (parent->list) {
|
||||
if (sym && sym_is_choice(sym)) {
|
||||
/* find the first choice value and find out choice type */
|
||||
/* find out choice type */
|
||||
enum symbol_type type = S_UNKNOWN;
|
||||
|
||||
for (menu = parent->list; menu; menu = menu->next) {
|
||||
if (menu->sym) {
|
||||
current_entry = parent;
|
||||
menu_set_type(menu->sym->type);
|
||||
current_entry = menu;
|
||||
menu_set_type(sym->type);
|
||||
break;
|
||||
if (menu->sym && menu->sym->type != S_UNKNOWN) {
|
||||
if (type == S_UNKNOWN)
|
||||
type = menu->sym->type;
|
||||
if (type != S_BOOLEAN)
|
||||
break;
|
||||
if (menu->sym->type == S_TRISTATE) {
|
||||
type = S_TRISTATE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
current_entry = parent;
|
||||
menu_set_type(type);
|
||||
parentdep = expr_alloc_symbol(sym);
|
||||
} else if (parent->prompt)
|
||||
parentdep = parent->prompt->visible.expr;
|
||||
|
@ -253,7 +260,16 @@ void menu_finalize(struct menu *parent)
|
|||
|
||||
for (menu = parent->list; menu; menu = menu->next) {
|
||||
basedep = expr_transform(menu->dep);
|
||||
basedep = expr_alloc_and(expr_copy(parentdep), basedep);
|
||||
dep = parentdep;
|
||||
if (sym && sym_is_choice(sym) && menu->sym) {
|
||||
enum symbol_type type = menu->sym->type;
|
||||
|
||||
if (type == S_UNKNOWN)
|
||||
type = sym->type;
|
||||
if (type != S_TRISTATE)
|
||||
dep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);
|
||||
}
|
||||
basedep = expr_alloc_and(expr_copy(dep), basedep);
|
||||
basedep = expr_eliminate_dups(basedep);
|
||||
menu->dep = basedep;
|
||||
if (menu->sym)
|
||||
|
@ -326,7 +342,8 @@ void menu_finalize(struct menu *parent)
|
|||
"values not supported");
|
||||
}
|
||||
current_entry = menu;
|
||||
menu_set_type(sym->type);
|
||||
if (menu->sym->type == S_UNKNOWN)
|
||||
menu_set_type(sym->type);
|
||||
menu_add_symbol(P_CHOICE, sym, NULL);
|
||||
prop = sym_get_choice_prop(sym);
|
||||
for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
|
||||
|
|
|
@ -84,12 +84,15 @@ void str_free(struct gstr *gs)
|
|||
/* Append to growable string */
|
||||
void str_append(struct gstr *gs, const char *s)
|
||||
{
|
||||
size_t l = strlen(gs->s) + strlen(s) + 1;
|
||||
if (l > gs->len) {
|
||||
gs->s = realloc(gs->s, l);
|
||||
gs->len = l;
|
||||
size_t l;
|
||||
if (s) {
|
||||
l = strlen(gs->s) + strlen(s) + 1;
|
||||
if (l > gs->len) {
|
||||
gs->s = realloc(gs->s, l);
|
||||
gs->len = l;
|
||||
}
|
||||
strcat(gs->s, s);
|
||||
}
|
||||
strcat(gs->s, s);
|
||||
}
|
||||
|
||||
/* Append printf formatted string to growable string */
|
||||
|
|
|
@ -23,7 +23,6 @@ help, T_HELP, TF_COMMAND
|
|||
if, T_IF, TF_COMMAND|TF_PARAM
|
||||
endif, T_ENDIF, TF_COMMAND
|
||||
depends, T_DEPENDS, TF_COMMAND
|
||||
requires, T_REQUIRES, TF_COMMAND
|
||||
optional, T_OPTIONAL, TF_COMMAND
|
||||
default, T_DEFAULT, TF_COMMAND, S_UNKNOWN
|
||||
prompt, T_PROMPT, TF_COMMAND
|
||||
|
@ -32,7 +31,6 @@ def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE
|
|||
bool, T_TYPE, TF_COMMAND, S_BOOLEAN
|
||||
boolean, T_TYPE, TF_COMMAND, S_BOOLEAN
|
||||
def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN
|
||||
def_boolean, T_DEFAULT, TF_COMMAND, S_BOOLEAN
|
||||
int, T_TYPE, TF_COMMAND, S_INT
|
||||
hex, T_TYPE, TF_COMMAND, S_HEX
|
||||
string, T_TYPE, TF_COMMAND, S_STRING
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* ANSI-C code produced by gperf version 3.0.1 */
|
||||
/* ANSI-C code produced by gperf version 3.0.2 */
|
||||
/* Command-line: gperf */
|
||||
/* Computed positions: -k'1,3' */
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
|||
#endif
|
||||
|
||||
struct kconf_id;
|
||||
/* maximum key range = 45, duplicates = 0 */
|
||||
/* maximum key range = 47, duplicates = 0 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
|
@ -44,32 +44,32 @@ kconf_id_hash (register const char *str, register unsigned int len)
|
|||
{
|
||||
static unsigned char asso_values[] =
|
||||
{
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 25, 30, 15,
|
||||
0, 15, 0, 47, 5, 15, 47, 47, 30, 20,
|
||||
5, 0, 25, 15, 0, 0, 10, 35, 47, 47,
|
||||
5, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
|
||||
47, 47, 47, 47, 47, 47
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 18, 11, 5,
|
||||
0, 0, 5, 49, 5, 20, 49, 49, 5, 20,
|
||||
5, 0, 30, 49, 0, 15, 0, 10, 49, 49,
|
||||
25, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49
|
||||
};
|
||||
register int hval = len;
|
||||
|
||||
|
@ -89,74 +89,70 @@ kconf_id_hash (register const char *str, register unsigned int len)
|
|||
struct kconf_id_strings_t
|
||||
{
|
||||
char kconf_id_strings_str2[sizeof("on")];
|
||||
char kconf_id_strings_str6[sizeof("string")];
|
||||
char kconf_id_strings_str7[sizeof("default")];
|
||||
char kconf_id_strings_str8[sizeof("def_bool")];
|
||||
char kconf_id_strings_str5[sizeof("endif")];
|
||||
char kconf_id_strings_str6[sizeof("option")];
|
||||
char kconf_id_strings_str7[sizeof("endmenu")];
|
||||
char kconf_id_strings_str8[sizeof("optional")];
|
||||
char kconf_id_strings_str9[sizeof("endchoice")];
|
||||
char kconf_id_strings_str10[sizeof("range")];
|
||||
char kconf_id_strings_str11[sizeof("def_boolean")];
|
||||
char kconf_id_strings_str12[sizeof("def_tristate")];
|
||||
char kconf_id_strings_str13[sizeof("hex")];
|
||||
char kconf_id_strings_str14[sizeof("defconfig_list")];
|
||||
char kconf_id_strings_str16[sizeof("option")];
|
||||
char kconf_id_strings_str17[sizeof("if")];
|
||||
char kconf_id_strings_str18[sizeof("optional")];
|
||||
char kconf_id_strings_str20[sizeof("endif")];
|
||||
char kconf_id_strings_str21[sizeof("choice")];
|
||||
char kconf_id_strings_str22[sizeof("endmenu")];
|
||||
char kconf_id_strings_str23[sizeof("requires")];
|
||||
char kconf_id_strings_str24[sizeof("endchoice")];
|
||||
char kconf_id_strings_str26[sizeof("config")];
|
||||
char kconf_id_strings_str11[sizeof("choice")];
|
||||
char kconf_id_strings_str12[sizeof("default")];
|
||||
char kconf_id_strings_str13[sizeof("def_bool")];
|
||||
char kconf_id_strings_str14[sizeof("help")];
|
||||
char kconf_id_strings_str15[sizeof("bool")];
|
||||
char kconf_id_strings_str16[sizeof("config")];
|
||||
char kconf_id_strings_str17[sizeof("def_tristate")];
|
||||
char kconf_id_strings_str18[sizeof("boolean")];
|
||||
char kconf_id_strings_str19[sizeof("defconfig_list")];
|
||||
char kconf_id_strings_str21[sizeof("string")];
|
||||
char kconf_id_strings_str22[sizeof("if")];
|
||||
char kconf_id_strings_str23[sizeof("int")];
|
||||
char kconf_id_strings_str24[sizeof("enable")];
|
||||
char kconf_id_strings_str26[sizeof("select")];
|
||||
char kconf_id_strings_str27[sizeof("modules")];
|
||||
char kconf_id_strings_str28[sizeof("int")];
|
||||
char kconf_id_strings_str28[sizeof("tristate")];
|
||||
char kconf_id_strings_str29[sizeof("menu")];
|
||||
char kconf_id_strings_str31[sizeof("prompt")];
|
||||
char kconf_id_strings_str32[sizeof("depends")];
|
||||
char kconf_id_strings_str33[sizeof("tristate")];
|
||||
char kconf_id_strings_str34[sizeof("bool")];
|
||||
char kconf_id_strings_str31[sizeof("source")];
|
||||
char kconf_id_strings_str32[sizeof("comment")];
|
||||
char kconf_id_strings_str33[sizeof("hex")];
|
||||
char kconf_id_strings_str35[sizeof("menuconfig")];
|
||||
char kconf_id_strings_str36[sizeof("select")];
|
||||
char kconf_id_strings_str37[sizeof("boolean")];
|
||||
char kconf_id_strings_str39[sizeof("help")];
|
||||
char kconf_id_strings_str41[sizeof("source")];
|
||||
char kconf_id_strings_str42[sizeof("comment")];
|
||||
char kconf_id_strings_str43[sizeof("mainmenu")];
|
||||
char kconf_id_strings_str46[sizeof("enable")];
|
||||
char kconf_id_strings_str36[sizeof("prompt")];
|
||||
char kconf_id_strings_str37[sizeof("depends")];
|
||||
char kconf_id_strings_str48[sizeof("mainmenu")];
|
||||
};
|
||||
static struct kconf_id_strings_t kconf_id_strings_contents =
|
||||
{
|
||||
"on",
|
||||
"string",
|
||||
"endif",
|
||||
"option",
|
||||
"endmenu",
|
||||
"optional",
|
||||
"endchoice",
|
||||
"range",
|
||||
"choice",
|
||||
"default",
|
||||
"def_bool",
|
||||
"range",
|
||||
"def_boolean",
|
||||
"def_tristate",
|
||||
"hex",
|
||||
"defconfig_list",
|
||||
"option",
|
||||
"if",
|
||||
"optional",
|
||||
"endif",
|
||||
"choice",
|
||||
"endmenu",
|
||||
"requires",
|
||||
"endchoice",
|
||||
"config",
|
||||
"modules",
|
||||
"int",
|
||||
"menu",
|
||||
"prompt",
|
||||
"depends",
|
||||
"tristate",
|
||||
"bool",
|
||||
"menuconfig",
|
||||
"select",
|
||||
"boolean",
|
||||
"help",
|
||||
"bool",
|
||||
"config",
|
||||
"def_tristate",
|
||||
"boolean",
|
||||
"defconfig_list",
|
||||
"string",
|
||||
"if",
|
||||
"int",
|
||||
"enable",
|
||||
"select",
|
||||
"modules",
|
||||
"tristate",
|
||||
"menu",
|
||||
"source",
|
||||
"comment",
|
||||
"mainmenu",
|
||||
"enable"
|
||||
"hex",
|
||||
"menuconfig",
|
||||
"prompt",
|
||||
"depends",
|
||||
"mainmenu"
|
||||
};
|
||||
#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
|
||||
#ifdef __GNUC__
|
||||
|
@ -167,58 +163,54 @@ kconf_id_lookup (register const char *str, register unsigned int len)
|
|||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 33,
|
||||
TOTAL_KEYWORDS = 31,
|
||||
MIN_WORD_LENGTH = 2,
|
||||
MAX_WORD_LENGTH = 14,
|
||||
MIN_HASH_VALUE = 2,
|
||||
MAX_HASH_VALUE = 46
|
||||
MAX_HASH_VALUE = 48
|
||||
};
|
||||
|
||||
static struct kconf_id wordlist[] =
|
||||
{
|
||||
{-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
|
||||
{-1}, {-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_TYPE, TF_COMMAND, S_STRING},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
|
||||
{-1},
|
||||
{-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_OPTIONAL, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_RANGE, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_TYPE, TF_COMMAND, S_HEX},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11, T_CHOICE, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_OPTION, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_IF, TF_COMMAND|TF_PARAM},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24, T_SELECT, TF_COMMAND},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str20, T_ENDIF, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_CHOICE, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_REQUIRES, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24, T_ENDCHOICE, TF_COMMAND},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_CONFIG, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_INT},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_PROMPT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_DEPENDS, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_TRISTATE},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str34, T_TYPE, TF_COMMAND, S_BOOLEAN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_SELECT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_TYPE, TF_COMMAND, S_BOOLEAN},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND},
|
||||
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_HELP, TF_COMMAND},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_COMMENT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_MAINMENU, TF_COMMAND},
|
||||
{-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_SELECT, TF_COMMAND}
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -64,7 +64,6 @@ static struct menu *current_menu, *current_entry;
|
|||
%token <id>T_IF
|
||||
%token <id>T_ENDIF
|
||||
%token <id>T_DEPENDS
|
||||
%token <id>T_REQUIRES
|
||||
%token <id>T_OPTIONAL
|
||||
%token <id>T_PROMPT
|
||||
%token <id>T_TYPE
|
||||
|
@ -418,16 +417,6 @@ depends: T_DEPENDS T_ON expr T_EOL
|
|||
{
|
||||
menu_add_dep($3);
|
||||
printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
|
||||
}
|
||||
| T_DEPENDS expr T_EOL
|
||||
{
|
||||
menu_add_dep($2);
|
||||
printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
|
||||
}
|
||||
| T_REQUIRES expr T_EOL
|
||||
{
|
||||
menu_add_dep($2);
|
||||
printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
|
||||
};
|
||||
|
||||
/* prompt statement */
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# with correct relocations from System.map
|
||||
# Requires the following lines in makefile:
|
||||
#%.lst: %.c
|
||||
# $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -g -c -o $*.o $<
|
||||
# $(srctree)/scripts/makelst $*.o $(objtree)/System.map $(OBJDUMP)
|
||||
# $(CC) $(c_flags) -g -c -o $*.o $< &&
|
||||
# $(srctree)/scripts/makelst $*.o System.map $(OBJDUMP) > $@
|
||||
#
|
||||
# Copyright (C) 2000 IBM Corporation
|
||||
# Author(s): DJ Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
|
||||
|
|
|
@ -26,11 +26,13 @@ MAKEFLAGS += --no-print-directory
|
|||
|
||||
.PHONY: all \$(MAKECMDGOALS)
|
||||
|
||||
all := \$(filter-out all Makefile,\$(MAKECMDGOALS))
|
||||
|
||||
all:
|
||||
\$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT)
|
||||
\$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$(all)
|
||||
|
||||
Makefile:;
|
||||
|
||||
\$(filter-out all Makefile,\$(MAKECMDGOALS)) %/:
|
||||
\$(MAKE) -C \$(KERNELSRC) O=\$(KERNELOUTPUT) \$@
|
||||
\$(all) %/: all
|
||||
@:
|
||||
EOF
|
||||
|
|
|
@ -55,10 +55,14 @@ do { \
|
|||
* Check that sizeof(device_id type) are consistent with size of section
|
||||
* in .o file. If in-consistent then userspace and kernel does not agree
|
||||
* on actual size which is a bug.
|
||||
* Also verify that the final entry in the table is all zeros.
|
||||
**/
|
||||
static void device_id_size_check(const char *modname, const char *device_id,
|
||||
unsigned long size, unsigned long id_size)
|
||||
static void device_id_check(const char *modname, const char *device_id,
|
||||
unsigned long size, unsigned long id_size,
|
||||
void *symval)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (size % id_size || size < id_size) {
|
||||
fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo "
|
||||
"of the size of section __mod_%s_device_table=%lu.\n"
|
||||
|
@ -66,6 +70,20 @@ static void device_id_size_check(const char *modname, const char *device_id,
|
|||
"in mod_devicetable.h\n",
|
||||
modname, device_id, id_size, device_id, size, device_id);
|
||||
}
|
||||
/* Verify last one is a terminator */
|
||||
for (i = 0; i < id_size; i++ ) {
|
||||
if (*(uint8_t*)(symval+size-id_size+i)) {
|
||||
fprintf(stderr,"%s: struct %s_device_id is %lu bytes. "
|
||||
"The last of %lu is:\n",
|
||||
modname, device_id, id_size, size / id_size);
|
||||
for (i = 0; i < id_size; i++ )
|
||||
fprintf(stderr,"0x%02x ",
|
||||
*(uint8_t*)(symval+size-id_size+i) );
|
||||
fprintf(stderr,"\n");
|
||||
fatal("%s: struct %s_device_id is not terminated "
|
||||
"with a NULL entry!\n", modname, device_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* USB is special because the bcdDevice can be matched against a numeric range */
|
||||
|
@ -168,7 +186,7 @@ static void do_usb_table(void *symval, unsigned long size,
|
|||
unsigned int i;
|
||||
const unsigned long id_size = sizeof(struct usb_device_id);
|
||||
|
||||
device_id_size_check(mod->name, "usb", size, id_size);
|
||||
device_id_check(mod->name, "usb", size, id_size, symval);
|
||||
|
||||
/* Leave last one: it's the terminator. */
|
||||
size -= id_size;
|
||||
|
@ -528,7 +546,7 @@ static void do_table(void *symval, unsigned long size,
|
|||
char alias[500];
|
||||
int (*do_entry)(const char *, void *entry, char *alias) = function;
|
||||
|
||||
device_id_size_check(mod->name, device_id, size, id_size);
|
||||
device_id_check(mod->name, device_id, size, id_size, symval);
|
||||
/* Leave last one: it's the terminator. */
|
||||
size -= id_size;
|
||||
|
||||
|
@ -550,14 +568,21 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
|
|||
Elf_Sym *sym, const char *symname)
|
||||
{
|
||||
void *symval;
|
||||
char *zeros = NULL;
|
||||
|
||||
/* We're looking for a section relative symbol */
|
||||
if (!sym->st_shndx || sym->st_shndx >= info->hdr->e_shnum)
|
||||
return;
|
||||
|
||||
symval = (void *)info->hdr
|
||||
+ info->sechdrs[sym->st_shndx].sh_offset
|
||||
+ sym->st_value;
|
||||
/* Handle all-NULL symbols allocated into .bss */
|
||||
if (info->sechdrs[sym->st_shndx].sh_type & SHT_NOBITS) {
|
||||
zeros = calloc(1, sym->st_size);
|
||||
symval = zeros;
|
||||
} else {
|
||||
symval = (void *)info->hdr
|
||||
+ info->sechdrs[sym->st_shndx].sh_offset
|
||||
+ sym->st_value;
|
||||
}
|
||||
|
||||
if (sym_is(symname, "__mod_pci_device_table"))
|
||||
do_table(symval, sym->st_size,
|
||||
|
@ -626,6 +651,7 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
|
|||
do_table(symval, sym->st_size,
|
||||
sizeof(struct ssb_device_id), "ssb",
|
||||
do_ssb_entry, mod);
|
||||
free(zeros);
|
||||
}
|
||||
|
||||
/* Now add out buffered information to the generated C source */
|
||||
|
|
|
@ -381,6 +381,12 @@ static int parse_elf(struct elf_info *info, const char *filename)
|
|||
sechdrs = (void *)hdr + hdr->e_shoff;
|
||||
info->sechdrs = sechdrs;
|
||||
|
||||
/* Check if file offset is correct */
|
||||
if (hdr->e_shoff > info->size) {
|
||||
fatal("section header offset=%u in file '%s' is bigger then filesize=%lu\n", hdr->e_shoff, filename, info->size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Fix endianness in section headers */
|
||||
for (i = 0; i < hdr->e_shnum; i++) {
|
||||
sechdrs[i].sh_type = TO_NATIVE(sechdrs[i].sh_type);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#define Elf_Shdr Elf32_Shdr
|
||||
#define Elf_Sym Elf32_Sym
|
||||
#define Elf_Addr Elf32_Addr
|
||||
#define Elf_Section Elf32_Section
|
||||
#define Elf_Section Elf32_Half
|
||||
#define ELF_ST_BIND ELF32_ST_BIND
|
||||
#define ELF_ST_TYPE ELF32_ST_TYPE
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
|||
#define Elf_Shdr Elf64_Shdr
|
||||
#define Elf_Sym Elf64_Sym
|
||||
#define Elf_Addr Elf64_Addr
|
||||
#define Elf_Section Elf64_Section
|
||||
#define Elf_Section Elf64_Half
|
||||
#define ELF_ST_BIND ELF64_ST_BIND
|
||||
#define ELF_ST_TYPE ELF64_ST_TYPE
|
||||
|
||||
|
|
|
@ -21,9 +21,7 @@ gcc --version 2>&1| grep gcc | awk \
|
|||
make --version 2>&1 | awk -F, '{print $1}' | awk \
|
||||
'/GNU Make/{print "Gnu make ",$NF}'
|
||||
|
||||
ld -v | awk -F\) '{print $1}' | awk \
|
||||
'/BFD/{print "binutils ",$NF} \
|
||||
/^GNU/{print "binutils ",$4}'
|
||||
echo "binutils $(ld -v | egrep -o '[0-9]+\.[0-9\.]+')"
|
||||
|
||||
echo -n "util-linux "
|
||||
fdformat --version | awk '{print $NF}' | sed -e s/^util-linux-// -e s/\)$//
|
||||
|
@ -65,9 +63,8 @@ isdnctrl 2>&1 | grep version | awk \
|
|||
showmount --version 2>&1 | grep nfs-utils | awk \
|
||||
'NR==1{print "nfs-utils ", $NF}'
|
||||
|
||||
ls -l `ldd /bin/sh | awk '/libc/{print $3}'` | sed \
|
||||
-e 's/\.so$//' | sed -e 's/>//' | \
|
||||
awk -F'[.-]' '{print "Linux C Library "$(NF-1)"."$NF}'
|
||||
echo -n "Linux C Library "
|
||||
sed -n -e '/^.*\/libc-\([^/]*\)\.so$/{s//\1/;p;q}' < /proc/self/maps
|
||||
|
||||
ldd -v > /dev/null 2>&1 && ldd -v || ldd --version |head -n 1 | awk \
|
||||
'NR==1{print "Dynamic linker (ldd) ", $NF}'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue