|
@@ -1314,6 +1314,16 @@ static void ip__resolve_data(struct machine *machine, struct thread *thread,
|
|
|
|
|
|
thread__find_addr_location(thread, machine, m, MAP__VARIABLE, addr,
|
|
|
&al);
|
|
|
+ if (al.map == NULL) {
|
|
|
+ /*
|
|
|
+ * some shared data regions have execute bit set which puts
|
|
|
+ * their mapping in the MAP__FUNCTION type array.
|
|
|
+ * Check there as a fallback option before dropping the sample.
|
|
|
+ */
|
|
|
+ thread__find_addr_location(thread, machine, m, MAP__FUNCTION, addr,
|
|
|
+ &al);
|
|
|
+ }
|
|
|
+
|
|
|
ams->addr = addr;
|
|
|
ams->al_addr = al.addr;
|
|
|
ams->sym = al.sym;
|