• Masahiro Yamada's avatar
    modpost: detect section mismatch for R_ARM_{MOVW_ABS_NC,MOVT_ABS} · 12ca2c67
    Masahiro Yamada authored
    For ARM defconfig (i.e. multi_v7_defconfig), modpost fails to detect
    some types of section mismatches.
    
      [test code]
    
        #include <linux/init.h>
    
        int __initdata foo;
        int get_foo(void) { return foo; }
    
    It is apparently a bad reference, but modpost does not report anything.
    
    The test code above produces the following relocations.
    
      Relocation section '.rel.text' at offset 0x200 contains 2 entries:
       Offset     Info    Type            Sym.Value  Sym. Name
      00000000  0000062b R_ARM_MOVW_ABS_NC 00000000   .LANCHOR0
      00000004  0000062c R_ARM_MOVT_ABS    00000000   .LANCHOR0
    
    Currently, R_ARM_MOVW_ABS_NC and R_ARM_MOVT_ABS are just skipped.
    
    Add code to handle them. I checked arch/arm/kernel/module.c to learn
    how the offset is encoded in the instruction.
    
    The referenced symbol in relocation might be a local anchor.
    If is_valid_name() returns false, let's search for a better symbol name.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    12ca2c67
modpost.c 56 KB