al->sym = map__find_symbol(al->map, al->addr);
        }
 
-       if (symbol_conf.sym_list &&
-               (!al->sym || !strlist__has_entry(symbol_conf.sym_list,
-                                               al->sym->name))) {
-               al->filtered |= (1 << HIST_FILTER__SYMBOL);
+       if (symbol_conf.sym_list) {
+               int ret = 0;
+               char al_addr_str[32];
+               size_t sz = sizeof(al_addr_str);
+
+               if (al->sym) {
+                       ret = strlist__has_entry(symbol_conf.sym_list,
+                                               al->sym->name);
+               }
+               if (!(ret && al->sym)) {
+                       snprintf(al_addr_str, sz, "0x%"PRIx64,
+                               al->map->unmap_ip(al->map, al->sym->start));
+                       ret = strlist__has_entry(symbol_conf.sym_list,
+                                               al_addr_str);
+               }
+               if (!ret)
+                       al->filtered |= (1 << HIST_FILTER__SYMBOL);
        }
 
        return 0;