svn commit: r327471 - in stable: 10/contrib/binutils/bfd 10/contrib/binutils/include 11/contrib/binutils/bfd 11/contrib/binutils/include 9/contrib/binutils/bfd 9/contrib/binutils/include
Dimitry Andric
dim at FreeBSD.org
Mon Jan 1 20:39:16 UTC 2018
Author: dim
Date: Mon Jan 1 20:39:12 2018
New Revision: 327471
URL: https://svnweb.freebsd.org/changeset/base/327471
Log:
MFC r327164:
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
Modified:
stable/9/contrib/binutils/bfd/elflink.c
stable/9/contrib/binutils/include/obstack.h
Directory Properties:
stable/9/ (props changed)
stable/9/contrib/ (props changed)
stable/9/contrib/binutils/ (props changed)
Changes in other areas also in this revision:
Modified:
stable/10/contrib/binutils/bfd/elflink.c
stable/10/contrib/binutils/include/obstack.h
stable/11/contrib/binutils/bfd/elflink.c
stable/11/contrib/binutils/include/obstack.h
Directory Properties:
stable/10/ (props changed)
stable/11/ (props changed)
Modified: stable/9/contrib/binutils/bfd/elflink.c
==============================================================================
--- stable/9/contrib/binutils/bfd/elflink.c Mon Jan 1 20:24:16 2018 (r327470)
+++ stable/9/contrib/binutils/bfd/elflink.c Mon Jan 1 20:39:12 2018 (r327471)
@@ -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_li
}
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)
Modified: stable/9/contrib/binutils/include/obstack.h
==============================================================================
--- stable/9/contrib/binutils/include/obstack.h Mon Jan 1 20:24:16 2018 (r327470)
+++ stable/9/contrib/binutils/include/obstack.h Mon Jan 1 20:39:12 2018 (r327471)
@@ -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; \
More information about the svn-src-stable-9
mailing list