Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kbuild misc updates from Michal Marek: "This is the non-critical part of kbuild for v3.16-rc1: - make deb-pkg can do s390x and arm64 - new patterns in scripts/tags.sh - scripts/tags.sh skips userspace tools' sources (which sometimes have copies of kernel structures) and symlinks - improvements to the objdiff tool - two new coccinelle patches - other minor fixes" * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: scripts: objdiff: support directories for the augument of record command scripts: objdiff: fix a comment scripts: objdiff: change the extension of disassembly from .o to .dis scripts: objdiff: improve path flexibility for record command scripts: objdiff: remove unnecessary code scripts: objdiff: direct error messages to stderr scripts: objdiff: get the path to .tmp_objdiff more simply deb-pkg: Add automatic support for s390x architecture coccicheck: Add unneeded return variable test kbuild: Fix a typo in documentation kbuild: trivial - use tabs for code indent where possible kbuild: trivial - remove trailing empty lines coccinelle: Check for missing NULL terminators in of_device_id tables scripts/tags.sh: ignore symlink'ed source files scripts/tags.sh: add regular expression replacement pattern for memcg builddeb: add arm64 in the supported architectures builddeb: use $OBJCOPY variable instead of objcopy scripts/tags.sh: ignore code of user space tools scripts/tags.sh: add pattern for DEFINE_HASHTABLE .gitignore: ignore Module.symvers in all directories
This commit is contained in:
commit
c1fdb2d338
50 changed files with 289 additions and 158 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -22,7 +22,6 @@
|
|||
*.lst
|
||||
*.symtypes
|
||||
*.order
|
||||
modules.builtin
|
||||
*.elf
|
||||
*.bin
|
||||
*.gz
|
||||
|
@ -33,6 +32,8 @@ modules.builtin
|
|||
*.lzo
|
||||
*.patch
|
||||
*.gcno
|
||||
modules.builtin
|
||||
Module.symvers
|
||||
|
||||
#
|
||||
# Top-level generic files
|
||||
|
@ -44,7 +45,6 @@ modules.builtin
|
|||
/vmlinuz
|
||||
/System.map
|
||||
/Module.markers
|
||||
/Module.symvers
|
||||
|
||||
#
|
||||
# Debian directory (make deb-pkg)
|
||||
|
|
|
@ -470,7 +470,7 @@ build.
|
|||
|
||||
Sometimes, an external module uses exported symbols from
|
||||
another external module. kbuild needs to have full knowledge of
|
||||
all symbols to avoid spliitting out warnings about undefined
|
||||
all symbols to avoid spitting out warnings about undefined
|
||||
symbols. Three solutions exist for this situation.
|
||||
|
||||
NOTE: The method with a top-level kbuild file is recommended
|
||||
|
|
|
@ -21,4 +21,3 @@ all: $(patsubst %, $(obj)/%, $(generic-y))
|
|||
|
||||
$(obj)/%.h:
|
||||
$(call cmd,wrap)
|
||||
|
||||
|
|
|
@ -167,4 +167,3 @@ $(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
|
|||
|
||||
targets += $(host-csingle) $(host-cmulti) $(host-cobjs)\
|
||||
$(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs)
|
||||
|
||||
|
|
|
@ -409,10 +409,10 @@ static void print_deps(void)
|
|||
exit(2);
|
||||
}
|
||||
if (fstat(fd, &st) < 0) {
|
||||
fprintf(stderr, "fixdep: error fstat'ing depfile: ");
|
||||
perror(depfile);
|
||||
exit(2);
|
||||
}
|
||||
fprintf(stderr, "fixdep: error fstat'ing depfile: ");
|
||||
perror(depfile);
|
||||
exit(2);
|
||||
}
|
||||
if (st.st_size == 0) {
|
||||
fprintf(stderr,"fixdep: %s is empty\n",depfile);
|
||||
close(fd);
|
||||
|
|
|
@ -173,4 +173,3 @@ while (my $line = <STDIN>) {
|
|||
|
||||
# Sort output by size (last field)
|
||||
print sort { ($b =~ /:\t*(\d+)$/)[0] <=> ($a =~ /:\t*(\d+)$/)[0] } @stack;
|
||||
|
||||
|
|
62
scripts/coccinelle/misc/of_table.cocci
Normal file
62
scripts/coccinelle/misc/of_table.cocci
Normal file
|
@ -0,0 +1,62 @@
|
|||
/// Make sure of_device_id tables are NULL terminated
|
||||
//
|
||||
// Keywords: of_table
|
||||
// Confidence: Medium
|
||||
// Options: --include-headers
|
||||
|
||||
virtual patch
|
||||
virtual context
|
||||
virtual org
|
||||
virtual report
|
||||
|
||||
@depends on context@
|
||||
identifier var, arr;
|
||||
expression E;
|
||||
@@
|
||||
struct of_device_id arr[] = {
|
||||
...,
|
||||
{
|
||||
.var = E,
|
||||
* }
|
||||
};
|
||||
|
||||
@depends on patch@
|
||||
identifier var, arr;
|
||||
expression E;
|
||||
@@
|
||||
struct of_device_id arr[] = {
|
||||
...,
|
||||
{
|
||||
.var = E,
|
||||
- }
|
||||
+ },
|
||||
+ { }
|
||||
};
|
||||
|
||||
@r depends on org || report@
|
||||
position p1;
|
||||
identifier var, arr;
|
||||
expression E;
|
||||
@@
|
||||
struct of_device_id arr[] = {
|
||||
...,
|
||||
{
|
||||
.var = E,
|
||||
}
|
||||
@p1
|
||||
};
|
||||
|
||||
@script:python depends on org@
|
||||
p1 << r.p1;
|
||||
arr << r.arr;
|
||||
@@
|
||||
|
||||
cocci.print_main(arr,p1)
|
||||
|
||||
@script:python depends on report@
|
||||
p1 << r.p1;
|
||||
arr << r.arr;
|
||||
@@
|
||||
|
||||
msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
|
||||
coccilib.report.print_report(p1[0],msg)
|
66
scripts/coccinelle/misc/returnvar.cocci
Normal file
66
scripts/coccinelle/misc/returnvar.cocci
Normal file
|
@ -0,0 +1,66 @@
|
|||
///
|
||||
/// Removes unneeded variable used to store return value.
|
||||
///
|
||||
// Confidence: Moderate
|
||||
// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6. GPLv2.
|
||||
// URL: http://coccinelle.lip6.fr/
|
||||
// Comments: Comments on code can be deleted if near code that is removed.
|
||||
// "when strict" can be removed to get more hits, but adds false
|
||||
// positives
|
||||
// Options: --no-includes --include-headers
|
||||
|
||||
virtual patch
|
||||
virtual report
|
||||
virtual context
|
||||
virtual org
|
||||
|
||||
@depends on patch@
|
||||
type T;
|
||||
constant C;
|
||||
identifier ret;
|
||||
@@
|
||||
- T ret = C;
|
||||
... when != ret
|
||||
when strict
|
||||
return
|
||||
- ret
|
||||
+ C
|
||||
;
|
||||
|
||||
@depends on context@
|
||||
type T;
|
||||
constant C;
|
||||
identifier ret;
|
||||
@@
|
||||
* T ret = C;
|
||||
... when != ret
|
||||
when strict
|
||||
* return ret;
|
||||
|
||||
@r1 depends on report || org@
|
||||
type T;
|
||||
constant C;
|
||||
identifier ret;
|
||||
position p1, p2;
|
||||
@@
|
||||
T ret@p1 = C;
|
||||
... when != ret
|
||||
when strict
|
||||
return ret@p2;
|
||||
|
||||
@script:python depends on report@
|
||||
p1 << r1.p1;
|
||||
p2 << r1.p2;
|
||||
C << r1.C;
|
||||
ret << r1.ret;
|
||||
@@
|
||||
coccilib.report.print_report(p1[0], "Unneeded variable: \"" + ret + "\". Return \"" + C + "\" on line " + p2[0].line)
|
||||
|
||||
@script:python depends on org@
|
||||
p1 << r1.p1;
|
||||
p2 << r1.p2;
|
||||
C << r1.C;
|
||||
ret << r1.ret;
|
||||
@@
|
||||
cocci.print_main("unneeded \"" + ret + "\" variable", p1)
|
||||
cocci.print_sec("return " + C + " here", p2)
|
|
@ -223,4 +223,3 @@ while [ "$1" != "" ] ; do
|
|||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ int symfilecnt = 0;
|
|||
static void add_new_symbol(struct symfile *sym, char * symname)
|
||||
{
|
||||
sym->symbollist =
|
||||
realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *));
|
||||
realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *));
|
||||
sym->symbollist[sym->symbolcnt++].name = strdup(symname);
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,7 @@ static void find_export_symbols(char * filename)
|
|||
char *p;
|
||||
char *e;
|
||||
if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != NULL) ||
|
||||
((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
|
||||
((p = strstr(line, "EXPORT_SYMBOL")) != NULL)) {
|
||||
/* Skip EXPORT_SYMBOL{_GPL} */
|
||||
while (isalnum(*p) || *p == '_')
|
||||
p++;
|
||||
|
@ -291,28 +291,28 @@ static void extfunc(char * filename) { docfunctions(filename, FUNCTION); }
|
|||
static void singfunc(char * filename, char * line)
|
||||
{
|
||||
char *vec[200]; /* Enough for specific functions */
|
||||
int i, idx = 0;
|
||||
int startofsym = 1;
|
||||
int i, idx = 0;
|
||||
int startofsym = 1;
|
||||
vec[idx++] = KERNELDOC;
|
||||
vec[idx++] = DOCBOOK;
|
||||
vec[idx++] = SHOWNOTFOUND;
|
||||
|
||||
/* Split line up in individual parameters preceded by FUNCTION */
|
||||
for (i=0; line[i]; i++) {
|
||||
if (isspace(line[i])) {
|
||||
line[i] = '\0';
|
||||
startofsym = 1;
|
||||
continue;
|
||||
}
|
||||
if (startofsym) {
|
||||
startofsym = 0;
|
||||
vec[idx++] = FUNCTION;
|
||||
vec[idx++] = &line[i];
|
||||
}
|
||||
}
|
||||
/* Split line up in individual parameters preceded by FUNCTION */
|
||||
for (i=0; line[i]; i++) {
|
||||
if (isspace(line[i])) {
|
||||
line[i] = '\0';
|
||||
startofsym = 1;
|
||||
continue;
|
||||
}
|
||||
if (startofsym) {
|
||||
startofsym = 0;
|
||||
vec[idx++] = FUNCTION;
|
||||
vec[idx++] = &line[i];
|
||||
}
|
||||
}
|
||||
for (i = 0; i < idx; i++) {
|
||||
if (strcmp(vec[i], FUNCTION))
|
||||
continue;
|
||||
if (strcmp(vec[i], FUNCTION))
|
||||
continue;
|
||||
consume_symbol(vec[i + 1]);
|
||||
}
|
||||
vec[idx++] = filename;
|
||||
|
@ -460,14 +460,14 @@ static void parse_file(FILE *infile)
|
|||
break;
|
||||
case 'D':
|
||||
while (*s && !isspace(*s)) s++;
|
||||
*s = '\0';
|
||||
symbolsonly(line+2);
|
||||
break;
|
||||
*s = '\0';
|
||||
symbolsonly(line+2);
|
||||
break;
|
||||
case 'F':
|
||||
/* filename */
|
||||
while (*s && !isspace(*s)) s++;
|
||||
*s++ = '\0';
|
||||
/* function names */
|
||||
/* function names */
|
||||
while (isspace(*s))
|
||||
s++;
|
||||
singlefunctions(line +2, s);
|
||||
|
@ -515,11 +515,11 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
/* Open file, exit on error */
|
||||
infile = fopen(argv[2], "r");
|
||||
if (infile == NULL) {
|
||||
fprintf(stderr, "docproc: ");
|
||||
perror(argv[2]);
|
||||
exit(2);
|
||||
}
|
||||
if (infile == NULL) {
|
||||
fprintf(stderr, "docproc: ");
|
||||
perror(argv[2]);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
if (strcmp("doc", argv[1]) == 0) {
|
||||
/* Need to do this in two passes.
|
||||
|
|
1
scripts/dtc/.gitignore
vendored
1
scripts/dtc/.gitignore
vendored
|
@ -2,4 +2,3 @@ dtc
|
|||
dtc-lexer.lex.c
|
||||
dtc-parser.tab.c
|
||||
dtc-parser.tab.h
|
||||
|
||||
|
|
|
@ -88,4 +88,3 @@ struct boot_info *dt_from_fs(const char *dirname)
|
|||
|
||||
return build_boot_info(NULL, tree, guess_boot_cpuid(tree));
|
||||
}
|
||||
|
||||
|
|
|
@ -81,4 +81,3 @@ int fdt_create_empty_tree(void *buf, int bufsize)
|
|||
|
||||
return fdt_open_into(buf, buf, bufsize);
|
||||
}
|
||||
|
||||
|
|
|
@ -281,4 +281,3 @@ void dt_to_source(FILE *f, struct boot_info *bi)
|
|||
|
||||
write_tree_source_node(f, bi->dt, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,5 +28,3 @@ for arch in ${archs}; do
|
|||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ static int read_symbol(FILE *in, struct sym_entry *s)
|
|||
}
|
||||
if (strlen(str) > KSYM_NAME_LEN) {
|
||||
fprintf(stderr, "Symbol %s too long for kallsyms (%zu vs %d).\n"
|
||||
"Please increase KSYM_NAME_LEN both in kernel and kallsyms.c\n",
|
||||
"Please increase KSYM_NAME_LEN both in kernel and kallsyms.c\n",
|
||||
str, strlen(str), KSYM_NAME_LEN);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -319,4 +319,3 @@ $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck
|
|||
$(obj)/gconf.glade.h: $(obj)/gconf.glade
|
||||
$(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \
|
||||
$(obj)/gconf.glade
|
||||
|
||||
|
|
|
@ -11,4 +11,3 @@ EOF
|
|||
if [ ! "$?" -eq "0" ]; then
|
||||
echo -DKBUILD_NO_NLS;
|
||||
fi
|
||||
|
||||
|
|
|
@ -696,7 +696,7 @@ int main(int ac, char **av)
|
|||
} else if (input_mode == savedefconfig) {
|
||||
if (conf_write_defconfig(defconfig_file)) {
|
||||
fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
|
||||
defconfig_file);
|
||||
defconfig_file);
|
||||
return 1;
|
||||
}
|
||||
} else if (input_mode != listnewconfig) {
|
||||
|
|
|
@ -1404,7 +1404,7 @@ static void display_tree(struct menu *menu)
|
|||
&& (tree == tree2))
|
||||
continue;
|
||||
/*
|
||||
if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
|
||||
if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
|
||||
|| (view_mode == FULL_VIEW)
|
||||
|| (view_mode == SPLIT_VIEW))*/
|
||||
|
||||
|
|
|
@ -168,13 +168,13 @@ int dialog_checklist(const char *title, const char *prompt, int height,
|
|||
|
||||
/* create new window for the list */
|
||||
list = subwin(dialog, list_height, list_width, y + box_y + 1,
|
||||
x + box_x + 1);
|
||||
x + box_x + 1);
|
||||
|
||||
keypad(list, TRUE);
|
||||
|
||||
/* draw a box around the list items */
|
||||
draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
|
||||
dlg.menubox_border.atr, dlg.menubox.atr);
|
||||
dlg.menubox_border.atr, dlg.menubox.atr);
|
||||
|
||||
/* Find length of longest item in order to center checklist */
|
||||
check_x = 0;
|
||||
|
|
|
@ -42,7 +42,7 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
|
|||
* Display a dialog box for inputing a string
|
||||
*/
|
||||
int dialog_inputbox(const char *title, const char *prompt, int height, int width,
|
||||
const char *init)
|
||||
const char *init)
|
||||
{
|
||||
int i, x, y, box_y, box_x, box_width;
|
||||
int input_x = 0, key = 0, button = -1;
|
||||
|
|
|
@ -64,7 +64,7 @@ static int menu_width, item_x;
|
|||
* Print menu item
|
||||
*/
|
||||
static void do_print_item(WINDOW * win, const char *item, int line_y,
|
||||
int selected, int hotkey)
|
||||
int selected, int hotkey)
|
||||
{
|
||||
int j;
|
||||
char *menu_item = malloc(menu_width + 1);
|
||||
|
@ -182,7 +182,7 @@ static void do_scroll(WINDOW *win, int *scroll, int n)
|
|||
* Display a menu for choosing among a number of options
|
||||
*/
|
||||
int dialog_menu(const char *title, const char *prompt,
|
||||
const void *selected, int *s_scroll)
|
||||
const void *selected, int *s_scroll)
|
||||
{
|
||||
int i, j, x, y, box_x, box_y;
|
||||
int height, width, menu_height;
|
||||
|
|
|
@ -623,7 +623,7 @@ void item_make(const char *fmt, ...)
|
|||
void item_add_str(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
size_t avail;
|
||||
size_t avail;
|
||||
|
||||
avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str);
|
||||
|
||||
|
|
|
@ -299,7 +299,7 @@ static void set_config_filename(const char *config_filename)
|
|||
int size;
|
||||
|
||||
size = snprintf(menu_backtitle, sizeof(menu_backtitle),
|
||||
"%s - %s", config_filename, rootmenu.prompt->text);
|
||||
"%s - %s", config_filename, rootmenu.prompt->text);
|
||||
if (size >= sizeof(menu_backtitle))
|
||||
menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
|
||||
set_dialog_backtitle(menu_backtitle);
|
||||
|
@ -1034,4 +1034,3 @@ int main(int ac, char **av)
|
|||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -258,8 +258,8 @@ static void sym_check_prop(struct symbol *sym)
|
|||
"config symbol '%s' uses select, but is "
|
||||
"not boolean or tristate", sym->name);
|
||||
else if (sym2->type != S_UNKNOWN &&
|
||||
sym2->type != S_BOOLEAN &&
|
||||
sym2->type != S_TRISTATE)
|
||||
sym2->type != S_BOOLEAN &&
|
||||
sym2->type != S_TRISTATE)
|
||||
prop_warn(prop,
|
||||
"'%s' has wrong type. 'select' only "
|
||||
"accept arguments of boolean and "
|
||||
|
@ -268,7 +268,7 @@ static void sym_check_prop(struct symbol *sym)
|
|||
case P_RANGE:
|
||||
if (sym->type != S_INT && sym->type != S_HEX)
|
||||
prop_warn(prop, "range is only allowed "
|
||||
"for int or hex symbols");
|
||||
"for int or hex symbols");
|
||||
if (!menu_validate_number(sym, prop->expr->left.sym) ||
|
||||
!menu_validate_number(sym, prop->expr->right.sym))
|
||||
prop_warn(prop, "range is invalid");
|
||||
|
|
|
@ -1554,4 +1554,3 @@ int main(int ac, char **av)
|
|||
endwin();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -155,5 +155,3 @@ void *xcalloc(size_t nmemb, size_t size)
|
|||
fprintf(stderr, "Out of memory.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ static char *text;
|
|||
static int text_size, text_asize;
|
||||
|
||||
struct buffer {
|
||||
struct buffer *parent;
|
||||
YY_BUFFER_STATE state;
|
||||
struct buffer *parent;
|
||||
YY_BUFFER_STATE state;
|
||||
};
|
||||
|
||||
struct buffer *current_buf;
|
||||
|
|
|
@ -789,8 +789,8 @@ static char *text;
|
|||
static int text_size, text_asize;
|
||||
|
||||
struct buffer {
|
||||
struct buffer *parent;
|
||||
YY_BUFFER_STATE state;
|
||||
struct buffer *parent;
|
||||
YY_BUFFER_STATE state;
|
||||
};
|
||||
|
||||
struct buffer *current_buf;
|
||||
|
|
|
@ -2314,7 +2314,7 @@ void conf_parse(const char *name)
|
|||
for_all_symbols(i, sym) {
|
||||
if (sym_check_deps(sym))
|
||||
zconfnerrs++;
|
||||
}
|
||||
}
|
||||
if (zconfnerrs)
|
||||
exit(1);
|
||||
sym_set_change_count(1);
|
||||
|
|
|
@ -510,7 +510,7 @@ void conf_parse(const char *name)
|
|||
for_all_symbols(i, sym) {
|
||||
if (sym_check_deps(sym))
|
||||
zconfnerrs++;
|
||||
}
|
||||
}
|
||||
if (zconfnerrs)
|
||||
exit(1);
|
||||
sym_set_change_count(1);
|
||||
|
|
|
@ -367,4 +367,3 @@ OPTION:
|
|||
EOT
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -42,4 +42,3 @@
|
|||
# (At least sparc64 has __crc_ in the middle).
|
||||
|
||||
$NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2
|
||||
|
||||
|
|
1
scripts/mod/.gitignore
vendored
1
scripts/mod/.gitignore
vendored
|
@ -2,4 +2,3 @@ elfconfig.h
|
|||
mk_elfconfig
|
||||
modpost
|
||||
devicetable-offsets.h
|
||||
|
||||
|
|
|
@ -644,28 +644,26 @@ ADD_TO_DEVTABLE("pcmcia", pcmcia_device_id, do_pcmcia_entry);
|
|||
|
||||
static int do_of_entry (const char *filename, void *symval, char *alias)
|
||||
{
|
||||
int len;
|
||||
char *tmp;
|
||||
DEF_FIELD_ADDR(symval, of_device_id, name);
|
||||
DEF_FIELD_ADDR(symval, of_device_id, type);
|
||||
DEF_FIELD_ADDR(symval, of_device_id, compatible);
|
||||
int len;
|
||||
char *tmp;
|
||||
DEF_FIELD_ADDR(symval, of_device_id, name);
|
||||
DEF_FIELD_ADDR(symval, of_device_id, type);
|
||||
DEF_FIELD_ADDR(symval, of_device_id, compatible);
|
||||
|
||||
len = sprintf (alias, "of:N%sT%s",
|
||||
(*name)[0] ? *name : "*",
|
||||
(*type)[0] ? *type : "*");
|
||||
len = sprintf(alias, "of:N%sT%s", (*name)[0] ? *name : "*",
|
||||
(*type)[0] ? *type : "*");
|
||||
|
||||
if (compatible[0])
|
||||
sprintf (&alias[len], "%sC%s",
|
||||
(*type)[0] ? "*" : "",
|
||||
*compatible);
|
||||
if (compatible[0])
|
||||
sprintf(&alias[len], "%sC%s", (*type)[0] ? "*" : "",
|
||||
*compatible);
|
||||
|
||||
/* Replace all whitespace with underscores */
|
||||
for (tmp = alias; tmp && *tmp; tmp++)
|
||||
if (isspace (*tmp))
|
||||
*tmp = '_';
|
||||
/* Replace all whitespace with underscores */
|
||||
for (tmp = alias; tmp && *tmp; tmp++)
|
||||
if (isspace (*tmp))
|
||||
*tmp = '_';
|
||||
|
||||
add_wildcard(alias);
|
||||
return 1;
|
||||
add_wildcard(alias);
|
||||
return 1;
|
||||
}
|
||||
ADD_TO_DEVTABLE("of", of_device_id, do_of_entry);
|
||||
|
||||
|
|
|
@ -54,4 +54,3 @@ main(int argc, char **argv)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -862,7 +862,7 @@ static const char *section_white_list[] =
|
|||
* without "ax" / "aw".
|
||||
*/
|
||||
static void check_section(const char *modname, struct elf_info *elf,
|
||||
Elf_Shdr *sechdr)
|
||||
Elf_Shdr *sechdr)
|
||||
{
|
||||
const char *sec = sech_name(elf, sechdr);
|
||||
|
||||
|
@ -1296,12 +1296,12 @@ static void print_section_list(const char * const list[20])
|
|||
*/
|
||||
static void report_sec_mismatch(const char *modname,
|
||||
const struct sectioncheck *mismatch,
|
||||
const char *fromsec,
|
||||
unsigned long long fromaddr,
|
||||
const char *fromsym,
|
||||
int from_is_func,
|
||||
const char *tosec, const char *tosym,
|
||||
int to_is_func)
|
||||
const char *fromsec,
|
||||
unsigned long long fromaddr,
|
||||
const char *fromsym,
|
||||
int from_is_func,
|
||||
const char *tosec, const char *tosym,
|
||||
int to_is_func)
|
||||
{
|
||||
const char *from, *from_p;
|
||||
const char *to, *to_p;
|
||||
|
@ -1441,7 +1441,7 @@ static void report_sec_mismatch(const char *modname,
|
|||
}
|
||||
|
||||
static void check_section_mismatch(const char *modname, struct elf_info *elf,
|
||||
Elf_Rela *r, Elf_Sym *sym, const char *fromsec)
|
||||
Elf_Rela *r, Elf_Sym *sym, const char *fromsec)
|
||||
{
|
||||
const char *tosec;
|
||||
const struct sectioncheck *mismatch;
|
||||
|
@ -1528,7 +1528,7 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
|||
case R_ARM_ABS32:
|
||||
/* From ARM ABI: (S + A) | T */
|
||||
r->r_addend = (int)(long)
|
||||
(elf->symtab_start + ELF_R_SYM(r->r_info));
|
||||
(elf->symtab_start + ELF_R_SYM(r->r_info));
|
||||
break;
|
||||
case R_ARM_PC24:
|
||||
case R_ARM_CALL:
|
||||
|
@ -1538,8 +1538,8 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
|||
case R_ARM_THM_JUMP19:
|
||||
/* From ARM ABI: ((S + A) | T) - P */
|
||||
r->r_addend = (int)(long)(elf->hdr +
|
||||
sechdr->sh_offset +
|
||||
(r->r_offset - sechdr->sh_addr));
|
||||
sechdr->sh_offset +
|
||||
(r->r_offset - sechdr->sh_addr));
|
||||
break;
|
||||
default:
|
||||
return 1;
|
||||
|
@ -1571,7 +1571,7 @@ static int addend_mips_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
|||
}
|
||||
|
||||
static void section_rela(const char *modname, struct elf_info *elf,
|
||||
Elf_Shdr *sechdr)
|
||||
Elf_Shdr *sechdr)
|
||||
{
|
||||
Elf_Sym *sym;
|
||||
Elf_Rela *rela;
|
||||
|
@ -1615,7 +1615,7 @@ static void section_rela(const char *modname, struct elf_info *elf,
|
|||
}
|
||||
|
||||
static void section_rel(const char *modname, struct elf_info *elf,
|
||||
Elf_Shdr *sechdr)
|
||||
Elf_Shdr *sechdr)
|
||||
{
|
||||
Elf_Sym *sym;
|
||||
Elf_Rel *rel;
|
||||
|
@ -1685,7 +1685,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
|
|||
* be discarded and warns about it.
|
||||
**/
|
||||
static void check_sec_ref(struct module *mod, const char *modname,
|
||||
struct elf_info *elf)
|
||||
struct elf_info *elf)
|
||||
{
|
||||
int i;
|
||||
Elf_Shdr *sechdrs = elf->sechdrs;
|
||||
|
@ -1945,7 +1945,7 @@ static int add_versions(struct buffer *b, struct module *mod)
|
|||
s->name, mod->name);
|
||||
} else {
|
||||
merror("\"%s\" [%s.ko] undefined!\n",
|
||||
s->name, mod->name);
|
||||
s->name, mod->name);
|
||||
err = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -214,7 +214,7 @@ static void md4_final_ascii(struct md4_ctx *mctx, char *out, unsigned int len)
|
|||
mctx->block[14] = mctx->byte_count << 3;
|
||||
mctx->block[15] = mctx->byte_count >> 29;
|
||||
le32_to_cpu_array(mctx->block, (sizeof(mctx->block) -
|
||||
sizeof(uint64_t)) / sizeof(uint32_t));
|
||||
sizeof(uint64_t)) / sizeof(uint32_t));
|
||||
md4_transform(mctx->hash, mctx->block);
|
||||
cpu_to_le32_array(mctx->hash, sizeof(mctx->hash) / sizeof(uint32_t));
|
||||
|
||||
|
@ -367,7 +367,7 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md)
|
|||
break;
|
||||
/* Terminate line at first space, to get rid of final ' \' */
|
||||
while (*p) {
|
||||
if (isspace(*p)) {
|
||||
if (isspace(*p)) {
|
||||
*p = '\0';
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -25,25 +25,47 @@
|
|||
#
|
||||
# Note: 'make mrproper' will also remove .tmp_objdiff
|
||||
|
||||
GIT_DIR="`git rev-parse --git-dir`"
|
||||
SRCTREE=$(cd $(git rev-parse --show-toplevel 2>/dev/null); pwd)
|
||||
|
||||
if [ -d "$GIT_DIR" ]; then
|
||||
TMPD="${GIT_DIR%git}tmp_objdiff"
|
||||
|
||||
[ -d "$TMPD" ] || mkdir "$TMPD"
|
||||
else
|
||||
echo "ERROR: git directory not found."
|
||||
if [ -z "$SRCTREE" ]; then
|
||||
echo >&2 "ERROR: Not a git repository."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMPD=$SRCTREE/.tmp_objdiff
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 <command> <args>"
|
||||
echo " record <list of object files>"
|
||||
echo " diff <commitA> <commitB>"
|
||||
echo " clean all | <commit>"
|
||||
echo >&2 "Usage: $0 <command> <args>"
|
||||
echo >&2 " record <list of object files or directories>"
|
||||
echo >&2 " diff <commitA> <commitB>"
|
||||
echo >&2 " clean all | <commit>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
get_output_dir() {
|
||||
dir=${1%/*}
|
||||
|
||||
if [ "$dir" = "$1" ]; then
|
||||
dir=.
|
||||
fi
|
||||
|
||||
dir=$(cd $dir; pwd)
|
||||
|
||||
echo $TMPD/$CMT${dir#$SRCTREE}
|
||||
}
|
||||
|
||||
do_objdump() {
|
||||
dir=$(get_output_dir $1)
|
||||
base=${1##*/}
|
||||
dis=$dir/${base%.o}.dis
|
||||
|
||||
[ ! -d "$dir" ] && mkdir -p $dir
|
||||
|
||||
# remove addresses for a cleaner diff
|
||||
# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
|
||||
$OBJDUMP -D $1 | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis
|
||||
}
|
||||
|
||||
dorecord() {
|
||||
[ $# -eq 0 ] && usage
|
||||
|
||||
|
@ -52,20 +74,16 @@ dorecord() {
|
|||
CMT="`git rev-parse --short HEAD`"
|
||||
|
||||
OBJDUMP="${CROSS_COMPILE}objdump"
|
||||
OBJDIFFD="$TMPD/$CMT"
|
||||
|
||||
[ ! -d "$OBJDIFFD" ] && mkdir -p "$OBJDIFFD"
|
||||
|
||||
for f in $FILES; do
|
||||
dn="${f%/*}"
|
||||
bn="${f##*/}"
|
||||
|
||||
[ ! -d "$OBJDIFFD/$dn" ] && mkdir -p "$OBJDIFFD/$dn"
|
||||
|
||||
# remove addresses for a more clear diff
|
||||
# http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
|
||||
$OBJDUMP -D "$f" | sed "s/^[[:space:]]\+[0-9a-f]\+//" \
|
||||
>"$OBJDIFFD/$dn/$bn"
|
||||
for d in $FILES; do
|
||||
if [ -d "$d" ]; then
|
||||
for f in $(find $d -name '*.o')
|
||||
do
|
||||
do_objdump $f
|
||||
done
|
||||
else
|
||||
do_objdump $d
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -90,12 +108,12 @@ dodiff() {
|
|||
DSTD="$TMPD/$DST"
|
||||
|
||||
if [ ! -d "$SRCD" ]; then
|
||||
echo "ERROR: $SRCD doesn't exist"
|
||||
echo >&2 "ERROR: $SRCD doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$DSTD" ]; then
|
||||
echo "ERROR: $DSTD doesn't exist"
|
||||
echo >&2 "ERROR: $DSTD doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -114,7 +132,7 @@ doclean() {
|
|||
if [ -d "$TMPD/$CMT" ]; then
|
||||
rm -rf $TMPD/$CMT
|
||||
else
|
||||
echo "$CMT not found"
|
||||
echo >&2 "$CMT not found"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
@ -135,7 +153,7 @@ case "$1" in
|
|||
doclean $*
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognized command '$1'"
|
||||
echo >&2 "Unrecognized command '$1'"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -143,4 +143,3 @@ help: FORCE
|
|||
@echo ' perf-targz-src-pkg - Build $(perf-tar).tar.gz source tarball'
|
||||
@echo ' perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball'
|
||||
@echo ' perf-tarxz-src-pkg - Build $(perf-tar).tar.xz source tarball'
|
||||
|
||||
|
|
|
@ -35,13 +35,15 @@ create_package() {
|
|||
sparc*)
|
||||
debarch=sparc ;;
|
||||
s390*)
|
||||
debarch=s390 ;;
|
||||
debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
|
||||
ppc*)
|
||||
debarch=powerpc ;;
|
||||
parisc*)
|
||||
debarch=hppa ;;
|
||||
mips*)
|
||||
debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
|
||||
arm64)
|
||||
debarch=arm64 ;;
|
||||
arm*)
|
||||
debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
|
||||
*)
|
||||
|
@ -155,11 +157,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
|
|||
for module in $(find lib/modules/ -name *.ko); do
|
||||
mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
|
||||
# only keep debug symbols in the debug file
|
||||
objcopy --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
|
||||
$OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
|
||||
# strip original module from debug symbols
|
||||
objcopy --strip-debug $module
|
||||
$OBJCOPY --strip-debug $module
|
||||
# then add a link to those
|
||||
objcopy --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
|
||||
$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
|
||||
done
|
||||
)
|
||||
fi
|
||||
|
|
|
@ -136,4 +136,3 @@ esac
|
|||
echo "Tarball successfully created in ${tarball}${file_ext}"
|
||||
|
||||
exit 0
|
||||
|
||||
|
|
|
@ -512,4 +512,3 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -487,5 +487,3 @@ main(int argc, char *argv[])
|
|||
}
|
||||
return !!n_error;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,4 +19,3 @@ testit t3-l2-pi.tst
|
|||
testit t4-l2-pi-deboost.tst
|
||||
testit t5-l4-pi-boost-deboost.tst
|
||||
testit t5-l4-pi-boost-deboost-setsched.tst
|
||||
|
||||
|
|
|
@ -216,5 +216,3 @@ while 1:
|
|||
# Normal exit pass
|
||||
print "Pass"
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
|
|
|
@ -66,4 +66,3 @@ if [ "eq$dodev" != "eq" ]; then
|
|||
$SF file_contexts /dev
|
||||
mount --move /mnt /dev
|
||||
fi
|
||||
|
||||
|
|
|
@ -126,4 +126,3 @@ def main():
|
|||
print (convert_line(line, base_time),)
|
||||
|
||||
main()
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@ else
|
|||
tree=${srctree}/
|
||||
fi
|
||||
|
||||
# ignore userspace tools
|
||||
ignore="$ignore ( -path ${tree}tools ) -prune -o"
|
||||
|
||||
# Find all available archs
|
||||
find_all_archs()
|
||||
{
|
||||
|
@ -47,7 +50,8 @@ find_arch_sources()
|
|||
for i in $archincludedir; do
|
||||
prune="$prune -wholename $i -prune -o"
|
||||
done
|
||||
find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" -print;
|
||||
find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" \
|
||||
-not -type l -print;
|
||||
}
|
||||
|
||||
# find sources in arch/$1/include
|
||||
|
@ -57,14 +61,15 @@ find_arch_include_sources()
|
|||
-name include -type d -print);
|
||||
if [ -n "$include" ]; then
|
||||
archincludedir="$archincludedir $include"
|
||||
find $include $ignore -name "$2" -print;
|
||||
find $include $ignore -name "$2" -not -type l -print;
|
||||
fi
|
||||
}
|
||||
|
||||
# find sources in include/
|
||||
find_include_sources()
|
||||
{
|
||||
find ${tree}include $ignore -name config -prune -o -name "$1" -print;
|
||||
find ${tree}include $ignore -name config -prune -o -name "$1" \
|
||||
-not -type l -print;
|
||||
}
|
||||
|
||||
# find sources in rest of tree
|
||||
|
@ -73,7 +78,7 @@ find_other_sources()
|
|||
{
|
||||
find ${tree}* $ignore \
|
||||
\( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \
|
||||
-name "$1" -print;
|
||||
-name "$1" -not -type l -print;
|
||||
}
|
||||
|
||||
find_sources()
|
||||
|
@ -187,6 +192,10 @@ exuberant()
|
|||
--regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \
|
||||
--regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \
|
||||
--regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/' \
|
||||
--regex-c++='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/' \
|
||||
--regex-c++='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/' \
|
||||
--regex-c++='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/' \
|
||||
--regex-c++='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
|
||||
--regex-c='/PCI_OP_READ\((\w*).*[1-4]\)/pci_bus_read_config_\1/' \
|
||||
--regex-c='/PCI_OP_WRITE\((\w*).*[1-4]\)/pci_bus_write_config_\1/' \
|
||||
--regex-c='/DEFINE_(MUTEX|SEMAPHORE|SPINLOCK)\((\w*)/\2/v/' \
|
||||
|
@ -201,7 +210,8 @@ exuberant()
|
|||
--regex-c='/DECLARE_(TASKLET|WORK|DELAYED_WORK)\((\w*)/\2/v/' \
|
||||
--regex-c='/DEFINE_PCI_DEVICE_TABLE\((\w*)/\1/v/' \
|
||||
--regex-c='/(^\s)OFFSET\((\w*)/\2/v/' \
|
||||
--regex-c='/(^\s)DEFINE\((\w*)/\2/v/'
|
||||
--regex-c='/(^\s)DEFINE\((\w*)/\2/v/' \
|
||||
--regex-c='/DEFINE_HASHTABLE\((\w*)/\1/v/'
|
||||
|
||||
all_kconfigs | xargs $1 -a \
|
||||
--langdef=kconfig --language-force=kconfig \
|
||||
|
@ -244,9 +254,14 @@ emacs()
|
|||
--regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \
|
||||
--regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \
|
||||
--regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \
|
||||
--regex='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/' \
|
||||
--regex='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/' \
|
||||
--regex='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/' \
|
||||
--regex='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
|
||||
--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/' \
|
||||
--regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \
|
||||
--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'
|
||||
--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\
|
||||
--regex='/DEFINE_HASHTABLE\((\w*)/\1/v/'
|
||||
|
||||
all_kconfigs | xargs $1 -a \
|
||||
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
|
||||
|
@ -266,7 +281,7 @@ xtags()
|
|||
emacs $1
|
||||
else
|
||||
all_target_sources | xargs $1 -a
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Support um (which uses SUBARCH)
|
||||
|
|
Loading…
Reference in a new issue