Merge commit 'v2.6.29' into core/header-fixes
This commit is contained in:
@@ -51,7 +51,7 @@ my %pidctr;
|
||||
|
||||
while (<>) {
|
||||
my $line = $_;
|
||||
if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_]+)\+/) {
|
||||
if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_\.]+)\+/) {
|
||||
my $func = $2;
|
||||
if ($done == 0) {
|
||||
$start{$func} = $1;
|
||||
@@ -87,7 +87,7 @@ while (<>) {
|
||||
$count = $count + 1;
|
||||
}
|
||||
|
||||
if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_]+)\+.*returned/) {
|
||||
if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_\.]+)\+.*returned/) {
|
||||
if ($done == 0) {
|
||||
$end{$2} = $1;
|
||||
$maxtime = $1;
|
||||
|
@@ -10,7 +10,7 @@ use strict;
|
||||
my $P = $0;
|
||||
$P =~ s@.*/@@g;
|
||||
|
||||
my $V = '0.27';
|
||||
my $V = '0.28';
|
||||
|
||||
use Getopt::Long qw(:config no_auto_abbrev);
|
||||
|
||||
@@ -110,7 +110,8 @@ our $Sparse = qr{
|
||||
__iomem|
|
||||
__must_check|
|
||||
__init_refok|
|
||||
__kprobes
|
||||
__kprobes|
|
||||
__ref
|
||||
}x;
|
||||
our $Attribute = qr{
|
||||
const|
|
||||
@@ -1240,7 +1241,8 @@ sub process {
|
||||
$realfile =~ s@^([^/]*)/@@;
|
||||
|
||||
$p1_prefix = $1;
|
||||
if ($tree && $p1_prefix ne '' && -e "$root/$p1_prefix") {
|
||||
if (!$file && $tree && $p1_prefix ne '' &&
|
||||
-e "$root/$p1_prefix") {
|
||||
WARN("patch prefix '$p1_prefix' exists, appears to be a -p0 patch\n");
|
||||
}
|
||||
|
||||
@@ -1583,9 +1585,9 @@ sub process {
|
||||
}
|
||||
# TEST: allow direct testing of the attribute matcher.
|
||||
if ($dbg_attr) {
|
||||
if ($line =~ /^.\s*$Attribute\s*$/) {
|
||||
if ($line =~ /^.\s*$Modifier\s*$/) {
|
||||
ERROR("TEST: is attr\n" . $herecurr);
|
||||
} elsif ($dbg_attr > 1 && $line =~ /^.+($Attribute)/) {
|
||||
} elsif ($dbg_attr > 1 && $line =~ /^.+($Modifier)/) {
|
||||
ERROR("TEST: is not attr ($1 is)\n". $herecurr);
|
||||
}
|
||||
next;
|
||||
@@ -1657,7 +1659,7 @@ sub process {
|
||||
|
||||
# * goes on variable not on type
|
||||
# (char*[ const])
|
||||
if ($line =~ m{\($NonptrType(\s*\*[\s\*]*(?:$Modifier\s*)*)\)}) {
|
||||
if ($line =~ m{\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\)}) {
|
||||
my ($from, $to) = ($1, $1);
|
||||
|
||||
# Should start with a space.
|
||||
@@ -1672,7 +1674,7 @@ sub process {
|
||||
if ($from ne $to) {
|
||||
ERROR("\"(foo$from)\" should be \"(foo$to)\"\n" . $herecurr);
|
||||
}
|
||||
} elsif ($line =~ m{\b$NonptrType(\s*\*[\s\*]*(?:$Modifier\s*)?)($Ident)}) {
|
||||
} elsif ($line =~ m{\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident)}) {
|
||||
my ($from, $to, $ident) = ($1, $1, $2);
|
||||
|
||||
# Should start with a space.
|
||||
@@ -1685,8 +1687,8 @@ sub process {
|
||||
# Modifiers should have spaces.
|
||||
$to =~ s/(\b$Modifier$)/$1 /;
|
||||
|
||||
#print "from<$from> to<$to>\n";
|
||||
if ($from ne $to) {
|
||||
#print "from<$from> to<$to> ident<$ident>\n";
|
||||
if ($from ne $to && $ident !~ /^$Modifier$/) {
|
||||
ERROR("\"foo${from}bar\" should be \"foo${to}bar\"\n" . $herecurr);
|
||||
}
|
||||
}
|
||||
@@ -1885,11 +1887,11 @@ sub process {
|
||||
if ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) {
|
||||
ERROR("space required before that '$op' $at\n" . $hereptr);
|
||||
}
|
||||
if ($op eq '*' && $cc =~/\s*const\b/) {
|
||||
if ($op eq '*' && $cc =~/\s*$Modifier\b/) {
|
||||
# A unary '*' may be const
|
||||
|
||||
} elsif ($ctx =~ /.xW/) {
|
||||
ERROR("space prohibited after that '$op' $at\n" . $hereptr);
|
||||
ERROR("Aspace prohibited after that '$op' $at\n" . $hereptr);
|
||||
}
|
||||
|
||||
# unary ++ and unary -- are allowed no space on one side.
|
||||
@@ -2560,7 +2562,7 @@ sub process {
|
||||
if ($line =~ /\bin_atomic\s*\(/) {
|
||||
if ($realfile =~ m@^drivers/@) {
|
||||
ERROR("do not use in_atomic in drivers\n" . $herecurr);
|
||||
} else {
|
||||
} elsif ($realfile !~ m@^kernel/@) {
|
||||
WARN("use of in_atomic() is incorrect outside core kernel code\n" . $herecurr);
|
||||
}
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#define LKC_DIRECT_LINK
|
||||
#include "lkc.h"
|
||||
@@ -464,9 +465,22 @@ int main(int ac, char **av)
|
||||
input_mode = set_yes;
|
||||
break;
|
||||
case 'r':
|
||||
{
|
||||
struct timeval now;
|
||||
unsigned int seed;
|
||||
|
||||
/*
|
||||
* Use microseconds derived seed,
|
||||
* compensate for systems where it may be zero
|
||||
*/
|
||||
gettimeofday(&now, NULL);
|
||||
|
||||
seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
|
||||
srand(seed);
|
||||
|
||||
input_mode = set_random;
|
||||
srand(time(NULL));
|
||||
break;
|
||||
}
|
||||
case 'h':
|
||||
printf(_("See README for usage info\n"));
|
||||
exit(0);
|
||||
|
@@ -843,7 +843,7 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
if (!sym_is_choice(sym) || mode != def_random)
|
||||
if (!(sym_is_choice(sym) && mode == def_random))
|
||||
sym->flags |= SYMBOL_DEF_USER;
|
||||
break;
|
||||
default:
|
||||
@@ -856,28 +856,49 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
|
||||
|
||||
if (mode != def_random)
|
||||
return;
|
||||
|
||||
/*
|
||||
* We have different type of choice blocks.
|
||||
* If curr.tri equal to mod then we can select several
|
||||
* choice symbols in one block.
|
||||
* In this case we do nothing.
|
||||
* If curr.tri equal yes then only one symbol can be
|
||||
* selected in a choice block and we set it to yes,
|
||||
* and the rest to no.
|
||||
*/
|
||||
for_all_symbols(i, csym) {
|
||||
if (sym_has_value(csym) || !sym_is_choice(csym))
|
||||
continue;
|
||||
|
||||
sym_calc_value(csym);
|
||||
|
||||
if (csym->curr.tri != yes)
|
||||
continue;
|
||||
|
||||
prop = sym_get_choice_prop(csym);
|
||||
def = -1;
|
||||
while (1) {
|
||||
cnt = 0;
|
||||
expr_list_for_each_sym(prop->expr, e, sym) {
|
||||
if (sym->visible == no)
|
||||
continue;
|
||||
if (def == cnt++) {
|
||||
csym->def[S_DEF_USER].val = sym;
|
||||
break;
|
||||
}
|
||||
|
||||
/* count entries in choice block */
|
||||
cnt = 0;
|
||||
expr_list_for_each_sym(prop->expr, e, sym)
|
||||
cnt++;
|
||||
|
||||
/*
|
||||
* find a random value and set it to yes,
|
||||
* set the rest to no so we have only one set
|
||||
*/
|
||||
def = (rand() % cnt);
|
||||
|
||||
cnt = 0;
|
||||
expr_list_for_each_sym(prop->expr, e, sym) {
|
||||
if (def == cnt++) {
|
||||
sym->def[S_DEF_USER].tri = yes;
|
||||
csym->def[S_DEF_USER].val = sym;
|
||||
}
|
||||
else {
|
||||
sym->def[S_DEF_USER].tri = no;
|
||||
}
|
||||
if (def >= 0 || cnt < 2)
|
||||
break;
|
||||
def = (rand() % cnt) + 1;
|
||||
}
|
||||
csym->flags |= SYMBOL_DEF_USER;
|
||||
/* clear VALID to get value calculated */
|
||||
csym->flags &= ~(SYMBOL_VALID);
|
||||
}
|
||||
}
|
||||
|
@@ -1827,6 +1827,40 @@ sub reset_state {
|
||||
$state = 0;
|
||||
}
|
||||
|
||||
sub syscall_munge() {
|
||||
my $void = 0;
|
||||
|
||||
$prototype =~ s@[\r\n\t]+@ @gos; # strip newlines/CR's/tabs
|
||||
## if ($prototype =~ m/SYSCALL_DEFINE0\s*\(\s*(a-zA-Z0-9_)*\s*\)/) {
|
||||
if ($prototype =~ m/SYSCALL_DEFINE0/) {
|
||||
$void = 1;
|
||||
## $prototype = "long sys_$1(void)";
|
||||
}
|
||||
|
||||
$prototype =~ s/SYSCALL_DEFINE.*\(/long sys_/; # fix return type & func name
|
||||
if ($prototype =~ m/long (sys_.*?),/) {
|
||||
$prototype =~ s/,/\(/;
|
||||
} elsif ($void) {
|
||||
$prototype =~ s/\)/\(void\)/;
|
||||
}
|
||||
|
||||
# now delete all of the odd-number commas in $prototype
|
||||
# so that arg types & arg names don't have a comma between them
|
||||
my $count = 0;
|
||||
my $len = length($prototype);
|
||||
if ($void) {
|
||||
$len = 0; # skip the for-loop
|
||||
}
|
||||
for (my $ix = 0; $ix < $len; $ix++) {
|
||||
if (substr($prototype, $ix, 1) eq ',') {
|
||||
$count++;
|
||||
if ($count % 2 == 1) {
|
||||
substr($prototype, $ix, 1) = ' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub process_state3_function($$) {
|
||||
my $x = shift;
|
||||
my $file = shift;
|
||||
@@ -1839,11 +1873,15 @@ sub process_state3_function($$) {
|
||||
elsif ($x =~ /([^\{]*)/) {
|
||||
$prototype .= $1;
|
||||
}
|
||||
|
||||
if (($x =~ /\{/) || ($x =~ /\#\s*define/) || ($x =~ /;/)) {
|
||||
$prototype =~ s@/\*.*?\*/@@gos; # strip comments.
|
||||
$prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's.
|
||||
$prototype =~ s@^\s+@@gos; # strip leading spaces
|
||||
dump_function($prototype,$file);
|
||||
if ($prototype =~ /SYSCALL_DEFINE/) {
|
||||
syscall_munge();
|
||||
}
|
||||
dump_function($prototype, $file);
|
||||
reset_state();
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/perl -w
|
||||
#!/usr/bin/perl
|
||||
|
||||
use File::Basename;
|
||||
|
||||
@@ -29,27 +29,151 @@ my $filename = $vmlinux_name;
|
||||
my $target = "0";
|
||||
my $function;
|
||||
my $module = "";
|
||||
my $func_offset;
|
||||
my $func_offset = 0;
|
||||
my $vmaoffset = 0;
|
||||
|
||||
my %regs;
|
||||
|
||||
|
||||
sub parse_x86_regs
|
||||
{
|
||||
my ($line) = @_;
|
||||
if ($line =~ /EAX: ([0-9a-f]+) EBX: ([0-9a-f]+) ECX: ([0-9a-f]+) EDX: ([0-9a-f]+)/) {
|
||||
$regs{"%eax"} = $1;
|
||||
$regs{"%ebx"} = $2;
|
||||
$regs{"%ecx"} = $3;
|
||||
$regs{"%edx"} = $4;
|
||||
}
|
||||
if ($line =~ /ESI: ([0-9a-f]+) EDI: ([0-9a-f]+) EBP: ([0-9a-f]+) ESP: ([0-9a-f]+)/) {
|
||||
$regs{"%esi"} = $1;
|
||||
$regs{"%edi"} = $2;
|
||||
$regs{"%esp"} = $4;
|
||||
}
|
||||
if ($line =~ /RAX: ([0-9a-f]+) RBX: ([0-9a-f]+) RCX: ([0-9a-f]+)/) {
|
||||
$regs{"%eax"} = $1;
|
||||
$regs{"%ebx"} = $2;
|
||||
$regs{"%ecx"} = $3;
|
||||
}
|
||||
if ($line =~ /RDX: ([0-9a-f]+) RSI: ([0-9a-f]+) RDI: ([0-9a-f]+)/) {
|
||||
$regs{"%edx"} = $1;
|
||||
$regs{"%esi"} = $2;
|
||||
$regs{"%edi"} = $3;
|
||||
}
|
||||
if ($line =~ /RBP: ([0-9a-f]+) R08: ([0-9a-f]+) R09: ([0-9a-f]+)/) {
|
||||
$regs{"%r08"} = $2;
|
||||
$regs{"%r09"} = $3;
|
||||
}
|
||||
if ($line =~ /R10: ([0-9a-f]+) R11: ([0-9a-f]+) R12: ([0-9a-f]+)/) {
|
||||
$regs{"%r10"} = $1;
|
||||
$regs{"%r11"} = $2;
|
||||
$regs{"%r12"} = $3;
|
||||
}
|
||||
if ($line =~ /R13: ([0-9a-f]+) R14: ([0-9a-f]+) R15: ([0-9a-f]+)/) {
|
||||
$regs{"%r13"} = $1;
|
||||
$regs{"%r14"} = $2;
|
||||
$regs{"%r15"} = $3;
|
||||
}
|
||||
}
|
||||
|
||||
sub reg_name
|
||||
{
|
||||
my ($reg) = @_;
|
||||
$reg =~ s/r(.)x/e\1x/;
|
||||
$reg =~ s/r(.)i/e\1i/;
|
||||
$reg =~ s/r(.)p/e\1p/;
|
||||
return $reg;
|
||||
}
|
||||
|
||||
sub process_x86_regs
|
||||
{
|
||||
my ($line, $cntr) = @_;
|
||||
my $str = "";
|
||||
if (length($line) < 40) {
|
||||
return ""; # not an asm istruction
|
||||
}
|
||||
|
||||
# find the arguments to the instruction
|
||||
if ($line =~ /([0-9a-zA-Z\,\%\(\)\-\+]+)$/) {
|
||||
$lastword = $1;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
||||
# we need to find the registers that get clobbered,
|
||||
# since their value is no longer relevant for previous
|
||||
# instructions in the stream.
|
||||
|
||||
$clobber = $lastword;
|
||||
# first, remove all memory operands, they're read only
|
||||
$clobber =~ s/\([a-z0-9\%\,]+\)//g;
|
||||
# then, remove everything before the comma, thats the read part
|
||||
$clobber =~ s/.*\,//g;
|
||||
|
||||
# if this is the instruction that faulted, we haven't actually done
|
||||
# the write yet... nothing is clobbered.
|
||||
if ($cntr == 0) {
|
||||
$clobber = "";
|
||||
}
|
||||
|
||||
foreach $reg (keys(%regs)) {
|
||||
my $clobberprime = reg_name($clobber);
|
||||
my $lastwordprime = reg_name($lastword);
|
||||
my $val = $regs{$reg};
|
||||
if ($val =~ /^[0]+$/) {
|
||||
$val = "0";
|
||||
} else {
|
||||
$val =~ s/^0*//;
|
||||
}
|
||||
|
||||
# first check if we're clobbering this register; if we do
|
||||
# we print it with a =>, and then delete its value
|
||||
if ($clobber =~ /$reg/ || $clobberprime =~ /$reg/) {
|
||||
if (length($val) > 0) {
|
||||
$str = $str . " $reg => $val ";
|
||||
}
|
||||
$regs{$reg} = "";
|
||||
$val = "";
|
||||
}
|
||||
# now check if we're reading this register
|
||||
if ($lastword =~ /$reg/ || $lastwordprime =~ /$reg/) {
|
||||
if (length($val) > 0) {
|
||||
$str = $str . " $reg = $val ";
|
||||
}
|
||||
}
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
# parse the oops
|
||||
while (<STDIN>) {
|
||||
my $line = $_;
|
||||
if ($line =~ /EIP: 0060:\[\<([a-z0-9]+)\>\]/) {
|
||||
$target = $1;
|
||||
}
|
||||
if ($line =~ /RIP: 0010:\[\<([a-z0-9]+)\>\]/) {
|
||||
$target = $1;
|
||||
}
|
||||
if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) {
|
||||
$function = $1;
|
||||
$func_offset = $2;
|
||||
}
|
||||
if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\] \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) {
|
||||
$function = $1;
|
||||
$func_offset = $2;
|
||||
}
|
||||
|
||||
# check if it's a module
|
||||
if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]+\W\[([a-zA-Z0-9\_\-]+)\]/) {
|
||||
$module = $3;
|
||||
}
|
||||
if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\] \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]+\W\[([a-zA-Z0-9\_\-]+)\]/) {
|
||||
$module = $3;
|
||||
}
|
||||
parse_x86_regs($line);
|
||||
}
|
||||
|
||||
my $decodestart = hex($target) - hex($func_offset);
|
||||
my $decodestop = $decodestart + 8192;
|
||||
my $decodestop = hex($target) + 8192;
|
||||
if ($target eq "0") {
|
||||
print "No oops found!\n";
|
||||
print "Usage: \n";
|
||||
@@ -84,6 +208,7 @@ my $counter = 0;
|
||||
my $state = 0;
|
||||
my $center = 0;
|
||||
my @lines;
|
||||
my @reglines;
|
||||
|
||||
sub InRange {
|
||||
my ($address, $target) = @_;
|
||||
@@ -188,16 +313,36 @@ while ($finish < $counter) {
|
||||
|
||||
my $i;
|
||||
|
||||
my $fulltext = "";
|
||||
|
||||
# start annotating the registers in the asm.
|
||||
# this goes from the oopsing point back, so that the annotator
|
||||
# can track (opportunistically) which registers got written and
|
||||
# whos value no longer is relevant.
|
||||
|
||||
$i = $center;
|
||||
while ($i >= $start) {
|
||||
$reglines[$i] = process_x86_regs($lines[$i], $center - $i);
|
||||
$i = $i - 1;
|
||||
}
|
||||
|
||||
$i = $start;
|
||||
while ($i < $finish) {
|
||||
my $line;
|
||||
if ($i == $center) {
|
||||
$fulltext = $fulltext . "*$lines[$i] <----- faulting instruction\n";
|
||||
$line = "*$lines[$i] ";
|
||||
} else {
|
||||
$fulltext = $fulltext . " $lines[$i]\n";
|
||||
$line = " $lines[$i] ";
|
||||
}
|
||||
print $line;
|
||||
if (defined($reglines[$i]) && length($reglines[$i]) > 0) {
|
||||
my $c = 60 - length($line);
|
||||
while ($c > 0) { print " "; $c = $c - 1; };
|
||||
print "| $reglines[$i]";
|
||||
}
|
||||
if ($i == $center) {
|
||||
print "<--- faulting instruction";
|
||||
}
|
||||
print "\n";
|
||||
$i = $i +1;
|
||||
}
|
||||
|
||||
print $fulltext;
|
||||
|
||||
|
@@ -210,6 +210,7 @@ static void do_usb_table(void *symval, unsigned long size,
|
||||
static int do_hid_entry(const char *filename,
|
||||
struct hid_device_id *id, char *alias)
|
||||
{
|
||||
id->bus = TO_NATIVE(id->bus);
|
||||
id->vendor = TO_NATIVE(id->vendor);
|
||||
id->product = TO_NATIVE(id->product);
|
||||
|
||||
|
@@ -35,9 +35,10 @@ $(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile
|
||||
rpm-pkg rpm: $(objtree)/kernel.spec FORCE
|
||||
$(MAKE) clean
|
||||
$(PREV) ln -sf $(srctree) $(KERNELPATH)
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion > $(objtree)/.scmversion
|
||||
$(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
|
||||
$(PREV) rm $(KERNELPATH)
|
||||
|
||||
rm -f $(objtree)/.scmversion
|
||||
set -e; \
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
|
||||
set -e; \
|
||||
|
@@ -86,9 +86,17 @@ echo "%endif"
|
||||
echo 'cp System.map $RPM_BUILD_ROOT'"/boot/System.map-$KERNELRELEASE"
|
||||
|
||||
echo 'cp .config $RPM_BUILD_ROOT'"/boot/config-$KERNELRELEASE"
|
||||
|
||||
echo "%ifnarch ppc64"
|
||||
echo 'cp vmlinux vmlinux.orig'
|
||||
echo 'bzip2 -9 vmlinux'
|
||||
echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2"
|
||||
echo 'mv vmlinux.orig vmlinux'
|
||||
echo "%endif"
|
||||
|
||||
echo ""
|
||||
echo "%clean"
|
||||
echo '#echo -rf $RPM_BUILD_ROOT'
|
||||
echo 'rm -rf $RPM_BUILD_ROOT'
|
||||
echo ""
|
||||
echo "%files"
|
||||
echo '%defattr (-, root, root)'
|
||||
|
@@ -58,14 +58,7 @@ fi
|
||||
# Check for svn and a svn repo.
|
||||
if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then
|
||||
rev=`echo $rev | awk '{print $NF}'`
|
||||
changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l`
|
||||
|
||||
# Are there uncommitted changes?
|
||||
if [ $changes != 0 ]; then
|
||||
printf -- '-svn%s%s' "$rev" -dirty
|
||||
else
|
||||
printf -- '-svn%s' "$rev"
|
||||
fi
|
||||
printf -- '-svn%s' "$rev"
|
||||
|
||||
# All done with svn
|
||||
exit
|
||||
|
@@ -76,7 +76,10 @@ all_sources()
|
||||
|
||||
all_kconfigs()
|
||||
{
|
||||
find_sources $ALLSOURCE_ARCHS 'Kconfig*'
|
||||
for arch in $ALLSOURCE_ARCHS; do
|
||||
find_sources $arch 'Kconfig*'
|
||||
done
|
||||
find_other_sources 'Kconfig*'
|
||||
}
|
||||
|
||||
all_defconfigs()
|
||||
@@ -99,7 +102,8 @@ exuberant()
|
||||
-I ____cacheline_internodealigned_in_smp \
|
||||
-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
|
||||
--extra=+f --c-kinds=+px \
|
||||
--regex-asm='/^ENTRY\(([^)]*)\).*/\1/'
|
||||
--regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \
|
||||
--regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/'
|
||||
|
||||
all_kconfigs | xargs $1 -a \
|
||||
--langdef=kconfig --language-force=kconfig \
|
||||
@@ -117,7 +121,9 @@ exuberant()
|
||||
|
||||
emacs()
|
||||
{
|
||||
all_sources | xargs $1 -a
|
||||
all_sources | xargs $1 -a \
|
||||
--regex='/^ENTRY(\([^)]*\)).*/\1/' \
|
||||
--regex='/^SYSCALL_DEFINE[0-9]?(\([^,)]*\).*/sys_\1/'
|
||||
|
||||
all_kconfigs | xargs $1 -a \
|
||||
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
|
||||
|
@@ -206,7 +206,7 @@ static void done(void);
|
||||
static void error(const char *);
|
||||
static int findsym(const char *);
|
||||
static void flushline(bool);
|
||||
static Linetype getline(void);
|
||||
static Linetype get_line(void);
|
||||
static Linetype ifeval(const char **);
|
||||
static void ignoreoff(void);
|
||||
static void ignoreon(void);
|
||||
@@ -512,7 +512,7 @@ process(void)
|
||||
|
||||
for (;;) {
|
||||
linenum++;
|
||||
lineval = getline();
|
||||
lineval = get_line();
|
||||
trans_table[ifstate[depth]][lineval]();
|
||||
debug("process %s -> %s depth %d",
|
||||
linetype_name[lineval],
|
||||
@@ -526,7 +526,7 @@ process(void)
|
||||
* help from skipcomment().
|
||||
*/
|
||||
static Linetype
|
||||
getline(void)
|
||||
get_line(void)
|
||||
{
|
||||
const char *cp;
|
||||
int cursym;
|
||||
|
Reference in New Issue
Block a user