lkml.org 
[lkml]   [2016]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC, PATCH, v3.9] default exported asm symbols to zero
    From
    Date
    On Fri, 2016-12-02 at 13:40 +0100, Arnd Bergmann wrote:
    > With binutils-2.16 and before, a weak missing symbol was kept during the
    > final link, and a missing CRC for an export would lead to that CRC
    > being treated as zero implicitly. With binutils-2.17, the crc
    > symbol gets dropped, and any module trying to use it will fail to
    > load.
    >
    > This sets the weak CRC symbol to zero explicitly, making it defined
    > in vmlinux, which in turn lets us load the modules referring to
    > that CRC.
    >
    > The comment above the __CRC_SYMBOL macro suggests that this was
    > always the intention, although it also seems that all symbols
    > defined in C have a correct CRC these days, and only the exports
    > that are now done in assembly need this.
    >
    > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    > ---
    > Not sure if this is the correct way of doing it, but this seems trivial
    > enough and lets me build the kernel with missing CRCs with any binutils
    > version.

    I tried this along with Adam's patch on x86_64, with Debian's binutils
    2.27.51.20161127. The result was that the kernel's __kcrctab held 0
    for several symbols, even though there was type information in asm-
    prototypes.h and Module.symvers and the modules had a non-zero CRC for
    those symbols. With just Adam's patch, the kernel and modules agreed.

    Ben.

    > diff --git a/include/asm-generic/export.h b/include/asm-generic/export.h
    > index 63554e9..59a3b2f 100644
    > --- a/include/asm-generic/export.h
    > +++ b/include/asm-generic/export.h
    > @@ -54,6 +54,7 @@ KSYM(__kstrtab_\name):
    >  KSYM(__kcrctab_\name):
    > >   __put KSYM(__crc_\name)
    > >   .weak KSYM(__crc_\name)
    > > + .set KSYM(__crc_\name), 0
    > >   .previous
    >  #endif
    >  #endif
    >
    --
    Ben Hutchings
    Absolutum obsoletum. (If it works, it's out of date.) - Stafford Beer
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2016-12-03 05:37    [W:4.306 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site