Index: lib/sanitizer_common/sanitizer_linux.cc =================================================================== --- lib/sanitizer_common/sanitizer_linux.cc +++ lib/sanitizer_common/sanitizer_linux.cc @@ -801,7 +801,12 @@ #if !SANITIZER_ANDROID // Call cb for each region mapped by map. void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)) { -#if !SANITIZER_FREEBSD + CHECK_NE(map, nullptr); +#if SANITIZER_FREEBSD + // FreeBSD's dlopen() returns a pointer to an Obj_Entry structure that + // incroporates the map structure. + map = (link_map*)((char*)map + 544); +#else typedef ElfW(Phdr) Elf_Phdr; typedef ElfW(Ehdr) Elf_Ehdr; #endif // !SANITIZER_FREEBSD