Skip to content
  • Vineet Gupta's avatar
    ARC: Fix linking errors with CONFIG_MODULE + CONFIG_CC_OPTIMIZE_FOR_SIZE · 07fd7d4b
    Vineet Gupta authored
    
    
    At -Os, ARC gcc generates millicode thunk for function prologue/epilogue,
    which are served by libgcc.
    
    Modules historically are NOT linked with libgcc to avoid code bloat, reducing
    runtime relocation fixups etc. I even once tried doing that but got lost
    in makefile intricacies.
    
    This means modules at -Os don't get the millicode thunks, causing build
    failures below:
    
    | MODPOST 5 modules
    | ERROR: "__ld_r13_to_r18" [crypto/sha256_generic.ko] undefined!
    | ERROR: "__ld_r13_to_r18_ret" [crypto/sha256_generic.ko] undefined!
    | ERROR: "__st_r13_to_r18" [crypto/sha256_generic.ko] undefined!
    | ERROR: "__ld_r13_to_r17_ret" [crypto/sha256_generic.ko] undefined!
    | ERROR: "__st_r13_to_r17" [crypto/sha256_generic.ko] undefined!
    | ERROR: "__ld_r13_to_r16_ret" [crypto/sha256_generic.ko] undefined!
    | ERROR: "__st_r13_to_r16" [crypto/sha256_generic.ko] undefined!
    |....
    |....
    
    Workaround that by inhibiting millicode thunks for loadable modules
    
    Fixes STAR 9000641864:
    ("Linux built with optimizations for size emits errors for modules")
    
    Reported-by: default avatarAnton Kolesov <akolesov@synosys.com>
    Cc: Michal Marek <mmarek@suse.cz>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    07fd7d4b