[v3,05/29] arc: Add <bits/pagesize.h>

Message ID cf5e65ba1eb9652008a9ca21a5502bf7907af6c3.1727624528.git.fweimer@redhat.com
State Under Review
Delegated to: Adhemerval Zanella Netto
Headers
Series Teach glibc about possible page sizes and handle gaps in ld.so |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 success Test passed
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-arm success Test passed

Commit Message

Florian Weimer Sept. 29, 2024, 3:59 p.m. UTC
  According to arch/arc/Kconfig in the Linux kernel sources, arc
supports pagge sizes 4 KiB, 8 KiB, 16 KiB.  However,
the toolchain defaults are not compatible with 16 KiB pages, so
xfail the future elf/tst-load-alignment test.

(Note: Alternatively, we could fix the maximum page size at 8 KiB,
if that's closer to reality.)

---
 sysdeps/arc/bits/pagesize.h          | 2 ++
 sysdeps/unix/sysv/linux/arc/Makefile | 5 +++++
 2 files changed, 7 insertions(+)
 create mode 100644 sysdeps/arc/bits/pagesize.h
  

Comments

Vineet Gupta Sept. 29, 2024, 9:55 p.m. UTC | #1
On 9/29/24 08:59, Florian Weimer wrote:
> According to arch/arc/Kconfig in the Linux kernel sources, arc
> supports pagge sizes 4 KiB, 8 KiB, 16 KiB.  However,
> the toolchain defaults are not compatible with 16 KiB pages, so
> xfail the future elf/tst-load-alignment test.
>
> (Note: Alternatively, we could fix the maximum page size at 8 KiB,
> if that's closer to reality.)

Indeed 16K size was more esoteric and dates back to older ARC700 cpus (not supported in glibc anyways)
And 8K is indeed the default for ARCompact and ARCv2 ISA cores.

-Vineet

> ---
>  sysdeps/arc/bits/pagesize.h          | 2 ++
>  sysdeps/unix/sysv/linux/arc/Makefile | 5 +++++
>  2 files changed, 7 insertions(+)
>  create mode 100644 sysdeps/arc/bits/pagesize.h
>
> diff --git a/sysdeps/arc/bits/pagesize.h b/sysdeps/arc/bits/pagesize.h
> new file mode 100644
> index 0000000000..16a4d49136
> --- /dev/null
> +++ b/sysdeps/arc/bits/pagesize.h
> @@ -0,0 +1,2 @@
> +#define __GLIBC_PAGE_SHIFT_MIN 12
> +#define __GLIBC_PAGE_SHIFT_MAX 14
> diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile
> index dd3da52c39..cfade7a347 100644
> --- a/sysdeps/unix/sysv/linux/arc/Makefile
> +++ b/sysdeps/unix/sysv/linux/arc/Makefile
> @@ -1,3 +1,8 @@
> +ifeq ($(subdir),elf)
> +# The toolchain defaults to 8K pages even though Linux supports 16K pages.
> +test-xfail-tst-load-alignment = yes
> +endif
> +
>  ifeq ($(subdir),stdlib)
>  gen-as-const-headers += ucontext_i.sym
>  endif
  
Florian Weimer Sept. 30, 2024, 9:20 a.m. UTC | #2
* Vineet Gupta:

> On 9/29/24 08:59, Florian Weimer wrote:
>> According to arch/arc/Kconfig in the Linux kernel sources, arc
>> supports pagge sizes 4 KiB, 8 KiB, 16 KiB.  However,
>> the toolchain defaults are not compatible with 16 KiB pages, so
>> xfail the future elf/tst-load-alignment test.
>>
>> (Note: Alternatively, we could fix the maximum page size at 8 KiB,
>> if that's closer to reality.)
>
> Indeed 16K size was more esoteric and dates back to older ARC700 cpus
> (not supported in glibc anyways) And 8K is indeed the default for
> ARCompact and ARCv2 ISA cores.

>> +#define __GLIBC_PAGE_SHIFT_MIN 12
>> +#define __GLIBC_PAGE_SHIFT_MAX 14

Do you suggest to change the maximum shift to 13?  Sorry, it's not clear
based on your comment.

Thanks,
Florian
  

Patch

diff --git a/sysdeps/arc/bits/pagesize.h b/sysdeps/arc/bits/pagesize.h
new file mode 100644
index 0000000000..16a4d49136
--- /dev/null
+++ b/sysdeps/arc/bits/pagesize.h
@@ -0,0 +1,2 @@ 
+#define __GLIBC_PAGE_SHIFT_MIN 12
+#define __GLIBC_PAGE_SHIFT_MAX 14
diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile
index dd3da52c39..cfade7a347 100644
--- a/sysdeps/unix/sysv/linux/arc/Makefile
+++ b/sysdeps/unix/sysv/linux/arc/Makefile
@@ -1,3 +1,8 @@ 
+ifeq ($(subdir),elf)
+# The toolchain defaults to 8K pages even though Linux supports 16K pages.
+test-xfail-tst-load-alignment = yes
+endif
+
 ifeq ($(subdir),stdlib)
 gen-as-const-headers += ucontext_i.sym
 endif