Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • L linux
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Kirill Smelkov
  • linux
  • Repository
  • linux
  • kernel
  • module.c
Find file BlameHistoryPermalink
  • Fangrui Song's avatar
    module: Ignore _GLOBAL_OFFSET_TABLE_ when warning for undefined symbols · ebfac7b7
    Fangrui Song authored Jan 15, 2021
    clang-12 -fno-pic (since
    https://github.com/llvm/llvm-project/commit/a084c0388e2a59b9556f2de0083333232da3f1d6)
    can emit `call __stack_chk_fail@PLT` instead of `call __stack_chk_fail`
    on x86.  The two forms should have identical behaviors on x86-64 but the
    former causes GNU as<2.37 to produce an unreferenced undefined symbol
    _GLOBAL_OFFSET_TABLE_.
    
    (On x86-32, there is an R_386_PC32 vs R_386_PLT32 difference but the
    linker behavior is identical as far as Linux kernel is concerned.)
    
    Simply ignore _GLOBAL_OFFSET_TABLE_ for now, like what
    scripts/mod/modpost.c:ignore_undef_symbol does. This also fixes the
    problem for gcc/clang -fpie and -fpic, which may emit `call foo@PLT` for
    external function calls on x86.
    
    Note: ld -z defs and dynamic loaders do not error for unreferenced
    undefined symbols so the module loader is reading too much.  If we ever
    need to ignore more symbols, the code should be refactored to ignore
    unreferenced symbols.
    
    Cc: <stable@vger.kernel.org>
    Link: https://github.com/ClangBuiltLinux/linux/issues/1250
    Link: https://sourceware.org/bugzilla/show_bug.cgi?id=27178
    
    
    Reported-by: default avatarMarco Elver <elver@google.com>
    Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Tested-by: default avatarMarco Elver <elver@google.com>
    Signed-off-by: default avatarFangrui Song <maskray@google.com>
    Signed-off-by: default avatarJessica Yu <jeyu@kernel.org>
    ebfac7b7
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7