'Find an entry in the DYNAMIC array.
Arguments:
tag(int): Single tag to find
Returns:
Pointer to the data described by the specified entry.'

def _find_dt(self, tag):

    leak = self.leak
    base = self.libbase
    dynamic = self.dynamic
    name = next((k for (k, v) in ENUM_D_TAG.items() if (v == tag)))
    Dyn = {32: elf.Elf32_Dyn, 64: elf.Elf64_Dyn}[self.elfclass]
    while (not leak.field_compare(dynamic, Dyn.d_tag, constants.DT_NULL)):
        if leak.field_compare(dynamic, Dyn.d_tag, tag):
            break
        dynamic += sizeof(Dyn)
    else:
        self.failure(('Could    not    find    tag    %s' % name))
        return None
    self.status(('Found    %s    at    %#x' % (name, dynamic)))
    ptr = leak.field(dynamic, Dyn.d_ptr)
    ptr = self._make_absolute_ptr(ptr)
    return ptr
