2002-09-17 Roland McGrath <roland@redhat.com>
[kopensolaris-gnu/glibc.git] / malloc / mtrace.c
index fddf137..d9960bd 100644 (file)
@@ -1,25 +1,23 @@
 /* More debugging hooks for `malloc'.
-   Copyright (C) 1991-1994,1996-1999,2000,2001 Free Software Foundation, Inc.
+   Copyright (C) 1991-1994,1996-2001,2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
                 Written April 2, 1991 by John Gilmore of Cygnus Support.
                 Based on mcheck.c by Mike Haertel.
 
-   This 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 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.
 
-   This library is distributed in the hope that it will be useful,
+   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.
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with this 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.
-
-   The author may be reached (Email) at the address mike@ai.mit.edu,
-   or (US mail) as Mike Haertel c/o Free Software Foundation.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
 
 #ifndef        _MALLOC_INTERNAL
 #define        _MALLOC_INTERNAL
 
 #ifdef _LIBC
 # include <libc-internal.h>
-#endif
 
-#ifdef USE_IN_LIBIO
 # include <libio/iolibio.h>
-# define fopen(f, n) _IO_fopen64 (f, n)
-# define setvbuf(s, b, f, l) _IO_setvbuf (s, b, f, l)
+# define setvbuf(s, b, f, l) INTUSE(_IO_setvbuf) (s, b, f, l)
+# define fwrite(buf, size, count, fp) _IO_fwrite (buf, size, count, fp)
+#endif
+
+#ifndef attribute_hidden
+# define attribute_hidden
 #endif
 
 #define TRACE_BUFFER_SIZE 512
@@ -57,10 +57,12 @@ __libc_lock_define_initialized (static, lock);
 /* Address to breakpoint on accesses to... */
 __ptr_t mallwatch;
 
+#ifdef USE_MTRACE_FILE
 /* File name and line number information, for callers that had
    the foresight to call through a macro.  */
 char *_mtrace_file;
 int _mtrace_line;
+#endif
 
 /* Old hook values.  */
 static void (*tr_old_free_hook) __P ((__ptr_t ptr, const __ptr_t));
@@ -87,19 +89,22 @@ internal_function
 tr_where (caller)
      const __ptr_t caller;
 {
+#ifdef USE_MTRACE_FILE
   if (_mtrace_file)
     {
       fprintf (mallstream, "@ %s:%d ", _mtrace_file, _mtrace_line);
       _mtrace_file = NULL;
     }
-  else if (caller != NULL)
+  else
+#endif
+    if (caller != NULL)
     {
 #ifdef HAVE_ELF
       Dl_info info;
       if (_dl_addr (caller, &info))
        {
          char *buf = (char *) "";
-         if (info.dli_sname && info.dli_sname[0])
+         if (info.dli_sname != NULL)
            {
              size_t len = strlen (info.dli_sname);
              buf = alloca (len + 6 + 2 * sizeof (void *));