Mercurial > hg > octave-nkf > gnulib-hg
changeset 17783:4761a2b66270
maint: add missing ChangeLog entries for Modra's obstack changes
See: http://lists.gnu.org/archive/html/bug-gnulib/2014-10/msg00072.html
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Wed, 29 Oct 2014 18:03:53 -0700 |
parents | f6c039e09a3b |
children | f8a2b0c3de24 |
files | ChangeLog |
diffstat | 1 files changed, 110 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -27,6 +27,116 @@ * lib/obstack.c (_obstack_newchunk): Fail if the size calculation overflows, e.g., when adding the alignment. +2014-10-29 Alan Modra <amodra@gmail.com> + + obstack: 64-bit obstack support, part 3 + This finally enables full 64-bit obstack support. The glibc + shared library specific code is removed from obstack.c too, and + the error handling code conditionally compiled under control of + another macro, _OBSTACK_NO_ERROR_HANDLER. + * lib/obstack.h: Include string.h earlier. + (_OBSTACK_INTERFACE_VERSION): Define. + (_OBSTACK_SIZE_T, _CHUNK_SIZE_T): Define as size_t for version 2. + * lib/obstack.c: Don't include shlib-compat.h. + (OBSTACK_INTERFACE_VERSION): Delete. + (_OBSTACK_ELIDE_CODE): Rename from ELIDE_CODE. Define when version 1 + glibc code is compatible with version 2. Don't include stdio.h for + __GNU_LIBRARY. + (obstack_exit_failure, print_and_abort, obstack_alloc_failed_handler): + Omit when _OBSTACK_NO_ERROR_HANDLER defined. Include stdio.h here. + (_obstack_compat, _obstack, _obstack_newchunk, obstack_free): Delete + glibc shared library specific source. + + obstack: 64-bit obstack support, part 2 + This gets us 4G obstack support, without changing ABI + compatibility, apart from possibly introducing some + signed/unsigned comparison warnings in code that uses obstack.h. + a) Replace "int" size parameters, return values, and macro local vars + with _OBSTACK_SIZE_T, an "unsigned int" for now. + b) Make obstack.chunk_size a _CHUNK_SIZE_T, an "unsigned long" for now. + c) Make all obstack macros checking available room use obstack_room. + "next_free + desired > chunk_limit" may wrap the lhs for chunks + allocated near the top of memory. + d) Use unsigned comparisons, and macro locals to support >2G on 32-bit. + * lib/obstack.h (_OBSTACK_SIZE_T): Define. Use throughout + in place of "int" size parameters, return values and local vars. + (_CHUNK_SIZE_T): Define. + (struct obstack): Make chunk_size a _CHUNK_SIZE_T. Make temp + union use an _OBSTACK_SIZE_T integer type. + For __GNUC__ versions of the following macros... + (obstack_room): Rename local var. + (obstack_make_room): Use obstack_room. + (obstack_grow, obstack_grow0, obstack_1grow, obstack_ptr_grow, + obstack_int_grow, obstack_blank): Likewise. + (obstack_finish): Use unsigned comparison when comparing aligned + next_free against chunk_limit. + (obstack_free): Cast OBJ to remove possible const qualifier. + For !__GNUC__ versions of the following macros... + (obstack_make_room): Use obstack_room. + (obstack_grow, obstack_grow0, obstack_1grow, obstack_ptr_grow, + obstack_int_grow, obstack_blank): Likewise. + (obstack_finish): Use unsigned comparision when comparing aligned + next_free against chunk_limit. + (obstack_free): Use temp.p and same comparisons as __GNUC__ version. + * lib/obstack.c (_obstack_begin_worker): Make "size" parameter + _OBSTACK_SIZE_T. + (_obstack_begin, _obstack_begin_1): Likewise. + (_obstack_newchunk): Likewise for length parameter. Use size_t locals. + (_obstack_memory_used): Return and use _OBSTACK_SIZE_T local. + + obstack: 64-bit obstack support, part 1 + a) Correct calls to alloc function, to use a size_t arg. "long" is + just wrong on targets like x86_64-mingw64 where "long" is 32 bits + and "size_t" 64 bits. + b) Consolidate _obstack_begin and _obstack_begin1 code. + * lib/obstack.h (struct obstack <chunkfun>): Correct prototype to + use "size_t" rather than "long". + (_obstack_begin, _obstack_begin1): Likewise. + (obstack_init, obstack_begin, obstack_specify_allocation_with_arg, + obstack_chunkfun): Update alloc function casts. + * lib/obstack.c (CALL_CHUNKFUN): Update chunkfun cast. + (chunkfun_type, freefun_type): New typdefs. + (_obstack_begin_worker): Split out from .. + (_obstack_begin, _obstack_begin_1): ..here. + + obstack: tidy part 2 + a) Don't be concerned about "not polluting the namespace with stddef.h + symbols" in obstack.h, since gnulib string.h includes stddef.h + anyway, and it seems unlikely that anyone would care. + b) Don't roll our own slow memcpy in _obstack_newchunk. + c) Rename obstack_free to _obstack_free. This makes the naming + consistent with other obstack functions and obviates the need for + __obstack_free. Ancient obstack.c defined both obstack_free and + _obstack_free. We continue to do that for _LIBC via an alias. + d) Miscellaneous macro fixes. The expression used to test for gcc-2.8 + is clever, but nowadays gcc warns on undefined macros. You'll get + an undefined macro warning if simulating an old gcc with -U__GNUC__ + -U__GNUC_MINOR__ -D__GNUC__=1. + * lib/obstack.h: Include stddef.h unconditionally. Formatting fixes. + (PTR_INT_TYPE): Delete, replace with ptrdiff_t. + (__obstack_free): Delete, update refs. + (_obstack_free): Rename from obstack_free. + (__extension__): Avoid undefined macro warning for __GNUC_MINOR__. + (obstack_object_size, obstack_room): Parenthesise !__GNUC__ versions. + * lib/obstack.c: Don't include stddef.h. + (COPYING_UNIT): Delete. + (_obstack_begin): Formatting fix. + (_obstack_newchunk): Use memcpy to move existing object to new chunk. + (_obstack_free): Rename from __obstack_free, update alias. Move + undef of obstack_free to where it is needed. + + obstack: tidy part 1 + a) Rename temp fields. temp.tempint and temp.tempptr just looks ugly + to me, and result in overlong lines after later patches. + b) Move error handling code, to avoid a forward declaration and to + simplify later patches in this series. + * lib/obstack.h (struct obstack <temp>): Rename fields of union + and update all uses. + * lib/obstack.c: Include stdlib.h earlier. + (obstack_exit_failure, obstack_alloc_failed_handler): Move later + in file. + (print_and_abort): Remove now redundant forward declaration. + 2014-10-24 Paul Eggert <eggert@cs.ucla.edu> socketlib, sockets, sys_socket: Use AC_REQUIRE to pacify autoconf.