* [powerpc:next-test 54/220] arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64'
@ 2020-12-04 14:23 kernel test robot
2020-12-07 12:23 ` Michael Ellerman
0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2020-12-04 14:23 UTC (permalink / raw)
To: Christophe Leroy; +Cc: clang-built-linux, kbuild-all, linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 3030 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next-test
head: 4e4ed87981c764498942c52004c620bb8f104eac
commit: d0e3fc69d00d1f50d22d6b6acfc555ccda80ad1e [54/220] powerpc/vdso: Provide __kernel_clock_gettime64() on vdso32
config: powerpc64-randconfig-r011-20201204 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 32c501dd88b62787d3a5ffda7aabcf4650dbe3cd)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id=d0e3fc69d00d1f50d22d6b6acfc555ccda80ad1e
git remote add powerpc https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
git fetch --no-tags powerpc next-test
git checkout d0e3fc69d00d1f50d22d6b6acfc555ccda80ad1e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
arch/powerpc/kernel/vdso32/vgettimeofday.c:7:5: error: conflicting types for '__c_kernel_clock_gettime'
int __c_kernel_clock_gettime(clockid_t clock, struct old_timespec32 *ts,
^
arch/powerpc/include/asm/vdso/gettimeofday.h:183:5: note: previous declaration is here
int __c_kernel_clock_gettime(clockid_t clock, struct __kernel_timespec *ts,
^
>> arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64' [-Wmissing-prototypes]
int __c_kernel_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts,
^
arch/powerpc/kernel/vdso32/vgettimeofday.c:13:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int __c_kernel_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts,
^
static
arch/powerpc/kernel/vdso32/vgettimeofday.c:25:5: error: conflicting types for '__c_kernel_clock_getres'
int __c_kernel_clock_getres(clockid_t clock_id, struct old_timespec32 *res,
^
arch/powerpc/include/asm/vdso/gettimeofday.h:185:5: note: previous declaration is here
int __c_kernel_clock_getres(clockid_t clock_id, struct __kernel_timespec *res,
^
1 warning and 2 errors generated.
vim +/__c_kernel_clock_gettime64 +13 arch/powerpc/kernel/vdso32/vgettimeofday.c
12
> 13 int __c_kernel_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts,
14 const struct vdso_data *vd)
15 {
16 return __cvdso_clock_gettime_data(vd, clock, ts);
17 }
18
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31372 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [powerpc:next-test 54/220] arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64'
2020-12-04 14:23 [powerpc:next-test 54/220] arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64' kernel test robot
@ 2020-12-07 12:23 ` Michael Ellerman
2020-12-07 17:56 ` Nick Desaulniers
0 siblings, 1 reply; 4+ messages in thread
From: Michael Ellerman @ 2020-12-07 12:23 UTC (permalink / raw)
To: kernel test robot, Christophe Leroy
Cc: clang-built-linux, kbuild-all, linuxppc-dev
kernel test robot <lkp@intel.com> writes:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next-test
> head: 4e4ed87981c764498942c52004c620bb8f104eac
> commit: d0e3fc69d00d1f50d22d6b6acfc555ccda80ad1e [54/220] powerpc/vdso: Provide __kernel_clock_gettime64() on vdso32
> config: powerpc64-randconfig-r011-20201204 (attached as .config)
> compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 32c501dd88b62787d3a5ffda7aabcf4650dbe3cd)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # install powerpc64 cross compiling tool for clang build
> # apt-get install binutils-powerpc64-linux-gnu
> # https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id=d0e3fc69d00d1f50d22d6b6acfc555ccda80ad1e
> git remote add powerpc https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
> git fetch --no-tags powerpc next-test
> git checkout d0e3fc69d00d1f50d22d6b6acfc555ccda80ad1e
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>):
>
> arch/powerpc/kernel/vdso32/vgettimeofday.c:7:5: error: conflicting types for '__c_kernel_clock_gettime'
> int __c_kernel_clock_gettime(clockid_t clock, struct old_timespec32 *ts,
> ^
We're building vdso32, which is 32-bit code, we pass -m32:
clang -Wp,-MMD,arch/powerpc/kernel/vdso32/.vgettimeofday.o.d -nostdinc -isystem /usr/lib/llvm-11/lib/clang/11.0.0/include -I/linux/arch/powerpc/include -I./arch/powerpc/include/generated -I/linux/include -I./include -I/linux/arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi -I/linux/include/uapi -I./include/generated/uapi -include /linux/include/linux/kconfig.h -include /linux/include/linux/compiler_types.h -D__KERNEL__ -I /linux/arch/powerpc -DHAVE_AS_ATHIGH=1 -Qunused-arguments -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 --target=powerpc64le-linux-gnu --prefix=/usr/bin/powerpc64le-linux-gnu- --gcc-toolchain=/usr -no-integrated-as -Werror=unknown-warning-option -mlittle-endian -m64 -msoft-float -pipe -mcpu=power8 -mtune=power9 -mno-altivec -mno-vsx -mno-spe -fno-asynchronous-unwind-tables -Wa,-mpower4 -Wa,-many -mlittle-endian -fno-delete-null-pointer-checks -Wno-frame-address -Wno-address-of-packed-member -Os -Wframe-larger-than=2048 -fno-stack-protector -Wno-format-invalid-specifier -Wno-gnu -mno-global-merge -Wno-unused-const-variable -fomit-frame-pointer -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-array-bounds -fno-strict-overflow -fno-stack-check -Werror=date-time -Werror=incompatible-pointer-types -fmacro-prefix-map=/linux/= -Wno-initializer-overrides -Wno-format -Wno-sign-compare -Wno-format-zero-length -Wno-pointer-to-enum-cast -Wno-tautological-constant-out-of-range-compare -D_TASK_CPU=304 -shared -fno-common -fno-builtin -nostdlib -Wl,-soname=linux-vdso32.so.1 -Wl,--hash-style=both -include /linux/lib/vdso/gettimeofday.c -fno-stack-protector -DDISABLE_BRANCH_PROFILING -ffreestanding -fasynchronous-unwind-tables -I /linux/arch/powerpc/kernel/vdso32 -I ./arch/powerpc/kernel/vdso32 -DKBUILD_MODFILE='"arch/powerpc/kernel/vdso32/vgettimeofday"' -DKBUILD_BASENAME='"vgettimeofday"' -DKBUILD_MODNAME='"vgettimeofday"' -m32 -c -o arch/powerpc/kernel/vdso32/vgettimeofday.o /linux/arch/powerpc/kernel/vdso32/vgettimeofday.c
> arch/powerpc/include/asm/vdso/gettimeofday.h:183:5: note: previous declaration is here
> int __c_kernel_clock_gettime(clockid_t clock, struct __kernel_timespec *ts,
> ^
But this is inside an #ifdef __powerpc64__ block:
182 #ifdef __powerpc64__
183 int __c_kernel_clock_gettime(clockid_t clock, struct __kernel_timespec *ts,
184 const struct vdso_data *vd);
So is clang defining __powerpc64__ even for 32-bit code?
And the answer appears to be yes:
$ clang --version
Ubuntu clang version 11.0.0-2
Target: powerpc64le-unknown-linux-gnu
$ clang -m32 -dM -E - < /dev/null | grep powerpc
#define __powerpc64__ 1
#define __powerpc__ 1
Compare to gcc:
$ gcc --version
gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0
$ gcc -m32 -dM -E - < /dev/null | grep powerpc
#define __powerpc__ 1
#define powerpc 1
#define __powerpc 1
Which is fairly problematic, because we use the presence/absence of
__powerpc64__ to determine if we're building 64-bit/32-bit code in
several places.
Not sure what the best approach for fixing that is.
cheers
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [powerpc:next-test 54/220] arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64'
2020-12-07 12:23 ` Michael Ellerman
@ 2020-12-07 17:56 ` Nick Desaulniers
2020-12-07 18:20 ` Segher Boessenkool
0 siblings, 1 reply; 4+ messages in thread
From: Nick Desaulniers @ 2020-12-07 17:56 UTC (permalink / raw)
To: Michael Ellerman
Cc: clang-built-linux, linuxppc-dev, kbuild-all, kernel test robot
On Mon, Dec 7, 2020 at 4:23 AM Michael Ellerman <mpe@ellerman.id.au> wrote:
>
> So is clang defining __powerpc64__ even for 32-bit code?
>
> And the answer appears to be yes:
>
> $ clang --version
> Ubuntu clang version 11.0.0-2
> Target: powerpc64le-unknown-linux-gnu
>
> $ clang -m32 -dM -E - < /dev/null | grep powerpc
> #define __powerpc64__ 1
> #define __powerpc__ 1
>
> Compare to gcc:
>
> $ gcc --version
> gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0
>
> $ gcc -m32 -dM -E - < /dev/null | grep powerpc
> #define __powerpc__ 1
> #define powerpc 1
> #define __powerpc 1
>
>
> Which is fairly problematic, because we use the presence/absence of
> __powerpc64__ to determine if we're building 64-bit/32-bit code in
> several places.
>
> Not sure what the best approach for fixing that is.
Thanks for the triage; we should fix our preprocessor:
https://bugs.llvm.org/show_bug.cgi?id=48427
--
Thanks,
~Nick Desaulniers
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [powerpc:next-test 54/220] arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64'
2020-12-07 17:56 ` Nick Desaulniers
@ 2020-12-07 18:20 ` Segher Boessenkool
0 siblings, 0 replies; 4+ messages in thread
From: Segher Boessenkool @ 2020-12-07 18:20 UTC (permalink / raw)
To: Nick Desaulniers
Cc: kernel test robot, linuxppc-dev, kbuild-all, clang-built-linux
On Mon, Dec 07, 2020 at 09:56:56AM -0800, Nick Desaulniers wrote:
> On Mon, Dec 7, 2020 at 4:23 AM Michael Ellerman <mpe@ellerman.id.au> wrote:
> > So is clang defining __powerpc64__ even for 32-bit code?
> >
> > And the answer appears to be yes:
> >
> > $ clang --version
> > Ubuntu clang version 11.0.0-2
> > Target: powerpc64le-unknown-linux-gnu
> >
> > $ clang -m32 -dM -E - < /dev/null | grep powerpc
> > #define __powerpc64__ 1
> > #define __powerpc__ 1
> >
> > Compare to gcc:
> >
> > $ gcc --version
> > gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0
> >
> > $ gcc -m32 -dM -E - < /dev/null | grep powerpc
> > #define __powerpc__ 1
> > #define powerpc 1
> > #define __powerpc 1
> >
> >
> > Which is fairly problematic, because we use the presence/absence of
> > __powerpc64__ to determine if we're building 64-bit/32-bit code in
> > several places.
> >
> > Not sure what the best approach for fixing that is.
>
> Thanks for the triage; we should fix our preprocessor:
> https://bugs.llvm.org/show_bug.cgi?id=48427
Not only is that a compatibility problem (as the bug report says): it is
a straight up violation of the ABI! (For ELFv2, which you have here;
older ABIs did not mention the preprocessor predefines, but this was
exactly the same on all compilers afaik.)
Segher
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-12-07 18:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-04 14:23 [powerpc:next-test 54/220] arch/powerpc/kernel/vdso32/vgettimeofday.c:13:5: warning: no previous prototype for function '__c_kernel_clock_gettime64' kernel test robot
2020-12-07 12:23 ` Michael Ellerman
2020-12-07 17:56 ` Nick Desaulniers
2020-12-07 18:20 ` Segher Boessenkool
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).