All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Geoffrey Le Gourriérec" <geoffrey.legourrierec@gmail.com>
To: ysato@users.sourceforge.jp, dalias@libc.org
Cc: linux-sh@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>
Subject: [PATCH 1/1] Use types.h and not time_types.h in sockios.h
Date: Sat, 23 Jan 2021 17:56:52 +0100	[thread overview]
Message-ID: <20210123165652.10884-1-geoffrey.legourrierec@gmail.com> (raw)

This fixes builds for sh arch when libc is not using relevant
time data structures definitions for 32-bit machines. A previous
commit [1] provided a fix, that we seemed to slip through here.

As of the time of this writing, the bug was found with v5.10.7,
with uclibc 1.0.37 only (currently the only libc supporting sh
architecture). uclibc, unlike glibc or muslibc, does not seem to
have made the complete move to post-year-2038 world for 32-bit.
The issue can be reproduced as follows:

$ git clone git://git.busybox.net/buildroot
$ cd buildroot/
$ git checkout 742f37d
$ rm -rf board/qemu/sh4eb-r2d/patches/linux-headers/
$ sed -e '/BR2_GLOBAL_PATCH_DIR/d' -i configs/qemu_sh4eb_r2d_defconfig
$ make qemu_sh4eb_r2d_defconfig
$ make
$ ./output/images/start-qemu.sh

I tried to understand why the initial commit [1] did not prevent
this issue (see notes below), but failed to do so. If anybody can
shed some light on this, I'll gladly take it.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fc94cf2092c7c1267fa2deb8388d624f50eba808

Signed-off-by: Geoffrey Le Gourriérec <geoffrey.legourrierec@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>

---
For the record, here's the build-time error:

/usr/bin/make -j2 -C /builds/clumsyape/buildroot/output/build/uclibc-1.0.37 ARCH="sh" CROSS_COMPILE="/builds/clumsyape/buildroot/output/host/bin/sh4-buildroot-linux-uclibc-" UCLIBC_EXTRA_CFLAGS="" HOSTCC="/usr/bin/gcc"
make[1]: Entering directory '/builds/clumsyape/buildroot/output/build/uclibc-1.0.37'
  GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.h
  GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.h
  GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h
  GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h
In file included from /builds/clumsyape/buildroot/output/build/linux-headers-5.10.7/usr/include/asm/sockios.h:5,
                 from /builds/clumsyape/buildroot/output/build/linux-headers-5.10.7/usr/include/asm-generic/socket.h:6,
                 from /builds/clumsyape/buildroot/output/build/linux-headers-5.10.7/usr/include/asm/socket.h:1,
                 from ./include/bits/socket.h:360,
                 from ./include/sys/socket.h:39,
                 from ./include/netinet/in.h:24,
                 from ./include/resolv.h:57,
                 from ./libpthread/nptl/descr.h:36,
                 from ./libpthread/nptl/pthreadP.h:25,
                 from <stdin>:2:
/builds/clumsyape/buildroot/output/build/linux-headers-5.10.7/usr/include/linux/time_types.h:8:2: error: unknown type name '__kernel_time64_t'
    8 |  __kernel_time64_t       tv_sec;                 /* seconds */
      |  ^~~~~~~~~~~~~~~~~
/builds/clumsyape/buildroot/output/build/linux-headers-5.10.7/usr/include/linux/time_types.h:32:2: error: unknown type name '__kernel_old_time_t'
   32 |  __kernel_old_time_t tv_sec;  /* seconds */
      |  ^~~~~~~~~~~~~~~~~~~
libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch:135: recipe for target 'libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h' failed
make[1]: *** [libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h] Error 1
make[1]: Leaving directory '/builds/clumsyape/buildroot/output/build/uclibc-1.0.37'

I did a quick header dependency analysis starting from __kernel_time64_t
(one of the offending types), but could "follow up" to linux/time_types.h
as expected; so I fail to understand how this could break. What's even
more confusing is linux/time_types.h includes linux/types.h itself.
---
 arch/sh/include/uapi/asm/sockios.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/sh/include/uapi/asm/sockios.h b/arch/sh/include/uapi/asm/sockios.h
index ef01ced9e169..d97d14685305 100644
--- a/arch/sh/include/uapi/asm/sockios.h
+++ b/arch/sh/include/uapi/asm/sockios.h
@@ -2,7 +2,7 @@
 #ifndef __ASM_SH_SOCKIOS_H
 #define __ASM_SH_SOCKIOS_H
 
-#include <linux/time_types.h>
+#include <linux/types.h>
 
 /* Socket-level I/O control calls. */
 #define FIOGETOWN	_IOR('f', 123, int)
-- 
2.17.1


             reply	other threads:[~2021-01-23 16:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-23 16:56 Geoffrey Le Gourriérec [this message]
2021-01-24 10:55 ` [PATCH 1/1] Use types.h and not time_types.h in sockios.h Arnd Bergmann
2021-01-24 16:38   ` Geoffrey Le Gourriérec
2021-01-24 18:57     ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210123165652.10884-1-geoffrey.legourrierec@gmail.com \
    --to=geoffrey.legourrierec@gmail.com \
    --cc=arnd@arndb.de \
    --cc=dalias@libc.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.