• Andrea Righi's avatar
    rust: fix regexp in scripts/is_rust_module.sh · ccc45054
    Andrea Righi authored
    nm can use "R" or "r" to show read-only data sections, but
    scripts/is_rust_module.sh can only recognize "r", so with some versions
    of binutils it can fail to detect if a module is a Rust module or not.
    
    Right now we're using this script only to determine if we need to skip
    BTF generation (that is disabled globally if CONFIG_RUST is enabled),
    but it's still nice to fix this script to do the proper job.
    
    Moreover, with this patch applied I can also relax the constraint of
    "RUST depends on !DEBUG_INFO_BTF" and build a kernel with Rust and BTF
    enabled at the same time (of course BTF generation is still skipped for
    Rust modules).
    
    [ Miguel: The actual reason is likely to be a change on the Rust
      compiler between 1.61.0 and 1.62.0:
    
        echo '#[used] static S: () = ();' |
            rustup run 1.61.0 rustc --emit=obj --crate-type=lib - &&
            nm rust_out.o
    
        echo '#[used] static S: () = ();' |
            rustup run 1.62.0 rustc --emit=obj --crate-type=lib - &&
            nm rust_out.o
    
      Gives:
    
        0000000000000000 r _ZN8rust_out1S17h48027ce0da975467E
        0000000000000000 R _ZN8rust_out1S17h58e1f3d9c0e97cefE
    
      See https://godbolt.org/z/KE6jneoo4. ]
    Signed-off-by: default avatarAndrea Righi <andrea.righi@canonical.com>
    Reviewed-by: default avatarVincenzo Palazzo <vincenzopalazzodev@gmail.com>
    Reviewed-by: default avatarEric Curtin <ecurtin@redhat.com>
    Reviewed-by: default avatarMartin Rodriguez Reboredo <yakoyoku@gmail.com>
    Signed-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
    ccc45054
is_rust_module.sh 568 Bytes