diff options
Diffstat (limited to 'tools/perf/util/symbol-elf.c')
| -rw-r--r-- | tools/perf/util/symbol-elf.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c index db0cc92cf2e..54efcb5659a 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c @@ -1,6 +1,3 @@ -#include <libelf.h> -#include <gelf.h> -#include <elf.h>  #include <fcntl.h>  #include <stdio.h>  #include <errno.h> @@ -718,6 +715,17 @@ int dso__load_sym(struct dso *dso, struct map *map,  					sym.st_value);  			used_opd = true;  		} +		/* +		 * When loading symbols in a data mapping, ABS symbols (which +		 * has a value of SHN_ABS in its st_shndx) failed at +		 * elf_getscn().  And it marks the loading as a failure so +		 * already loaded symbols cannot be fixed up. +		 * +		 * I'm not sure what should be done. Just ignore them for now. +		 * - Namhyung Kim +		 */ +		if (sym.st_shndx == SHN_ABS) +			continue;  		sec = elf_getscn(runtime_ss->elf, sym.st_shndx);  		if (!sec)  |