Fix clang 6.0.0 compiler warnings in binutils
Latest clang git has a warning -Wnull-pointer-arithmetic which will trigger a -Werror failure. Addition and subtraction from a null pointer is undefined behaviour and could be optimized into anything. Furthermore, using the difference between two pointers and casting the result back to a pointer is not portable since the size of ptrdiff_t does not necessary have to be the same as size of void* (this happens e.g. on CHERI). Using intptr_t instead fixes this portability issue and the compiler warning. Submitted by; Alexander Richardson Obtained from: CheriBSD Differential Revision: https://reviews.freebsd.org/D12928 MFC after: 3 days
This commit is contained in:
parent
7eba7096e2
commit
3fdd5dd1e5
@ -4815,7 +4815,7 @@ _bfd_elf_archive_symbol_lookup (bfd *abfd,
|
||||
len = strlen (name);
|
||||
copy = bfd_alloc (abfd, len);
|
||||
if (copy == NULL)
|
||||
return (struct elf_link_hash_entry *) 0 - 1;
|
||||
return (struct elf_link_hash_entry *)(intptr_t)-1;
|
||||
|
||||
first = p - name + 1;
|
||||
memcpy (copy, name, first);
|
||||
@ -4927,7 +4927,7 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
h = archive_symbol_lookup (abfd, info, symdef->name);
|
||||
if (h == (struct elf_link_hash_entry *) 0 - 1)
|
||||
if (h == (struct elf_link_hash_entry *)(intptr_t)-1)
|
||||
goto error_return;
|
||||
|
||||
if (h == NULL)
|
||||
|
@ -119,11 +119,11 @@ extern "C" {
|
||||
may ignore the byte-within-word field of the pointer. */
|
||||
|
||||
#ifndef __PTR_TO_INT
|
||||
# define __PTR_TO_INT(P) ((P) - (char *) 0)
|
||||
# define __PTR_TO_INT(P) ((intptr_t)(P))
|
||||
#endif
|
||||
|
||||
#ifndef __INT_TO_PTR
|
||||
# define __INT_TO_PTR(P) ((P) + (char *) 0)
|
||||
# define __INT_TO_PTR(P) ((void*)(intptr_t)(P))
|
||||
#endif
|
||||
|
||||
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
|
||||
@ -427,7 +427,7 @@ __extension__ \
|
||||
__o1->maybe_empty_object = 1; \
|
||||
__o1->next_free \
|
||||
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
|
||||
& ~ (__o1->alignment_mask)); \
|
||||
& ~(intptr_t)(__o1->alignment_mask)); \
|
||||
if (__o1->next_free - (char *)__o1->chunk \
|
||||
> __o1->chunk_limit - (char *)__o1->chunk) \
|
||||
__o1->next_free = __o1->chunk_limit; \
|
||||
|
Loading…
Reference in New Issue
Block a user