diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-09-12 22:37:19 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-09-12 22:37:19 +0000 |
commit | 8dab36a1198f257efaf7ddf71b768914ed50c898 (patch) | |
tree | 08bcf658856536df147f2f9d0e5b5b04ecaae6cc /malloc | |
parent | 6fee33627549f407f3621fde054d495285e23af5 (diff) | |
download | glibc-8dab36a1198f257efaf7ddf71b768914ed50c898.tar glibc-8dab36a1198f257efaf7ddf71b768914ed50c898.tar.gz glibc-8dab36a1198f257efaf7ddf71b768914ed50c898.tar.bz2 glibc-8dab36a1198f257efaf7ddf71b768914ed50c898.zip |
Update.
2003-09-12 Ulrich Drepper <drepper@redhat.com>
* grp/Makefile (CFLAGS-getgrgid_r.c, CFLAGS-getgrnam_r.c,
CFLAGS-fgetgrent.c, CFLAGS-fgetgrent_r.c, CFLAGS-putgrent.c,
CFLAGS-initgroups.c, CFLAGS-getgrgid.c): Add -fexceptions.
* inet/Makefile (CFLAGS-either_ntoh.c, CFLAGS-either_hton.c,
CFLAGS-getnetgrent.c, CFLAGS-getnetgrent_r.c): Likewise.
* io/Makefile (CFLAGS-posix_fallocate.c, CFLAGS-posix_fallocate64.c):
Likewise.
* misc/Makefile (CFLAGS-err.c): Likewise.
* posix/Makefile (CFLAGS-getaddrinfo.c, CFLAGS-spawn.c,
CFLAGS-spawnp.c, CFLAGS-spawni.c, CFLAGS-pause.c, CFLAGS-glob.c,
CFLAGS-glob64.c): Likewise.
* pwd/Makefile (CFLAGS-getpw.c): Likewise.
* shadow/Makefile (CFLAGS-fgetspent.c, CFLAGS-fgetspent_r.c,
CFLAGS-putspent.c, CFLAGS-getspnam.c, CFLAGS-getspnam_r.c): Likewise.
* stdio-common/Makefile (CFLAGS-cuserid.c): Likewise.
* sunrpc/Makefile (CFLAGS-openchild.c): Likewise.
* stdlib/Makefile (CFLAGS-mkstemp.c): Remove definition.
* libio/stdio.h: Remove __THROW from cuserid prototype.
* locale/loadarchive.c: Use only non-cancelable interfaces.
* resolv/herror.c (herror): Likewise.
* malloc/hooks.c: Before using IO stream mark stream so it uses
only non-cancelable interfaces.
* malloc/malloc.c: Likewise.
* posix/getopt.c: Likewise.
2003-09-11 Jakub Jelinek <jakub@redhat.com>
* Makerules (LDFLAGS-c.so): Remove -u __register_frame.
2003-09-12 Ulrich Drepper <drepper@redhat.com>
* stdio-common/stdio_ext.h: Mark most functions with __THROW.
* misc/err.h: Remove __THROW from all prototypes.
* posix/getopt.h (__THROW): Define if not already defined. Add
__THROW to the getopt functions.
2003-09-11 Ulrich Drepper <drepper@redhat.com>
* io/Makefile (CFLAGS-lockf.c): Add -fexceptions.
(CFLAGS-fts.c): Likewise.
* io/fcntl.h: Remove __THROW from lockf prototypes.
* io/fts.h: Remove most __THROW.
Diffstat (limited to 'malloc')
-rw-r--r-- | malloc/hooks.c | 52 | ||||
-rw-r--r-- | malloc/malloc.c | 22 |
2 files changed, 69 insertions, 5 deletions
diff --git a/malloc/hooks.c b/malloc/hooks.c index cf6642c930..020657a368 100644 --- a/malloc/hooks.c +++ b/malloc/hooks.c @@ -106,7 +106,18 @@ __malloc_check_init() __realloc_hook = realloc_check; __memalign_hook = memalign_check; if(check_action & 1) - fprintf(stderr, "malloc: using debugging hooks\n"); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "malloc: using debugging hooks\n"); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } } /* A simple, standard set of debugging hooks. Overhead is `only' one @@ -224,7 +235,18 @@ top_check() t == initial_top(&main_arena)) return 0; if(check_action & 1) - fprintf(stderr, "malloc: top chunk is corrupt\n"); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "malloc: top chunk is corrupt\n"); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if(check_action & 2) abort(); @@ -278,7 +300,18 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller; if(!p) { (void)mutex_unlock(&main_arena.mutex); if(check_action & 1) - fprintf(stderr, "free(): invalid pointer %p!\n", mem); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "free(): invalid pointer %p!\n", mem); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if(check_action & 2) abort(); return; @@ -315,7 +348,18 @@ realloc_check(oldmem, bytes, caller) (void)mutex_unlock(&main_arena.mutex); if(!oldp) { if(check_action & 1) - fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if(check_action & 2) abort(); return malloc_check(bytes, NULL); diff --git a/malloc/malloc.c b/malloc/malloc.c index 6b89083880..442f17e71a 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -4139,7 +4139,18 @@ _int_free(mstate av, Void_t* mem) if (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0)) { if (check_action & 1) - fprintf (stderr, "free(): invalid pointer %p!\n", mem); + { +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif + fprintf (stderr, "free(): invalid pointer %p!\n", mem); +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif + } if (check_action & 2) abort (); return; @@ -5108,6 +5119,11 @@ void mSTATs() if(__malloc_initialized < 0) ptmalloc_init (); +#ifdef _LIBC + _IO_flockfile (stderr); + int old_flags2 = ((_IO_FILE *) stderr)->_flags2; + ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; +#endif for (i=0, ar_ptr = &main_arena;; i++) { (void)mutex_lock(&ar_ptr->mutex); mi = mALLINFo(ar_ptr); @@ -5152,6 +5168,10 @@ void mSTATs() fprintf(stderr, "locked total = %10ld\n", stat_lock_direct + stat_lock_loop + stat_lock_wait); #endif +#ifdef _LIBC + ((_IO_FILE *) stderr)->_flags2 |= old_flags2; + _IO_funlockfile (stderr); +#endif } |