Message ID | 20230525103217.314605-1-caiyinyu@loongson.cn |
---|---|
State | New |
Headers | show |
Series | LoongArch: Fix inconsistency in SHMLBA macro values between glibc and kernel | expand |
> The LoongArch glibc was using the value of the SHMLBA macro from common code, > which is __getpagesize() (16k), but this was inconsistent with the value of > the SHMLBA macro in the kernel, which is SZ_64K (64k). This caused several > shmat-related tests in LTP (Linux Test Project) to fail. This commit fixes > the issue by ensuring that the glibc's SHMLBA macro value matches the value > used in the kernel like other architectures. Would it be possible to add a generic test like sysdeps/unix/sysv/linux/tst-mman-consts.py against the UAPI headers? Or is this constant not exported at all? Thanks, Florian
On Thu, 2023-05-25 at 13:01 +0200, Florian Weimer wrote: > > The LoongArch glibc was using the value of the SHMLBA macro from > > common code, > > which is __getpagesize() (16k), but this was inconsistent with the > > value of > > the SHMLBA macro in the kernel, which is SZ_64K (64k). This caused > > several > > shmat-related tests in LTP (Linux Test Project) to fail. This commit > > fixes > > the issue by ensuring that the glibc's SHMLBA macro value matches > > the value > > used in the kernel like other architectures. > > Would it be possible to add a generic test like > sysdeps/unix/sysv/linux/tst-mman-consts.py against the UAPI headers? > Or is this constant not exported at all? SHMLBA seems not exist in a Linux 6.3.0 UAPI header installation (from Gentoo on a LoongArch).
在 2023/5/25 下午7:01, Florian Weimer 写道: >> The LoongArch glibc was using the value of the SHMLBA macro from common code, >> which is __getpagesize() (16k), but this was inconsistent with the value of >> the SHMLBA macro in the kernel, which is SZ_64K (64k). This caused several >> shmat-related tests in LTP (Linux Test Project) to fail. This commit fixes >> the issue by ensuring that the glibc's SHMLBA macro value matches the value >> used in the kernel like other architectures. > Would it be possible to add a generic test like > sysdeps/unix/sysv/linux/tst-mman-consts.py against the UAPI headers? > Or is this constant not exported at all? The Linux kernel defines the architecture-dependent macro SHMLBA in arch/*/include/asm/shmparam.h. This macro is also defined in the common code in include/asm-generic/shmparam.h. However, neither of them are exported as part of the uapi. > > Thanks, > Florian
diff --git a/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h b/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h new file mode 100644 index 0000000000..3c171ef7b6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h @@ -0,0 +1,24 @@ +/* Define SHMLBA. LoongArch version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#ifndef _SYS_SHM_H +# error "Never use <bits/shmlba.h> directly; include <sys/shm.h> instead." +#endif + +/* Segment low boundary address multiple. */ +#define SHMLBA 0x10000