def u(data, bits=None, endian=None, target=None):
    """
    Unpack a signed pointer for a given target.

    Args:
        data(bytes): The data to unpack.
        bits(:class:`pwnypack.target.Target.Bits`): Override the default
            word size. If ``None`` it will look at the word size of
            ``target``.
        endian(:class:`~pwnypack.target.Target.Endian`): Override the default
            byte order. If ``None``, it will look at the byte order of
            the ``target`` argument.
        target(:class:`~pwnypack.target.Target`): Override the default byte
            order. If ``None``, it will look at the byte order of
            the global :data:`~pwnypack.target.target`.

    Returns:
        int: The pointer value.
    """

    return globals()['u%d' % _get_bits(bits, target)](data, endian=endian, target=target)