Re: clang-12: i386: Unsupported relocation type: R_386_PLT32 (4)

From: Sedat Dilek
Date: Mon Feb 22 2021 - 11:44:50 EST


On Mon, Feb 22, 2021 at 5:30 PM Naresh Kamboju
<naresh.kamboju@xxxxxxxxxx> wrote:
>
> On Mon, 22 Feb 2021 at 21:44, Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote:
> >
> > On Mon, Feb 22, 2021 at 5:08 PM Naresh Kamboju
> > <naresh.kamboju@xxxxxxxxxx> wrote:
> > >
> > > While building i386 configs on stable-rc 5.10, stable-rc 5.11 branch
> > > and mainline
> > > with clang-12 these following warnings and errors were noticed.
> > >
> >
> > Hi Naresh,
> >
> > Please see commit bb73d07148c405c293e576b40af37737faf23a6a
> > ("x86/build: Treat R_386_PLT32 relocation as R_386_PC32").
> > Recently accepted into Linus Git tree.
>
> Can this be backported / cherry-picked into stable-rc 5.10 and stable-rc 5.11 ?
>

I have this one in my custom patchset (even though I only build x86-64).

Makes sense to have it in Linux v5.10.y LTS and Linux v5.11.y and
maybe other linux-stable releases.

The usual way to get a fix into linux-stable is to contact Greg and
Sasha - the Linux-stable maintainers and ask for inclusion.
See "STABLE BRANCH" in MAINTAINERS.
But we have also LLVM/Clang maintainers (see [2]).
Cannot say if you address LLVM/Clang maintainers first... and they
help or what is the recommended/ideal way.

- Sedat -

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/MAINTAINERS/?h=v5.11#n16828
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/MAINTAINERS/?h=v5.11#n4306

> >
> > [1] says:
> >
> > Further info for the more interested:
> >
> > https://github.com/ClangBuiltLinux/linux/issues/1210
> > https://sourceware.org/bugzilla/show_bug.cgi?id=27169
> > https://github.com/llvm/llvm-project/commit/a084c0388e2a59b9556f2de0083333232da3f1d6
> >
> > Hope that helps.
> >
> > - Sedat -
> >
> > [1] https://git.kernel.org/linus/bb73d07148c405c293e576b40af37737faf23a6a
> >
> > > make --silent --keep-going --jobs=8
> > > O=/home/tuxbuild/.cache/tuxmake/builds/1/tmp ARCH=i386
> > > CROSS_COMPILE=i686-linux-gnu- 'HOSTCC=sccache clang' 'CC=sccache
> > > clang'
> > >
> > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:2586:9: warning: shift
> > > count >= width of type [-Wshift-count-overflow]
> > >
> > > return hweight64(VDBOX_MASK(&i915->gt));
> > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > include/asm-generic/bitops/const_hweight.h:29:49: note: expanded from
> > > macro 'hweight64'
> > > #define hweight64(w) (__builtin_constant_p(w) ? __const_hweight64(w) :
> > > __arch_hweight64(w))
> > > ^~~~~~~~~~~~~~~~~~~~
> > > include/asm-generic/bitops/const_hweight.h:21:76: note: expanded from
> > > macro '__const_hweight64'
> > > #define __const_hweight64(w) (__const_hweight32(w) +
> > > __const_hweight32((w) >> 32))
> > > ^ ~~
> > > include/asm-generic/bitops/const_hweight.h:20:49: note: expanded from
> > > macro '__const_hweight32'
> > > #define __const_hweight32(w) (__const_hweight16(w) +
> > > __const_hweight16((w) >> 16))
> > > ^
> > > include/asm-generic/bitops/const_hweight.h:19:48: note: expanded from
> > > macro '__const_hweight16'
> > > #define __const_hweight16(w) (__const_hweight8(w) +
> > > __const_hweight8((w) >> 8 ))
> > > ^
> > > include/asm-generic/bitops/const_hweight.h:10:9: note: expanded from
> > > macro '__const_hweight8'
> > > ((!!((w) & (1ULL << 0))) + \
> > > ^
> > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:2586:9: warning: shift
> > > count >= width of type [-Wshift-count-overflow]
> > > return hweight64(VDBOX_MASK(&i915->gt));
> > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > <trim>
> > >
> > > 32 warnings generated.
> > > Unsupported relocation type: R_386_PLT32 (4)
> > > make[3]: *** [arch/x86/boot/compressed/Makefile:116:
> > > arch/x86/boot/compressed/vmlinux.relocs] Error 1
> > > make[3]: *** Deleting file 'arch/x86/boot/compressed/vmlinux.relocs'
> > > make[3]: Target 'arch/x86/boot/compressed/vmlinux' not remade because of errors.
> > >
> > > Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>
> > >
> > > Steps to reproduce:
> > > ---------------------------
> > > # TuxMake is a command line tool and Python library that provides
> > > # portable and repeatable Linux kernel builds across a variety of
> > > # architectures, toolchains, kernel configurations, and make targets.
> > > #
> > > # TuxMake supports the concept of runtimes.
> > > # See https://docs.tuxmake.org/runtimes/, for that to work it requires
> > > # that you install podman or docker on your system.
> > > #
> > > # To install tuxmake on your system globally:
> > > # sudo pip3 install -U tuxmake
> > > #
> > > # See https://docs.tuxmake.org/ for complete documentation.
> > >
> > > tuxmake --runtime podman --target-arch i386 --toolchain clang-12
> > > --kconfig defconfig --kconfig-add
> > > https://builds.tuxbuild.com/1opxSKxZuRowPsiOsSJ0IoUOXOt/config
> > >
> > > --
> > > Linaro LKFT
> > > https://lkft.linaro.org
>
> - Naresh