2025-05-05 Paul Eggert <eggert@cs.ucla.edu>
+ obstack: size_t → _OBSTACK_CHUNK_SIZE_T
+ * lib/obstack.c (_obstack_begin, _obstack_begin_1):
+ * lib/obstack.in.h (struct obstack, obstack_init, obstack_begin)
+ (obstack_specify_allocation)
+ (obstack_specify_allocation_with_arg, obstack_chunkfun):
+ Use _OBSTACK_CHUNK_SIZE_T instead of size_t in places where
+ glibc uses unsigned long rather than size_t. This makes
+ no difference with Gnulib, but should help allay any concerns
+ that merging Gnulib with glibc might change glibc’s ABI
+ on obsolescent glibc platforms where size_t is unsigned int.
+
obstack: rename to _OBSTACK_CHUNK_SIZE_T
* lib/obstack.in.h (_OBSTACK_CHUNK_SIZE_T):
Rename from _CHUNK_SIZE_T, for namespace prefix consistency.
int
_obstack_begin (struct obstack *h,
_OBSTACK_INDEX_T size, _OBSTACK_INDEX_T alignment,
- void *(*chunkfun) (size_t),
+ void *(*chunkfun) (_OBSTACK_CHUNK_SIZE_T),
void (*freefun) (void *))
{
h->chunkfun.plain = chunkfun;
int
_obstack_begin_1 (struct obstack *h,
_OBSTACK_INDEX_T size, _OBSTACK_INDEX_T alignment,
- void *(*chunkfun) (void *, size_t),
+ void *(*chunkfun) (void *, _OBSTACK_CHUNK_SIZE_T),
void (*freefun) (void *, void *),
void *arg)
{
/* These prototypes vary based on 'use_extra_arg'. */
union
{
- void *(*plain) (size_t);
- void *(*extra) (void *, size_t);
+ void *(*plain) (_OBSTACK_CHUNK_SIZE_T);
+ void *(*extra) (void *, _OBSTACK_CHUNK_SIZE_T);
} chunkfun;
union
{
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *,
_OBSTACK_INDEX_T, _OBSTACK_INDEX_T,
- void *(*) (size_t), void (*) (void *));
+ void *(*) (_OBSTACK_CHUNK_SIZE_T),
+ void (*) (void *));
extern int _obstack_begin_1 (struct obstack *,
_OBSTACK_INDEX_T, _OBSTACK_INDEX_T,
- void *(*) (void *, size_t),
+ void *(*) (void *, _OBSTACK_CHUNK_SIZE_T),
void (*) (void *, void *), void *);
extern _OBSTACK_INDEX_T _obstack_memory_used (struct obstack *)
__attribute_pure__;
/* To prevent prototype warnings provide complete argument list. */
#define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
- _OBSTACK_CAST (void *(*) (size_t), obstack_chunk_alloc), \
+ _OBSTACK_CAST (void *(*) (_OBSTACK_CHUNK_SIZE_T), \
+ obstack_chunk_alloc), \
_OBSTACK_CAST (void (*) (void *), obstack_chunk_free))
#define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
- _OBSTACK_CAST (void *(*) (size_t), obstack_chunk_alloc), \
+ _OBSTACK_CAST (void *(*) (_OBSTACK_CHUNK_SIZE_T), \
+ obstack_chunk_alloc), \
_OBSTACK_CAST (void (*) (void *), obstack_chunk_free))
#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
- _OBSTACK_CAST (void *(*) (size_t), chunkfun), \
+ _OBSTACK_CAST (void *(*) (_OBSTACK_CHUNK_SIZE_T), \
+ chunkfun), \
_OBSTACK_CAST (void (*) (void *), freefun))
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
- _OBSTACK_CAST (void *(*) (void *, size_t), chunkfun), \
+ _OBSTACK_CAST (void *(*) (void *, _OBSTACK_CHUNK_SIZE_T), \
+ chunkfun), \
_OBSTACK_CAST (void (*) (void *, void *), freefun), arg)
#define obstack_chunkfun(h, newchunkfun) \
- ((void) ((h)->chunkfun.extra = (void *(*) (void *, size_t)) (newchunkfun)))
+ ((void) \
+ ((h)->chunkfun.extra = _OBSTACK_CAST (void *(*) (void *, \
+ _OBSTACK_CHUNK_SIZE_T), \
+ newchunkfun)))
#define obstack_freefun(h, newfreefun) \
((void) ((h)->freefun.extra = (void *(*) (void *, void *)) (newfreefun)))