2006-10-17 Jakub Jelinek <jakub@redhat.com>
* sunrpc/xdr_mem.c (xdrmem_setpos): Don't compare addresses
as signed longs, check for x_base + pos overflow.
* sunrpc/Makefile (tests): Add tst-xdrmem2.
* sunrpc/tst-xdrmem2.c: New test.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
_dl_lookup_symbol_x code.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* elf/dl-runtime.c: Include sysdep-cancel.h.
(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_*
instead of catomic_* macros.
* elf/dl-sym.c: Include sysdep-cancel.h.
(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-close.c: Include sysdep-cancel.h.
(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-open.c: Include sysdep-cancel.h.
(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
fastbin rather than end of fastbin array.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
body macro.
* sysdeps/x86_64/bits/atomic.h
(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
(catomic_decrement): Use correct body macro.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h: Add a unique prefix to all local variables
in macros.
* csu/tst-atomic.c (do_test): Test also catomic_* macros.
* include/link.h: Include <rtld-lowlevel.h>. Define struct
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.
* malloc/malloc.c (sYSMALLOc): Only call grow_heap if
(long) (MINSIZE + nb - old_size) is positive.
* malloc/arena.c (grow_heap): When growing bail even if new_size
is negative.
ld.so.
* malloc/malloc.c (_int_malloc): Use full list insert and not
shortcut which assumes the list is empty for large requests
too.
* elf/tst-addr1.c (do_test): Allow i.dli_sname "_IO_printf".
2006-08-27 Ulrich Drepper <drepper@redhat.com>
[BZ #2684]
* malloc/malloc.c (public_rEALLOc): Try harder by using other
arenas if allocation failed.
Patch mostly by Jan Edler <jan.edler@indexengines.com>.
waste bins[0..1].
(malloc_state): Reduce bins size by 2.
(_int_malloc): Fix test for large enough buffer for early termination.
When no unsorted block matches perfectly and an exiting block has
to be split, use full list insert and not shortcut which assumes
the list is empty.
platforms define as 1MB. For 64-bit platforms as 32MB. The lower
limit is needed to avoid the exploding of the address space
requirement for secondary heaps.
* malloc/arena.c (HEAP_MAX_SIZE): Define using
DEFAULT_MMAP_THRESHOLD_MAX if it is defined.
* sysdeps/mach/hurd/fchmodat.c: New file.
* sysdeps/mach/hurd/fchownat.c: New file.
* sysdeps/mach/hurd/fxstatat.c: New file.
* sysdeps/mach/hurd/fxstatat64.c: New file.
* sysdeps/mach/hurd/linkat.c: New file.
* sysdeps/mach/hurd/mkdirat.c: New file.
* sysdeps/mach/hurd/openat.c: New file.
* sysdeps/mach/hurd/openat64.c: New file.
* sysdeps/mach/hurd/symlinkat.c: New file.
* sysdeps/mach/hurd/unlinkat.c: New file.
* sysdeps/mach/hurd/xmknod.c (__xmknod): Just call __xmknodat.
Guts move to ...
* sysdeps/mach/hurd/xmknodat.c: ... here, new file.
* hurd/lookup-at.c: New file.
* hurd/Makefile (routines): Add it.
* hurd/hurd/fd.h: Declare __file_name_lookup_at,
__file_name_split_at and __directory_name_split_at.
* hurd/hurd/lookup.h: Declare {,__}hurd_directory_name_split.
* hurd/hurdlookup.c (__hurd_directory_name_split): Use __memrchr
unconditionally.
* sysdeps/mach/hurd/open.c: Define {,__,__libc_,}open64 as aliases.
* sysdeps/mach/hurd/open64.c: New file.
The correct value differs only on powerpc32, and for now changing it
there is causing more trouble than it's worth.
* malloc/arena.c: Add compile-time sanity check on padding calculation.
2006-03-05 Jakub Jelinek <jakub@redhat.com>
* malloc/arena.c (heap_info): Adjust the padding size if
MALLOC_ALIGNMENT > 2 * SIZE_SZ.
2005-10-14 Paul Eggert <eggert@cs.ucla.edu>
* malloc/obstack.c: Fix old comments. Update FSF snail mail address.
* malloc/obstack.h: Likewise.
[BZ #321]
Fix portability bugs encountered when porting to Itanium.
* malloc/obstack.h (obstack_empty_p, obstack_finish): Do not
assume that the "contents" member is suitably aligned. It is
not, for some hosts and alignments: e.g., Itanium, long-double.
* malloc/obstack.c (_obstack_begin, _obstack_begin_1,
_obstack_newchunk): Likewise.
* malloc/obstack.c: Include <stddef.h>, for size_t.
Include <inttypes.h>, <stdint.h> if needed and available.
(DEFAULT_ALIGNMENT): Now an enum constant, not a macro.
Use C89 offsetof rather than K&R trick.
Use the maximum alignment of uintmax_t, long double, void *
rather than the alignment of double.
(union fooround): Use uintmax_t, long double, void * members
rather than just long and double.
[BZ #321]
Fix portability bugs encountered when porting to the IBM iSeries,
where pointers are 256 bits wide and no integers are that wide.
* malloc/obstack.h (__PTR_TO_INT, __INT_TO_PTR): Remove.
All uses changed to:
(__BPTR_ALIGN, __PTR_ALIGN): New macros.
(struct _obstack_chunk.temp): Change from int to a union
of pointer and int. All uses changed.
[BZ #321]
* malloc/obstack.c (print_and_abort) [!_LIBC]:
Call fprintf (stderr, ...), not __fxprintf (NULL, ...).
[_LIBC && USE_IN_LIBIO]: Don't include <wchar.h>; no longer needed.
__alloc_dir.
(__alloc_dir): Only close descriptor on error if new parameter is true.
* sysdeps/unix/fdopendir.c (fdopendir): Pass extra argument to
__alloc_dir. Don't close fd on error.
* include/dirent.h (__alloc_dir): Adjust prototype.
* include/sys/mman.h (__mremap): Add ellipsis.
* malloc/memusage.c: Adjust mremap wrapper for optional additional
parameter.
* malloc/malloc.c (struct malloc_state): Replace max_fast with flags
fields.
(global_max_fast): New variable.
(set_max_fast): Change to not require arena parameter and to modify
global_max_fast. Change all callers.
(get_max_fast): New macro. Use this instead of directly accessing
now removed max_fast arena member.
(have_fastchunks): Use flags instead of max_fast.
(clear_fastchunks): Likewise.
(set_fastchunks): Likewise.
(contiguous): Likewise.
(noncontiguous): Likewise.
(set_noncontiguous): Likewise.
(set_contiguous): Likewise.
(malloc_init_state): Explicitly set FASTCHUNKS_BIT. Call set_max_fast
only for main arena.
* malloc/hooks.c (public_sET_STATe): Adjust set_max_fast use.
check_arrival_add_next_nodes): Avoid using uninitialized variable.
* malloc/memusage.c (dest): Fix a bunch of warnings on 32-bit arches.
* sysdeps/i386/fpu/libm-test-ulps: Update for GCC 4.0.x.
* malloc/arena.c (ptmalloc_lock_all): If global lock already taken
by the same thread, just bump the counter.
(ptmalloc_unlock_all): If counter for recursive locks hasn't reached
zero, don't do anything else.
* malloc/Makefile (tests): Add tst-mallocfork.
* malloc/tst-mallocfork.c: New file.
2005-08-17 Robert Love <rml@novell.com>
* sysdeps/unix/sysv/linux/sys/inotify.h: Add IN_MOVE_SELF event.
2005-08-19 Bruno Haible <bruno@clisp.org>
* intl/localealias.c (read_alias_file): In case of failure, close the
file descriptor and sort the array before returning.
2005-08-19 Ulrich Drepper <drepper@redhat.com>
* malloc/Makefile: Link libmemusage.so with ld.so.
* malloc/memusage.c: Use atomic operations for all counter and size
computations. Handle thread stacks.
* sysdeps/generic/memusage.h: Define memusage_cntr_t and
memusage_size_t.
* sysdeps/i386/i686/memusage.h: New file.
* include/atomic.h: Define atomic_max and atomic_min.
* debug/tst-chk1.c: Add tests for mbstowcs and wcstombs.
(_dl_close): If called recursively, just remember GC needs to be rerun
and decrease l_direct_opencount. Avoid GC if l_direct_opencount
decreased to 1. Rerun GC at the end if any destructor unloaded some
additional libraries.
* elf/Makefile: Add rules to build and run unload6 test.
* elf/unload6.c: New test.
* elf/unload6mod1.c: New file.
* elf/unload6mod2.c: New file.
* elf/unload6mod3.c: New file.
* malloc/hooks.c (mem2chunk_check): Add magic_p argument, set *magic_p
if magic_p is not NULL.
(top_check): Invoke MALLOC_FAILURE_ACTION if MORECORE failed.
(malloc_check): Fail if sz == -1.
(free_check): Adjust mem2chunk_check caller.
(realloc_check): Likewise. Fail if bytes == -1. If bytes == 0 and
oldmem != NULL, call free_check and return NULL. If reallocating
and returning NULL, invert magic byte again to make oldmem valid
region for further checking.
(memalign_check): Fail if bytes == -1.
* malloc/Makefile: Add rules to build and run tst-mcheck.
* malloc/tst-mcheck.c: New test.
mallopt appropriately.
* malloc/malloc.h: Define M_PERTURB.
* malloc/malloc.c (perturb_byte): New variable.
(alloc_perturb, free_perturb): New macros.
(_int_malloc): Before returning, overwrite the memory if this is
requested.
(_int_free): Overwrite freed memory if requested.
(mALLOPt): Handle M_PERTURB.
* test-skeleton.c: Add call to mallopt with M_PERTURB command.