Message ID | 20211223173706.1179720-5-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | libmemusage code cleanup | expand |
This looks OK to me. But I think it will need some testing. See comments below. On Thu, Dec 23, 2021 at 02:37:06PM -0300, Adhemerval Zanella via Libc-alpha wrote: > And use machine-sp.h instead. The Linux implementation is based on > already provided CURRENT_STACK_FRAME (used on nptl code) and > STACK_GROWS_UPWARD is replaced with _STACK_GROWS_UP. > --- > malloc/memusage.c | 13 ++++++----- > sysdeps/aarch64/memusage.h | 21 ------------------ > sysdeps/alpha/memusage.h | 20 ----------------- > sysdeps/arc/memusage.h | 21 ------------------ > sysdeps/arm/memusage.h | 20 ----------------- > sysdeps/csky/memusage.h | 21 ------------------ > sysdeps/hppa/memusage.h | 21 ------------------ > sysdeps/i386/htl/machine-sp.h | 2 +- > sysdeps/i386/i586/memusage.h | 1 - > sysdeps/i386/i686/memusage.h | 20 ----------------- > sysdeps/i386/memusage.h | 20 ----------------- > sysdeps/ia64/memusage.h | 22 ------------------- > sysdeps/m68k/memusage.h | 21 ------------------ > sysdeps/mach/hurd/i386/tls.h | 1 - > sysdeps/mach/i386/machine-sp.h | 2 +- > sysdeps/microblaze/memusage.h | 21 ------------------ > sysdeps/mips/memusage.h | 20 ----------------- > sysdeps/nios2/memusage.h | 21 ------------------ > sysdeps/powerpc/memusage.h | 20 ----------------- > sysdeps/riscv/memusage.h | 21 ------------------ > sysdeps/s390/memusage.h | 20 ----------------- > sysdeps/sh/memusage.h | 20 ----------------- > sysdeps/sparc/memusage.h | 20 ----------------- > .../sysv/linux/machine-sp.h} | 18 +++++++++------ > sysdeps/x86_64/memusage.h | 20 ----------------- > 25 files changed, 20 insertions(+), 407 deletions(-) > delete mode 100644 sysdeps/aarch64/memusage.h > delete mode 100644 sysdeps/alpha/memusage.h > delete mode 100644 sysdeps/arc/memusage.h > delete mode 100644 sysdeps/arm/memusage.h > delete mode 100644 sysdeps/csky/memusage.h > delete mode 100644 sysdeps/hppa/memusage.h > delete mode 100644 sysdeps/i386/i586/memusage.h > delete mode 100644 sysdeps/i386/i686/memusage.h > delete mode 100644 sysdeps/i386/memusage.h > delete mode 100644 sysdeps/ia64/memusage.h > delete mode 100644 sysdeps/m68k/memusage.h > delete mode 100644 sysdeps/microblaze/memusage.h > delete mode 100644 sysdeps/mips/memusage.h > delete mode 100644 sysdeps/nios2/memusage.h > delete mode 100644 sysdeps/powerpc/memusage.h > delete mode 100644 sysdeps/riscv/memusage.h > delete mode 100644 sysdeps/s390/memusage.h > delete mode 100644 sysdeps/sh/memusage.h > delete mode 100644 sysdeps/sparc/memusage.h > rename sysdeps/{generic/memusage.h => unix/sysv/linux/machine-sp.h} (68%) > delete mode 100644 sysdeps/x86_64/memusage.h > > diff --git a/malloc/memusage.c b/malloc/memusage.c > index 179dd1c683..a1c5475fdb 100644 > --- a/malloc/memusage.c > +++ b/malloc/memusage.c > @@ -33,8 +33,9 @@ > #include <sys/mman.h> > #include <sys/time.h> > > -#include <memusage.h> > #include <hp-timing.h> > +#include <machine-sp.h> > +#include <stackinfo.h> /* For _STACK_GROWS_UP */ > > /* Pointer to the real functions. These are determined used `dlsym' > when really needed. */ > @@ -146,10 +147,10 @@ update_data (struct header *result, size_t len, size_t old_len) > the main thread and it is the first call to any of these > functions. */ > if (__glibc_unlikely (!start_sp)) > - start_sp = GETSP (); > + start_sp = __thread_stack_pointer (); > > - uintptr_t sp = GETSP (); > -#ifdef STACK_GROWS_UPWARD > + uintptr_t sp = __thread_stack_pointer (); > +#ifdef _STACK_GROWS_UP > /* This can happen in threads where we didn't catch the thread's > stack early enough. */ > if (__glibc_unlikely (sp < start_sp)) > @@ -259,7 +260,7 @@ me (void) > const char *outname; > > if (!start_sp) > - start_sp = GETSP (); > + start_sp = __thread_stack_pointer (); > > outname = getenv ("MEMUSAGE_OUTPUT"); > if (outname != NULL && outname[0] != '\0' > @@ -325,7 +326,7 @@ static void > __attribute__ ((constructor)) > init (void) > { > - start_sp = GETSP (); > + start_sp = __thread_stack_pointer (); > if (!initialized) > me (); > } > diff --git a/sysdeps/aarch64/memusage.h b/sysdeps/aarch64/memusage.h > deleted file mode 100644 > index d29f7c7f89..0000000000 > --- a/sysdeps/aarch64/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/alpha/memusage.h b/sysdeps/alpha/memusage.h > deleted file mode 100644 > index bbd28302e4..0000000000 > --- a/sysdeps/alpha/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("$30"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/arc/memusage.h b/sysdeps/arc/memusage.h > deleted file mode 100644 > index e8a508a8ff..0000000000 > --- a/sysdeps/arc/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Machine-specific definitions for memory usage profiling, ARC version. > - Copyright (C) 2020-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/arm/memusage.h b/sysdeps/arm/memusage.h > deleted file mode 100644 > index 2ec8de22a5..0000000000 > --- a/sysdeps/arm/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/csky/memusage.h b/sysdeps/csky/memusage.h > deleted file mode 100644 > index 392682e12b..0000000000 > --- a/sysdeps/csky/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Machine-specific definitions for memory usage profiling, C-SKY version. > - Copyright (C) 2018-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/hppa/memusage.h b/sysdeps/hppa/memusage.h > deleted file mode 100644 > index 25e8b94b3f..0000000000 > --- a/sysdeps/hppa/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("%r30"); stack_ptr; }) > -#define STACK_GROWS_UPWARD 1 > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/i386/htl/machine-sp.h b/sysdeps/i386/htl/machine-sp.h > index 6b64dea385..812223d783 100644 > --- a/sysdeps/i386/htl/machine-sp.h > +++ b/sysdeps/i386/htl/machine-sp.h > @@ -22,7 +22,7 @@ > /* Return the current stack pointer. */ > > #define __thread_stack_pointer() ({ \ > - register void *__sp__ asm("esp"); \ > + register uintptr_t __sp__ asm("esp"); \ > __sp__; \ > }) > > diff --git a/sysdeps/i386/i586/memusage.h b/sysdeps/i386/i586/memusage.h > deleted file mode 100644 > index c8170874d0..0000000000 > --- a/sysdeps/i386/i586/memusage.h > +++ /dev/null > @@ -1 +0,0 @@ > -#include "../i686/memusage.h" > diff --git a/sysdeps/i386/i686/memusage.h b/sysdeps/i386/i686/memusage.h > deleted file mode 100644 > index 07b241263c..0000000000 > --- a/sysdeps/i386/i686/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/i386/memusage.h b/sysdeps/i386/memusage.h > deleted file mode 100644 > index 07b241263c..0000000000 > --- a/sysdeps/i386/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/ia64/memusage.h b/sysdeps/ia64/memusage.h > deleted file mode 100644 > index 33fd6ec899..0000000000 > --- a/sysdeps/ia64/memusage.h > +++ /dev/null > @@ -1,22 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#include <hp-timing.h> > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("%r12"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/m68k/memusage.h b/sysdeps/m68k/memusage.h > deleted file mode 100644 > index c22d312aed..0000000000 > --- a/sysdeps/m68k/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h > index c70ea73a81..c03d64c4d9 100644 > --- a/sysdeps/mach/hurd/i386/tls.h > +++ b/sysdeps/mach/hurd/i386/tls.h > @@ -295,7 +295,6 @@ out: > asm ("movl %%gs:%P1,%0" : "=q" (_dtv) : "i" (offsetof (tcbhead_t, dtv)));\ > _dtv; }) > > - > /* Set the stack guard field in TCB head. */ > #define THREAD_SET_STACK_GUARD(value) \ > THREAD_SETMEM (THREAD_SELF, stack_guard, value) > diff --git a/sysdeps/mach/i386/machine-sp.h b/sysdeps/mach/i386/machine-sp.h > index 280f3b7a4d..54b2a16c01 100644 > --- a/sysdeps/mach/i386/machine-sp.h > +++ b/sysdeps/mach/i386/machine-sp.h > @@ -22,7 +22,7 @@ > /* Return the current stack pointer. */ > > #define __thread_stack_pointer() ({ \ > - void *__sp__; \ > + uintptr_t __sp__; \ > __asm__ ("movl %%esp, %0" : "=r" (__sp__)); \ > __sp__; \ > }) > diff --git a/sysdeps/microblaze/memusage.h b/sysdeps/microblaze/memusage.h > deleted file mode 100644 > index 516c0b4609..0000000000 > --- a/sysdeps/microblaze/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("r1"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/mips/memusage.h b/sysdeps/mips/memusage.h > deleted file mode 100644 > index 64c558c81d..0000000000 > --- a/sysdeps/mips/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("$29"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/nios2/memusage.h b/sysdeps/nios2/memusage.h > deleted file mode 100644 > index 6f1c78812d..0000000000 > --- a/sysdeps/nios2/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Machine-specific definitions for memory usage profiling, Nios II version. > - Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/powerpc/memusage.h b/sysdeps/powerpc/memusage.h > deleted file mode 100644 > index ab21f46258..0000000000 > --- a/sysdeps/powerpc/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("%r1"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/riscv/memusage.h b/sysdeps/riscv/memusage.h > deleted file mode 100644 > index b7b45791b9..0000000000 > --- a/sysdeps/riscv/memusage.h > +++ /dev/null > @@ -1,21 +0,0 @@ > -/* Machine-specific definitions for memory usage profiling, RISC-V version. > - Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/s390/memusage.h b/sysdeps/s390/memusage.h > deleted file mode 100644 > index 6219d79664..0000000000 > --- a/sysdeps/s390/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr __asm__ ("15"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/sh/memusage.h b/sysdeps/sh/memusage.h > deleted file mode 100644 > index 87c3d40fdf..0000000000 > --- a/sysdeps/sh/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("r15"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/sparc/memusage.h b/sysdeps/sparc/memusage.h > deleted file mode 100644 > index 13741e2577..0000000000 > --- a/sysdeps/sparc/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2000-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > diff --git a/sysdeps/generic/memusage.h b/sysdeps/unix/sysv/linux/machine-sp.h > similarity index 68% > rename from sysdeps/generic/memusage.h > rename to sysdeps/unix/sysv/linux/machine-sp.h > index 514bd058d2..257d09e60d 100644 > --- a/sysdeps/generic/memusage.h > +++ b/sysdeps/unix/sysv/linux/machine-sp.h > @@ -1,4 +1,5 @@ > -/* Copyright (C) 2000-2021 Free Software Foundation, Inc. > +/* Machine-specific function to return the stack pointer. Linux version. > + Copyright (C) 2021 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 > @@ -15,11 +16,14 @@ > License along with the GNU C Library; if not, see > <https://www.gnu.org/licenses/>. */ > > +#ifndef _MACHINE_SP_H > +#define _MACHINE_SP_H > > -#include <limits.h> > -#include <stdint.h> > +/* Return the current stack pointer. */ > +static inline uintptr_t > +__thread_stack_pointer (void) > +{ > + return (uintptr_t) CURRENT_STACK_FRAME; > +} We replace GETSP with __thread_stack_pointer which is essentially CURRENT_STACK_FRAME. This seems different than GETSP. As defined on some architectures it uses some extra math rather than just getting the SP register. glibc/sysdeps/arc/nptl/pthreaddef.h:#define CURRENT_STACK_FRAME __builtin_frame_address (0) glibc/sysdeps/sparc/sparc64/pthreaddef.h:#define CURRENT_STACK_FRAME (stack_pointer + (2 * 128)) glibc/sysdeps/sparc/sparc32/pthreaddef.h:#define CURRENT_STACK_FRAME (stack_pointer + (2 * 64)) glibc/sysdeps/alpha/nptl/pthreaddef.h:#define CURRENT_STACK_FRAME __builtin_frame_address (0) glibc/sysdeps/m68k/nptl/pthreaddef.h:#define CURRENT_STACK_FRAME __builtin_frame_address (0) However, for the purposes of memusage I think it is sufficient. Have you tested? -Stafford > -#ifndef GETSP > -# warning "GETSP is not defined for this architecture." > -# define GETSP 0 > -#endif > +#endif /* machine-sp.h */ > diff --git a/sysdeps/x86_64/memusage.h b/sysdeps/x86_64/memusage.h > deleted file mode 100644 > index 6652fc5da1..0000000000 > --- a/sysdeps/x86_64/memusage.h > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Copyright (C) 2001-2021 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/>. */ > - > -#define GETSP() ({ register uintptr_t stack_ptr asm ("rsp"); stack_ptr; }) > - > -#include <sysdeps/generic/memusage.h> > -- > 2.32.0 >
diff --git a/malloc/memusage.c b/malloc/memusage.c index 179dd1c683..a1c5475fdb 100644 --- a/malloc/memusage.c +++ b/malloc/memusage.c @@ -33,8 +33,9 @@ #include <sys/mman.h> #include <sys/time.h> -#include <memusage.h> #include <hp-timing.h> +#include <machine-sp.h> +#include <stackinfo.h> /* For _STACK_GROWS_UP */ /* Pointer to the real functions. These are determined used `dlsym' when really needed. */ @@ -146,10 +147,10 @@ update_data (struct header *result, size_t len, size_t old_len) the main thread and it is the first call to any of these functions. */ if (__glibc_unlikely (!start_sp)) - start_sp = GETSP (); + start_sp = __thread_stack_pointer (); - uintptr_t sp = GETSP (); -#ifdef STACK_GROWS_UPWARD + uintptr_t sp = __thread_stack_pointer (); +#ifdef _STACK_GROWS_UP /* This can happen in threads where we didn't catch the thread's stack early enough. */ if (__glibc_unlikely (sp < start_sp)) @@ -259,7 +260,7 @@ me (void) const char *outname; if (!start_sp) - start_sp = GETSP (); + start_sp = __thread_stack_pointer (); outname = getenv ("MEMUSAGE_OUTPUT"); if (outname != NULL && outname[0] != '\0' @@ -325,7 +326,7 @@ static void __attribute__ ((constructor)) init (void) { - start_sp = GETSP (); + start_sp = __thread_stack_pointer (); if (!initialized) me (); } diff --git a/sysdeps/aarch64/memusage.h b/sysdeps/aarch64/memusage.h deleted file mode 100644 index d29f7c7f89..0000000000 --- a/sysdeps/aarch64/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/alpha/memusage.h b/sysdeps/alpha/memusage.h deleted file mode 100644 index bbd28302e4..0000000000 --- a/sysdeps/alpha/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("$30"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/arc/memusage.h b/sysdeps/arc/memusage.h deleted file mode 100644 index e8a508a8ff..0000000000 --- a/sysdeps/arc/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Machine-specific definitions for memory usage profiling, ARC version. - Copyright (C) 2020-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/arm/memusage.h b/sysdeps/arm/memusage.h deleted file mode 100644 index 2ec8de22a5..0000000000 --- a/sysdeps/arm/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/csky/memusage.h b/sysdeps/csky/memusage.h deleted file mode 100644 index 392682e12b..0000000000 --- a/sysdeps/csky/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Machine-specific definitions for memory usage profiling, C-SKY version. - Copyright (C) 2018-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/hppa/memusage.h b/sysdeps/hppa/memusage.h deleted file mode 100644 index 25e8b94b3f..0000000000 --- a/sysdeps/hppa/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%r30"); stack_ptr; }) -#define STACK_GROWS_UPWARD 1 - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/i386/htl/machine-sp.h b/sysdeps/i386/htl/machine-sp.h index 6b64dea385..812223d783 100644 --- a/sysdeps/i386/htl/machine-sp.h +++ b/sysdeps/i386/htl/machine-sp.h @@ -22,7 +22,7 @@ /* Return the current stack pointer. */ #define __thread_stack_pointer() ({ \ - register void *__sp__ asm("esp"); \ + register uintptr_t __sp__ asm("esp"); \ __sp__; \ }) diff --git a/sysdeps/i386/i586/memusage.h b/sysdeps/i386/i586/memusage.h deleted file mode 100644 index c8170874d0..0000000000 --- a/sysdeps/i386/i586/memusage.h +++ /dev/null @@ -1 +0,0 @@ -#include "../i686/memusage.h" diff --git a/sysdeps/i386/i686/memusage.h b/sysdeps/i386/i686/memusage.h deleted file mode 100644 index 07b241263c..0000000000 --- a/sysdeps/i386/i686/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/i386/memusage.h b/sysdeps/i386/memusage.h deleted file mode 100644 index 07b241263c..0000000000 --- a/sysdeps/i386/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/ia64/memusage.h b/sysdeps/ia64/memusage.h deleted file mode 100644 index 33fd6ec899..0000000000 --- a/sysdeps/ia64/memusage.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#include <hp-timing.h> - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%r12"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/m68k/memusage.h b/sysdeps/m68k/memusage.h deleted file mode 100644 index c22d312aed..0000000000 --- a/sysdeps/m68k/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h index c70ea73a81..c03d64c4d9 100644 --- a/sysdeps/mach/hurd/i386/tls.h +++ b/sysdeps/mach/hurd/i386/tls.h @@ -295,7 +295,6 @@ out: asm ("movl %%gs:%P1,%0" : "=q" (_dtv) : "i" (offsetof (tcbhead_t, dtv)));\ _dtv; }) - /* Set the stack guard field in TCB head. */ #define THREAD_SET_STACK_GUARD(value) \ THREAD_SETMEM (THREAD_SELF, stack_guard, value) diff --git a/sysdeps/mach/i386/machine-sp.h b/sysdeps/mach/i386/machine-sp.h index 280f3b7a4d..54b2a16c01 100644 --- a/sysdeps/mach/i386/machine-sp.h +++ b/sysdeps/mach/i386/machine-sp.h @@ -22,7 +22,7 @@ /* Return the current stack pointer. */ #define __thread_stack_pointer() ({ \ - void *__sp__; \ + uintptr_t __sp__; \ __asm__ ("movl %%esp, %0" : "=r" (__sp__)); \ __sp__; \ }) diff --git a/sysdeps/microblaze/memusage.h b/sysdeps/microblaze/memusage.h deleted file mode 100644 index 516c0b4609..0000000000 --- a/sysdeps/microblaze/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("r1"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/mips/memusage.h b/sysdeps/mips/memusage.h deleted file mode 100644 index 64c558c81d..0000000000 --- a/sysdeps/mips/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("$29"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/nios2/memusage.h b/sysdeps/nios2/memusage.h deleted file mode 100644 index 6f1c78812d..0000000000 --- a/sysdeps/nios2/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Machine-specific definitions for memory usage profiling, Nios II version. - Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/powerpc/memusage.h b/sysdeps/powerpc/memusage.h deleted file mode 100644 index ab21f46258..0000000000 --- a/sysdeps/powerpc/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%r1"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/riscv/memusage.h b/sysdeps/riscv/memusage.h deleted file mode 100644 index b7b45791b9..0000000000 --- a/sysdeps/riscv/memusage.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Machine-specific definitions for memory usage profiling, RISC-V version. - Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/s390/memusage.h b/sysdeps/s390/memusage.h deleted file mode 100644 index 6219d79664..0000000000 --- a/sysdeps/s390/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr __asm__ ("15"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/sh/memusage.h b/sysdeps/sh/memusage.h deleted file mode 100644 index 87c3d40fdf..0000000000 --- a/sysdeps/sh/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("r15"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/sparc/memusage.h b/sysdeps/sparc/memusage.h deleted file mode 100644 index 13741e2577..0000000000 --- a/sysdeps/sparc/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2000-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h> diff --git a/sysdeps/generic/memusage.h b/sysdeps/unix/sysv/linux/machine-sp.h similarity index 68% rename from sysdeps/generic/memusage.h rename to sysdeps/unix/sysv/linux/machine-sp.h index 514bd058d2..257d09e60d 100644 --- a/sysdeps/generic/memusage.h +++ b/sysdeps/unix/sysv/linux/machine-sp.h @@ -1,4 +1,5 @@ -/* Copyright (C) 2000-2021 Free Software Foundation, Inc. +/* Machine-specific function to return the stack pointer. Linux version. + Copyright (C) 2021 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 @@ -15,11 +16,14 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#ifndef _MACHINE_SP_H +#define _MACHINE_SP_H -#include <limits.h> -#include <stdint.h> +/* Return the current stack pointer. */ +static inline uintptr_t +__thread_stack_pointer (void) +{ + return (uintptr_t) CURRENT_STACK_FRAME; +} -#ifndef GETSP -# warning "GETSP is not defined for this architecture." -# define GETSP 0 -#endif +#endif /* machine-sp.h */ diff --git a/sysdeps/x86_64/memusage.h b/sysdeps/x86_64/memusage.h deleted file mode 100644 index 6652fc5da1..0000000000 --- a/sysdeps/x86_64/memusage.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2001-2021 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/>. */ - -#define GETSP() ({ register uintptr_t stack_ptr asm ("rsp"); stack_ptr; }) - -#include <sysdeps/generic/memusage.h>