[PATCH 1/1] get page size using sysconf (_SC_PAGESIZE) instead of PAGE_SIZE
Pedro Alves
pedro@palves.net
Mon May 2 18:55:13 GMT 2022
On 2022-05-02 19:01, Zied Guermazi wrote:
> hi Pedro,
>
> I think I can clarify the situation here by giving more insight on the context. A short explanation is needed.
>
> In current build system linux-btrace.c is only included when the host is a Linux running of an i386 cpu. (see gdb/configure.nat). so the point of Andreas is pertinent with no further explanations of additional planned changes.
>
> This patch is a preparation for another patch set for adding btrace on arm processors using ARM Coresight ETM traces. (see the patch set https://pi.simark.ca/gdb-patches/20210531213307.275079-1-zied.guermazi@trande.de/#r ). Markus Metzger in his review recommended submitting this change in a separated patch.
>
> In the patch set for adding btrace on arm, there is a need to build linux-btrace.c for hosts linux/aarch64 and linux/arm. gdb/configure.nat at line 233 looks now as following:
>
> "
>
> / linux)//
> // case ${gdb_host_cpu} in//
> // aarch64)//
> // # Host: AArch64 based machine running GNU/Linux//
> // NATDEPFILES="${NATDEPFILES} aarch64-nat.o aarch64-linux-nat.o \//
> // aarch32-linux-nat.o nat/aarch64-hw-point.o \//
> // nat/aarch64-linux-hw-point.o \//
> // nat/aarch64-linux.o \//
> // *nat/linux-btrace.o* \//
> // nat/aarch64-sve-linux-ptrace.o \//
> // nat/aarch64-mte-linux-ptrace.o"//
> // ;;//
> // arc)//
> // # Host: ARC based machine running GNU/Linux//
> // NATDEPFILES="${NATDEPFILES} arc-linux-nat.o"//
> // ;;//
> // arm)//
> // # Host: ARM based machine running GNU/Linux//
> // NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \//
> // aarch32-linux-nat.o *nat/linux-btrace.o*"//
> // ;;/
>
> "
>
> which means that the file is now included in the build for linux/aarch64 and linux/arm
>
>
> I have observed this issue when the build machine was an intel x86, host and target were both aarch64-linux (and also arm-linux)
OK, thanks, that clarifies things. I wasn't aware of that patch series. The build and target machines (in autoconf terms) are
really irrelevant here. The only machine that matters here is the host one.
>
> using following configuration
>
> "../binutils-gdb/configure --host aarch64-linux-gnu --target=aarch64-linux-gnu --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprofng --with-arm-cs "
>
> and when building natively on Debian on aarch64 and Debian on arm.
Did you really run configure on one machine, and then typed "make" on a different machine?
Anyhow, doesn't matter.
>
> I was getting following build error message
>
> "
> /../../binutils-gdb/gdb/nat/linux-btrace.c:799:30: error: ‘PAGE_SIZE’ was not declared in this scope; did you mean ‘PTRACE_SEIZE’?//
> // 799 | scoped_mmap data (nullptr, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,//
> // | ^~~~~~~~~//
> // | PTRACE_SEIZE/
>
> "
>
> The issue was fixed with this patch.
Right.
So in the commit log, instead of:
"PAGE_SIZE is not defined in all build configurations, e.g cross compiling
for aarch64 GNU/Linux machine. This patch gets the value at runtime using
posix call sysconf (_SC_PAGESIZE)"
don't mention cross compiling at all, as that just confuses things.
I'd suggest instead:
"Currently, linux-btrace.c is only built when the host is x86 or x86_64 GNU/Linux.
Later patches will add btrace support on ARM processors using ARM Coresight ETM traces.
That ran into the fact that PAGE_SIZE is not defined on Aarch64. This patch fixes that
by getting the page size value at runtime using POSIX sysconf(_SC_PAGESIZE) instead."
Pedro Alves
More information about the Gdb-patches
mailing list