30 Dec, 2017

1 commit

  • commit 14c47b54b0d9389e3ca0718e805cdd90c5a4303a upstream.

    The new ORC unwinder breaks the build of a 64-bit kernel on a 32-bit
    host. Building the kernel on a i386 or x32 host fails with:

    orc_dump.c: In function 'orc_dump':
    orc_dump.c:105:26: error: passing argument 2 of 'elf_getshdrnum' from incompatible pointer type [-Werror=incompatible-pointer-types]
    if (elf_getshdrnum(elf, &nr_sections)) {
    ^
    In file included from /usr/local/include/gelf.h:32:0,
    from elf.h:22,
    from warn.h:26,
    from orc_dump.c:20:
    /usr/local/include/libelf.h:304:12: note: expected 'size_t * {aka unsigned int *}' but argument is of type 'long unsigned int *'
    extern int elf_getshdrnum (Elf *__elf, size_t *__dst);
    ^~~~~~~~~~~~~~
    orc_dump.c:190:17: error: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'Elf64_Sxword {aka long long int}' [-Werror=format=]
    printf("%s+%lx:", name, rela.r_addend);
    ~~^ ~~~~~~~~~~~~~
    %llx

    Fix the build failure.

    Another problem is that if the user specifies HOSTCC or HOSTLD
    variables, they are ignored in the objtool makefile. Change the
    Makefile to respect these variables.

    Signed-off-by: Mikulas Patocka
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Sven Joachim
    Cc: Thomas Gleixner
    Fixes: 627fce14809b ("objtool: Add ORC unwind table generation")
    Link: http://lkml.kernel.org/r/19f0e64d8e07e30a7b307cd010eb780c404fe08d.1512252895.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Mikulas Patocka
     

18 Jul, 2017

1 commit

  • Now that objtool knows the states of all registers on the stack for each
    instruction, it's straightforward to generate debuginfo for an unwinder
    to use.

    Instead of generating DWARF, generate a new format called ORC, which is
    more suitable for an in-kernel unwinder. See
    Documentation/x86/orc-unwinder.txt for a more detailed description of
    this new debuginfo format and why it's preferable to DWARF.

    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Jiri Slaby
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: live-patching@vger.kernel.org
    Link: http://lkml.kernel.org/r/c9b9f01ba6c5ed2bdc9bb0957b78167fdbf9632e.1499786555.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf