• Dave Martin's avatar
    regset: Add support for dynamically sized regsets · 27e64b4b
    Dave Martin authored
    Currently the regset API doesn't allow for the possibility that
    regsets (or at least, the amount of meaningful data in a regset)
    may change in size.
    In particular, this results in useless padding being added to
    coredumps if a regset's current size is smaller than its
    theoretical maximum size.
    This patch adds a get_size() function to struct user_regset.
    Individual regset implementations can implement this function to
    return the current size of the regset data.  A regset_size()
    function is added to provide callers with an abstract interface for
    determining the size of a regset without needing to know whether
    the regset is dynamically sized or not.
    The only affected user of this interface is the ELF coredump code:
    This patch ports ELF coredump to dump regsets with their actual
    size in the coredump.  This has no effect except for new regsets
    that are dynamically sized and provide a get_size() implementation.
    Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
    Cc: H. J. Lu <hjl.tools@gmail.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
binfmt_elf.c 62.8 KB