salt_len = MIN (strcspn (salt, "$"), 8);
key_len = strlen (key);
- if ((key - (char *) 0) % __alignof__ (md5_uint32) != 0)
+ if (((uintptr_t) key) % __alignof__ (md5_uint32) != 0)
{
char *tmp;
key = copied_key =
memcpy (tmp + __alignof__ (md5_uint32)
- - (tmp - (char *) 0) % __alignof__ (md5_uint32),
+ - ((uintptr_t) tmp) % __alignof__ (md5_uint32),
key, key_len);
- assert ((key - (char *) 0) % __alignof__ (md5_uint32) == 0);
+ assert (((uintptr_t) key) % __alignof__ (md5_uint32) == 0);
}
- if ((salt - (char *) 0) % __alignof__ (md5_uint32) != 0)
+ if (((uintptr_t) salt) % __alignof__ (md5_uint32) != 0)
{
char *tmp = (char *) alloca (salt_len + __alignof__ (md5_uint32));
salt = copied_salt =
memcpy (tmp + __alignof__ (md5_uint32)
- - (tmp - (char *) 0) % __alignof__ (md5_uint32),
+ - ((uintptr_t) tmp) % __alignof__ (md5_uint32),
salt, salt_len);
- assert ((salt - (char *) 0) % __alignof__ (md5_uint32) == 0);
+ assert (((uintptr_t) salt) % __alignof__ (md5_uint32) == 0);
}
#ifdef USE_NSS
salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX);
key_len = strlen (key);
- if ((key - (char *) 0) % __alignof__ (uint32_t) != 0)
+ if (((uintptr_t) key) % __alignof__ (uint32_t) != 0)
{
char *tmp;
key = copied_key =
memcpy (tmp + __alignof__ (uint32_t)
- - (tmp - (char *) 0) % __alignof__ (uint32_t),
+ - ((uintptr_t) tmp) % __alignof__ (uint32_t),
key, key_len);
- assert ((key - (char *) 0) % __alignof__ (uint32_t) == 0);
+ assert (((uintptr_t) key) % __alignof__ (uint32_t) == 0);
}
- if ((salt - (char *) 0) % __alignof__ (uint32_t) != 0)
+ if (((uintptr_t) salt) % __alignof__ (uint32_t) != 0)
{
char *tmp = (char *) alloca (salt_len + __alignof__ (uint32_t));
alloca_used += salt_len + __alignof__ (uint32_t);
salt = copied_salt =
memcpy (tmp + __alignof__ (uint32_t)
- - (tmp - (char *) 0) % __alignof__ (uint32_t),
+ - ((uintptr_t) tmp) % __alignof__ (uint32_t),
salt, salt_len);
- assert ((salt - (char *) 0) % __alignof__ (uint32_t) == 0);
+ assert (((uintptr_t) salt) % __alignof__ (uint32_t) == 0);
}
#ifdef USE_NSS
salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX);
key_len = strlen (key);
- if ((key - (char *) 0) % __alignof__ (uint64_t) != 0)
+ if (((uintptr_t) key) % __alignof__ (uint64_t) != 0)
{
char *tmp;
key = copied_key =
memcpy (tmp + __alignof__ (uint64_t)
- - (tmp - (char *) 0) % __alignof__ (uint64_t),
+ - ((uintptr_t) tmp) % __alignof__ (uint64_t),
key, key_len);
- assert ((key - (char *) 0) % __alignof__ (uint64_t) == 0);
+ assert (((uintptr_t) key) % __alignof__ (uint64_t) == 0);
}
- if ((salt - (char *) 0) % __alignof__ (uint64_t) != 0)
+ if (((uintptr_t) salt) % __alignof__ (uint64_t) != 0)
{
char *tmp = (char *) alloca (salt_len + __alignof__ (uint64_t));
salt = copied_salt =
memcpy (tmp + __alignof__ (uint64_t)
- - (tmp - (char *) 0) % __alignof__ (uint64_t),
+ - ((uintptr_t) tmp) % __alignof__ (uint64_t),
salt, salt_len);
- assert ((salt - (char *) 0) % __alignof__ (uint64_t) == 0);
+ assert (((uintptr_t) salt) % __alignof__ (uint64_t) == 0);
}
#ifdef USE_NSS
/* Consume any unused space in the last page of our data segment. */
extern int _end attribute_hidden;
alloc_ptr = &_end;
- alloc_end = (void *) 0 + (((alloc_ptr - (void *) 0)
+ alloc_end = (void *) 0 + ((((uintptr_t) alloc_ptr)
+ GLRO(dl_pagesize) - 1)
& ~(GLRO(dl_pagesize) - 1));
}
/* Make sure the allocation pointer is ideally aligned. */
- alloc_ptr = (void *) 0 + (((alloc_ptr - (void *) 0) + MALLOC_ALIGNMENT - 1)
+ alloc_ptr = (void *) 0 + ((((uintptr_t) alloc_ptr) + MALLOC_ALIGNMENT - 1)
& ~(MALLOC_ALIGNMENT - 1));
if (alloc_ptr + n >= alloc_end || n >= -(uintptr_t) alloc_ptr)
argument to 'step' and 'advance' was defined only in regexp.h,
as its definition depended on macros defined by the user. */
+#include <stdint.h>
#include <regex.h>
#include <shlib-compat.h>
regmatch_t match; /* We only need info about the full match. */
expbuf += __alignof (regex_t *);
- expbuf -= (expbuf - ((const char *) 0)) % __alignof__ (regex_t *);
+ expbuf -= ((uintptr_t) expbuf) % __alignof__ (regex_t *);
if (__regexec ((const regex_t *) expbuf, string, 1, &match, REG_NOTEOL)
== REG_NOMATCH)
regmatch_t match; /* We only need info about the full match. */
expbuf += __alignof__ (regex_t *);
- expbuf -= (expbuf - ((const char *) 0)) % __alignof__ (regex_t *);
+ expbuf -= ((uintptr_t) expbuf) % __alignof__ (regex_t *);
if (__regexec ((const regex_t *) expbuf, string, 1, &match, REG_NOTEOL)
== REG_NOMATCH
/* Now allocate the buffer the array for the group members. We must
align the pointer. */
- align = ((__alignof__ (char *) - (p - ((char *) 0)))
+ align = ((__alignof__ (char *) - ((uintptr_t) p))
& (__alignof__ (char *) - 1));
total_len = (align + (1 + gr_resp.gr_mem_cnt) * sizeof (char *)
+ gr_resp.gr_name_len + gr_resp.gr_passwd_len);
/* A first check whether the buffer is sufficiently large is possible. */
/* Now allocate the buffer the array for the group members. We must
align the pointer and the base of the h_addr_list pointers. */
- align1 = ((__alignof__ (char *) - (cp - ((char *) 0)))
+ align1 = ((__alignof__ (char *) - ((uintptr_t) cp))
& (__alignof__ (char *) - 1));
- align2 = ((__alignof__ (char *) - ((cp + align1 + hst_resp.h_name_len)
- - ((char *) 0)))
+ align2 = ((__alignof__ (char *) - ((uintptr_t) (cp + align1 + hst_resp.h_name_len)))
& (__alignof__ (char *) - 1));
if (buflen < (align1 + hst_resp.h_name_len + align2
+ ((hst_resp.h_aliases_cnt + hst_resp.h_addr_list_cnt
/* A first check whether the buffer is sufficiently large is possible. */
/* Now allocate the buffer the array for the group members. We must
align the pointer and the base of the h_addr_list pointers. */
- align1 = ((__alignof__ (char *) - (cp - ((char *) 0)))
+ align1 = ((__alignof__ (char *) - ((uintptr_t) cp))
& (__alignof__ (char *) - 1));
- align2 = ((__alignof__ (char *) - ((cp + align1 + serv_resp.s_name_len
- + serv_resp.s_proto_len)
- - ((char *) 0)))
+ align2 = ((__alignof__ (char *) - ((uintptr_t) (cp + align1 + serv_resp.s_name_len
+ + serv_resp.s_proto_len)))
& (__alignof__ (char *) - 1));
if (buflen < (align1 + serv_resp.s_name_len + serv_resp.s_proto_len
+ align2
/* Adjust the pointer so it is aligned for
storing pointers. */
first_unused += __alignof__ (char *) - 1;
- first_unused -= ((first_unused - (char *) 0)
+ first_unused -= (((uintptr_t) first_unused)
% __alignof__ (char *));
result->alias_members = (char **) first_unused;
/* Adjust the pointer so it is aligned for storing pointers. */
eol += __alignof__ (char *) - 1;
- eol -= (eol - (char *) 0) % __alignof__ (char *);
+ eol -= ((uintptr_t) eol) % __alignof__ (char *);
/* We will start the storage here for the vector of pointers. */
list = (char **) eol;
else
{
if ((s & (sizeof (uint32_t) - 1)) == 0
- && ((char *) b - (char *) 0) % __alignof__ (uint32_t) == 0)
+ && ((uintptr_t) b) % __alignof__ (uint32_t) == 0)
{
if (s == sizeof (uint32_t))
p.var = 0;
else if (s == sizeof (uint64_t)
- && ((char *) b - (char *) 0) % __alignof__ (uint64_t) == 0)
+ && ((uintptr_t) b) % __alignof__ (uint64_t) == 0)
p.var = 1;
else if ((s & (sizeof (unsigned long) - 1)) == 0
- && ((char *) b - (char *) 0)
+ && ((uintptr_t) b)
% __alignof__ (unsigned long) == 0)
p.var = 2;
}
break up that far. When the user program examines its break, it
will see this new value and not clobber our data. */
__sbrk (GLRO(dl_pagesize)
- - ((_end - (char *) 0) & (GLRO(dl_pagesize) - 1)));
+ - (((uintptr_t) _end) & (GLRO(dl_pagesize) - 1)));
/* If this is a SUID program we make sure that FDs 0, 1, and 2 are
allocated. If necessary we are doing it ourself. If it is not