|
@@ -776,6 +776,7 @@ static const char *sech_name(struct elf_info *elf, Elf_Shdr *sechdr)
|
|
|
* "foo" will match an exact string equal to "foo"
|
|
|
* "*foo" will match a string that ends with "foo"
|
|
|
* "foo*" will match a string that begins with "foo"
|
|
|
+ * "*foo*" will match a string that contains "foo"
|
|
|
*/
|
|
|
static int match(const char *sym, const char * const pat[])
|
|
|
{
|
|
@@ -784,8 +785,17 @@ static int match(const char *sym, const char * const pat[])
|
|
|
p = *pat++;
|
|
|
const char *endp = p + strlen(p) - 1;
|
|
|
|
|
|
+ /* "*foo*" */
|
|
|
+ if (*p == '*' && *endp == '*') {
|
|
|
+ char *here, *bare = strndup(p + 1, strlen(p) - 2);
|
|
|
+
|
|
|
+ here = strstr(sym, bare);
|
|
|
+ free(bare);
|
|
|
+ if (here != NULL)
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
/* "*foo" */
|
|
|
- if (*p == '*') {
|
|
|
+ else if (*p == '*') {
|
|
|
if (strrcmp(sym, p + 1) == 0)
|
|
|
return 1;
|
|
|
}
|