diff mbox series

package/glibc: fix struct stat for microblaze with largefile

Message ID 20220725100745.2878896-1-arnout@mind.be
State Accepted
Headers show
Series package/glibc: fix struct stat for microblaze with largefile | expand

Commit Message

Arnout Vandecappelle July 25, 2022, 10:07 a.m. UTC
On microblaze, there is a separate version of struct stat for largefile
and for non-largefile. When the struct was updated to include the
st_mtim, st_atim and st_ctim members for POSIX, the largefile version
was forgotten. Since we only use largefile in Buildroot, that means that
microblaze didn't have these members in struct stat. This breaks the
build of some packages.

Change the define around st_mtim etc. to __USE_XOPEN2K8 to enable it in
posix context (i.e. by default).

Fixes:
 - http://autobuild.buildroot.org/results/dd944a3bd4ac0c94b2bec8ac209100daaf43903d (zstd)
 - http://autobuild.buildroot.org/results/4609c8e2af24d9536eb33397a4659ad740aca742 (dieharder)

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Cc: Romain Naour <romain.naour@gmail.com>
---
 ...ot-posix-conformant-on-microblaze-wi.patch | 37 +++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch

Comments

Romain Naour July 25, 2022, 10:24 a.m. UTC | #1
Hello Arnout,

Le 25/07/2022 à 12:07, Arnout Vandecappelle (Essensium/Mind) a écrit :
> On microblaze, there is a separate version of struct stat for largefile
> and for non-largefile. When the struct was updated to include the
> st_mtim, st_atim and st_ctim members for POSIX, the largefile version
> was forgotten. Since we only use largefile in Buildroot, that means that
> microblaze didn't have these members in struct stat. This breaks the
> build of some packages.
> 
> Change the define around st_mtim etc. to __USE_XOPEN2K8 to enable it in
> posix context (i.e. by default).

It means that glibc for microblaze with largefile support fail to build some
packages since 2.22 (released in 2015).

Reviewed-by: Romain Naour <romain.naour@smile.fr>

Best regards,
Romain

> 
> Fixes:
>  - http://autobuild.buildroot.org/results/dd944a3bd4ac0c94b2bec8ac209100daaf43903d (zstd)
>  - http://autobuild.buildroot.org/results/4609c8e2af24d9536eb33397a4659ad740aca742 (dieharder)
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> Cc: Romain Naour <romain.naour@gmail.com>
> ---
>  ...ot-posix-conformant-on-microblaze-wi.patch | 37 +++++++++++++++++++
>  1 file changed, 37 insertions(+)
>  create mode 100644 package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
> 
> diff --git a/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch b/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
> new file mode 100644
> index 0000000000..9797f3a935
> --- /dev/null
> +++ b/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
> @@ -0,0 +1,37 @@
> +From 87d415cc133ff493ccd02464c061cb171d11ef2f Mon Sep 17 00:00:00 2001
> +From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
> +Date: Mon, 25 Jul 2022 11:25:15 +0200
> +Subject: [PATCH] struct stat is not posix conformant on microblaze with
> + __USE_FILE_OFFSET64
> +
> +Commit a06b40cdf5ba0d2ab4f9b4c77d21e45ff284fac7 updated stat.h to use
> +__USE_XOPEN2K8 instead of __USE_MISC to add the st_atim, st_mtim and
> +st_ctim members to struct stat. However, for microblaze, there are two
> +definitions of struct stat, depending on the __USE_FILE_OFFSET64 macro.
> +The second one was not updated.
> +
> +Change __USE_MISC to __USE_XOPEN2K8 in the __USE_FILE_OFFSET64 version
> +of struct stat for microblaze.
> +
> +Upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=29403
> +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> +---
> + sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> +index a2787e88343..850697f4fa6 100644
> +--- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> ++++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> +@@ -89,7 +89,7 @@ struct stat
> +         __blksize_t             st_blksize; /* Optimal block size for I/O.  */
> +         int                     __pad3;
> +         __blkcnt64_t            st_blocks;  /* Number 512-byte blocks allocated.  */
> +-# ifdef __USE_MISC
> ++# ifdef __USE_XOPEN2K8
> +         /* Nanosecond resolution timestamps are stored in a format
> +          * equivalent to 'struct timespec'. This is the type used
> +          * whenever possible but the Unix namespace rules do not allow the
> +-- 
> +2.35.3
> +
Arnout Vandecappelle July 25, 2022, 10:36 a.m. UTC | #2
On 25/07/2022 12:24, Romain Naour wrote:
> Hello Arnout,
> 
> Le 25/07/2022 à 12:07, Arnout Vandecappelle (Essensium/Mind) a écrit :
>> On microblaze, there is a separate version of struct stat for largefile
>> and for non-largefile. When the struct was updated to include the
>> st_mtim, st_atim and st_ctim members for POSIX, the largefile version
>> was forgotten. Since we only use largefile in Buildroot, that means that
>> microblaze didn't have these members in struct stat. This breaks the
>> build of some packages.
>>
>> Change the define around st_mtim etc. to __USE_XOPEN2K8 to enable it in
>> posix context (i.e. by default).
> 
> It means that glibc for microblaze with largefile support fail to build some
> packages since 2.22 (released in 2015).

  Yep. But we didn't build microblaze with glibc until recently, so we never 
noticed.

  There's a related note I forgot to add to my patch. This patch fixes the issue 
for internal toolchains, but of course not for external toolchain. We have just 
one predefined external toolchain that is in this situation, bootlin microblaze 
glibc. That one should be updated in September or so. I think we can live with 
this problem (which existed for years) a few months longer. So I marked 
Fabrice's workarounds for zstd and dieharder as Superseded.

  Regards,
  Arnout


> 
> Reviewed-by: Romain Naour <romain.naour@smile.fr>
> 
> Best regards,
> Romain
> 
>>
>> Fixes:
>>   - http://autobuild.buildroot.org/results/dd944a3bd4ac0c94b2bec8ac209100daaf43903d (zstd)
>>   - http://autobuild.buildroot.org/results/4609c8e2af24d9536eb33397a4659ad740aca742 (dieharder)
>>
>> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
>> Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>> Cc: Romain Naour <romain.naour@gmail.com>
>> ---
>>   ...ot-posix-conformant-on-microblaze-wi.patch | 37 +++++++++++++++++++
>>   1 file changed, 37 insertions(+)
>>   create mode 100644 package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
>>
>> diff --git a/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch b/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
>> new file mode 100644
>> index 0000000000..9797f3a935
>> --- /dev/null
>> +++ b/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
>> @@ -0,0 +1,37 @@
>> +From 87d415cc133ff493ccd02464c061cb171d11ef2f Mon Sep 17 00:00:00 2001
>> +From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
>> +Date: Mon, 25 Jul 2022 11:25:15 +0200
>> +Subject: [PATCH] struct stat is not posix conformant on microblaze with
>> + __USE_FILE_OFFSET64
>> +
>> +Commit a06b40cdf5ba0d2ab4f9b4c77d21e45ff284fac7 updated stat.h to use
>> +__USE_XOPEN2K8 instead of __USE_MISC to add the st_atim, st_mtim and
>> +st_ctim members to struct stat. However, for microblaze, there are two
>> +definitions of struct stat, depending on the __USE_FILE_OFFSET64 macro.
>> +The second one was not updated.
>> +
>> +Change __USE_MISC to __USE_XOPEN2K8 in the __USE_FILE_OFFSET64 version
>> +of struct stat for microblaze.
>> +
>> +Upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=29403
>> +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
>> +---
>> + sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
>> +index a2787e88343..850697f4fa6 100644
>> +--- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
>> ++++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
>> +@@ -89,7 +89,7 @@ struct stat
>> +         __blksize_t             st_blksize; /* Optimal block size for I/O.  */
>> +         int                     __pad3;
>> +         __blkcnt64_t            st_blocks;  /* Number 512-byte blocks allocated.  */
>> +-# ifdef __USE_MISC
>> ++# ifdef __USE_XOPEN2K8
>> +         /* Nanosecond resolution timestamps are stored in a format
>> +          * equivalent to 'struct timespec'. This is the type used
>> +          * whenever possible but the Unix namespace rules do not allow the
>> +--
>> +2.35.3
>> +
>
Peter Korsgaard Aug. 17, 2022, 6:38 a.m. UTC | #3
>>>>> "Arnout" == Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> writes:

 > On microblaze, there is a separate version of struct stat for largefile
 > and for non-largefile. When the struct was updated to include the
 > st_mtim, st_atim and st_ctim members for POSIX, the largefile version
 > was forgotten. Since we only use largefile in Buildroot, that means that
 > microblaze didn't have these members in struct stat. This breaks the
 > build of some packages.

 > Change the define around st_mtim etc. to __USE_XOPEN2K8 to enable it in
 > posix context (i.e. by default).

 > Fixes:
 >  - http://autobuild.buildroot.org/results/dd944a3bd4ac0c94b2bec8ac209100daaf43903d (zstd)
 >  - http://autobuild.buildroot.org/results/4609c8e2af24d9536eb33397a4659ad740aca742 (dieharder)

 > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
 > Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
 > Cc: Romain Naour <romain.naour@gmail.com>

Committed to 2022.05.x and 2022.02.x, thanks.
diff mbox series

Patch

diff --git a/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch b/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
new file mode 100644
index 0000000000..9797f3a935
--- /dev/null
+++ b/package/glibc/0002-struct-stat-is-not-posix-conformant-on-microblaze-wi.patch
@@ -0,0 +1,37 @@ 
+From 87d415cc133ff493ccd02464c061cb171d11ef2f Mon Sep 17 00:00:00 2001
+From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
+Date: Mon, 25 Jul 2022 11:25:15 +0200
+Subject: [PATCH] struct stat is not posix conformant on microblaze with
+ __USE_FILE_OFFSET64
+
+Commit a06b40cdf5ba0d2ab4f9b4c77d21e45ff284fac7 updated stat.h to use
+__USE_XOPEN2K8 instead of __USE_MISC to add the st_atim, st_mtim and
+st_ctim members to struct stat. However, for microblaze, there are two
+definitions of struct stat, depending on the __USE_FILE_OFFSET64 macro.
+The second one was not updated.
+
+Change __USE_MISC to __USE_XOPEN2K8 in the __USE_FILE_OFFSET64 version
+of struct stat for microblaze.
+
+Upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=29403
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
+---
+ sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
+index a2787e88343..850697f4fa6 100644
+--- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
+@@ -89,7 +89,7 @@ struct stat
+         __blksize_t             st_blksize; /* Optimal block size for I/O.  */
+         int                     __pad3;
+         __blkcnt64_t            st_blocks;  /* Number 512-byte blocks allocated.  */
+-# ifdef __USE_MISC
++# ifdef __USE_XOPEN2K8
+         /* Nanosecond resolution timestamps are stored in a format
+          * equivalent to 'struct timespec'. This is the type used
+          * whenever possible but the Unix namespace rules do not allow the
+-- 
+2.35.3
+