modprobe-small: remove redundant aliases from modules.dep.bb
function old new delta parse_module 309 395 +86 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
5fd3ddfb24
commit
6116cb23cc
@ -212,6 +212,7 @@ static void parse_module(module_info *info, const char *pathname)
|
|||||||
reset_stringbuf();
|
reset_stringbuf();
|
||||||
pos = 0;
|
pos = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
unsigned start = stringbuf_idx;
|
||||||
ptr = find_keyword(module_image + pos, len - pos, "alias=");
|
ptr = find_keyword(module_image + pos, len - pos, "alias=");
|
||||||
if (!ptr) {
|
if (!ptr) {
|
||||||
ptr = find_keyword(module_image + pos, len - pos, "__ksymtab_");
|
ptr = find_keyword(module_image + pos, len - pos, "__ksymtab_");
|
||||||
@ -228,6 +229,31 @@ static void parse_module(module_info *info, const char *pathname)
|
|||||||
}
|
}
|
||||||
append(ptr);
|
append(ptr);
|
||||||
appendc(' ');
|
appendc(' ');
|
||||||
|
/*
|
||||||
|
* Don't add redundant aliases, such as:
|
||||||
|
* libcrc32c.ko symbol:crc32c symbol:crc32c
|
||||||
|
*/
|
||||||
|
if (start) { /* "if we aren't the first alias" */
|
||||||
|
char *found, *last;
|
||||||
|
stringbuf[stringbuf_idx] = '\0';
|
||||||
|
last = stringbuf + start;
|
||||||
|
/*
|
||||||
|
* String at last-1 is " symbol:crc32c "
|
||||||
|
* (with both leading and trailing spaces).
|
||||||
|
*/
|
||||||
|
if (strncmp(stringbuf, last, stringbuf_idx - start) == 0)
|
||||||
|
/* First alias matches us */
|
||||||
|
found = stringbuf;
|
||||||
|
else
|
||||||
|
/* Does any other alias match? */
|
||||||
|
found = strstr(stringbuf, last-1);
|
||||||
|
if (found < last-1) {
|
||||||
|
/* There is absolutely the same string before us */
|
||||||
|
dbg2_error_msg("redundant:'%s'", last);
|
||||||
|
stringbuf_idx = start;
|
||||||
|
goto skip;
|
||||||
|
}
|
||||||
|
}
|
||||||
skip:
|
skip:
|
||||||
pos = (ptr - module_image);
|
pos = (ptr - module_image);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user