diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | malloc/Makefile | 2 | ||||
-rw-r--r-- | malloc/memprof.c | 30 | ||||
-rw-r--r-- | sysdeps/alpha/memprof.h | 21 | ||||
-rw-r--r-- | sysdeps/generic/memprof.h | 35 | ||||
-rw-r--r-- | sysdeps/i386/memprof.h | 22 | ||||
-rw-r--r-- | sysdeps/m68k/memprof.h | 22 | ||||
-rw-r--r-- | sysdeps/mips/memprof.h | 21 | ||||
-rw-r--r-- | sysdeps/powerpc/memprof.h | 21 | ||||
-rw-r--r-- | sysdeps/sparc/memprof.h | 21 |
10 files changed, 179 insertions, 29 deletions
diff --git a/ChangeLog b/ChangeLog index ace01c875e..6a5520f429 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2000-02-02 Andreas Schwab <schwab@suse.de> + + * malloc/Makefile (distribute): Add memprof.h. + * malloc/memprof.c: Move definition of GETSP and GETTIME to new + header memprof.h. + * sysdeps/generic/memprof.h: New file. + * sysdeps/alpha/memprof.h: New file. + * sysdeps/i386/memprof.h: New file. + * sysdeps/m68k/memprof.h: New file. + * sysdeps/mips/memprof.h: New file. + * sysdeps/powerpc/memprof.h: New file. + * sysdeps/sparc/memprof.h: New file. + 2000-02-01 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/getresgid.c: Move... diff --git a/malloc/Makefile b/malloc/Makefile index 90c7fc4531..b06cf41d85 100644 --- a/malloc/Makefile +++ b/malloc/Makefile @@ -27,7 +27,7 @@ dist-headers := malloc.h headers := $(dist-headers) obstack.h mcheck.h tests := mallocbug tst-malloc -distribute = thread-m.h mtrace.pl mcheck-init.c stackinfo.h +distribute = thread-m.h mtrace.pl mcheck-init.c stackinfo.h memprof.h # Things which get pasted together into gmalloc.c. gmalloc-routines := malloc morecore diff --git a/malloc/memprof.c b/malloc/memprof.c index c91b7cc237..56d3ac556e 100644 --- a/malloc/memprof.c +++ b/malloc/memprof.c @@ -28,6 +28,8 @@ #include <unistd.h> #include <sys/time.h> +#include <memprof.h> + /* Pointer to the real functions. These are determined used `dlsym' when really needed. */ static void *(*mallocp) (size_t); @@ -74,34 +76,6 @@ static uintptr_t start_sp; #define peak_stack peak_use[1] #define peak_total peak_use[2] -#ifdef __i386__ -# define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) -#endif -#ifdef __alpha__ -# define GETSP() ({ register uintptr_t stack_ptr asm ("$30"); stack_ptr; }) -#endif -#ifdef __sparc__ -# define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) -#endif -#ifdef __powerpc__ -# define GETSP() ({ register uintptr_t stack_ptr asm ("%r1"); stack_ptr; }) -#endif - -#ifdef __i386__ -# define GETTIME(low,high) asm ("rdtsc" : "=a" (low), "=d" (high)) -#endif -#ifndef GETTIME -# define GETTIME(low,high) \ - { \ - struct timeval tval; \ - uint64_t usecs; \ - gettimeofday (&tval, NULL); \ - usecs = (uint64_t) tval.tv_usec + (uint64_t) tval.tv_usec * 1000000; \ - low = usecs & 0xffffffff; \ - high = usecs >> 32; \ - } -#endif - #define DEFAULT_BUFFER_SIZE 1024 static size_t buffer_size; diff --git a/sysdeps/alpha/memprof.h b/sysdeps/alpha/memprof.h new file mode 100644 index 0000000000..462b5ce1c2 --- /dev/null +++ b/sysdeps/alpha/memprof.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("$30"); stack_ptr; }) + +#include <sysdeps/generic/memprof.h> diff --git a/sysdeps/generic/memprof.h b/sysdeps/generic/memprof.h new file mode 100644 index 0000000000..ce94b7338d --- /dev/null +++ b/sysdeps/generic/memprof.h @@ -0,0 +1,35 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + +#ifndef GETSP +# warning "GETSP is not defined for this architecture." +# define GETSP 0 +#endif + +#ifndef GETTIME +# define GETTIME(low,high) \ + { \ + struct timeval tval; \ + uint64_t usecs; \ + gettimeofday (&tval, NULL); \ + usecs = (uint64_t) tval.tv_usec + (uint64_t) tval.tv_usec * 1000000; \ + low = usecs & 0xffffffff; \ + high = usecs >> 32; \ + } +#endif diff --git a/sysdeps/i386/memprof.h b/sysdeps/i386/memprof.h new file mode 100644 index 0000000000..c1b047f556 --- /dev/null +++ b/sysdeps/i386/memprof.h @@ -0,0 +1,22 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) +#define GETTIME(low,high) asm ("rdtsc" : "=a" (low), "=d" (high)) + +#include <sysdeps/generic/memprof.h> diff --git a/sysdeps/m68k/memprof.h b/sysdeps/m68k/memprof.h new file mode 100644 index 0000000000..5fd1cf4282 --- /dev/null +++ b/sysdeps/m68k/memprof.h @@ -0,0 +1,22 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + + +#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) + +#include <sysdeps/generic/memprof.h> diff --git a/sysdeps/mips/memprof.h b/sysdeps/mips/memprof.h new file mode 100644 index 0000000000..93f2917d8c --- /dev/null +++ b/sysdeps/mips/memprof.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("$29"); stack_ptr; }) + +#include <sysdeps/generic/memprof.h> diff --git a/sysdeps/powerpc/memprof.h b/sysdeps/powerpc/memprof.h new file mode 100644 index 0000000000..05c8e78b38 --- /dev/null +++ b/sysdeps/powerpc/memprof.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("%r1"); stack_ptr; }) + +#include <sysdeps/generic/memprof.h> diff --git a/sysdeps/sparc/memprof.h b/sysdeps/sparc/memprof.h new file mode 100644 index 0000000000..090e02ae88 --- /dev/null +++ b/sysdeps/sparc/memprof.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2000 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("%sp"); stack_ptr; }) + +#include <sysdeps/generic/memprof.h> |