mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
Fix compile time warnings building the binutils with clang.
bfdI would like to fix instances of the following warning, when building with clang with no special CFLAGS other than -g3 -O0. /home/emaisin/src/binutils-gdb/bfd/elflink.c:5425:45: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic] return (struct elf_link_hash_entry *) 0 - 1; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ Replacing those with "(struct elf_link_hash_entry *) -1" gets rid of the warning. I wanted to check that it didn't change the resulting code, so I tried to build this: $ cat test.c int *before() { return (int *) 0 - 1; } int *after() { return (int *) - 1; } $ gcc -c test.c -g $ objdump -d test.o test.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 <before>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 48 c7 c0 fc ff ff ff mov $0xfffffffffffffffc,%rax b: 5d pop %rbp c: c3 retq 000000000000000d <after>: d: 55 push %rbp e: 48 89 e5 mov %rsp,%rbp 11: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 18: 5d pop %rbp 19: c3 retq This shows that the previous code doesn't actually return -1 as the function documentation says, but the new one does, so it's kind of a bugfix. bfd * elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Avoid pointer arithmetic on NULL pointer. * elflink.c (_bfd_elf_archive_symbol_lookup, elf_link_add_archive_symbols): Likewise. ld * ldexp.c (fold_name, exp_fold_tree_1): Avoid pointer arithmetic on NULL pointer.
This commit is contained in:
parent
f2023ce7e8
commit
e99955cd8e
@ -1,3 +1,10 @@
|
||||
2018-02-01 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Avoid pointer
|
||||
arithmetic on NULL pointer.
|
||||
* elflink.c (_bfd_elf_archive_symbol_lookup,
|
||||
elf_link_add_archive_symbols): Likewise.
|
||||
|
||||
2018-01-31 Michael Matz <matz@suse.de>
|
||||
|
||||
* elflink.c (bfd_elf_define_start_stop): Fix check of
|
||||
|
@ -5051,7 +5051,7 @@ ppc64_elf_archive_symbol_lookup (bfd *abfd,
|
||||
len = strlen (name);
|
||||
dot_name = bfd_alloc (abfd, len + 2);
|
||||
if (dot_name == NULL)
|
||||
return (struct elf_link_hash_entry *) 0 - 1;
|
||||
return (struct elf_link_hash_entry *) -1;
|
||||
dot_name[0] = '.';
|
||||
memcpy (dot_name + 1, name, len + 1);
|
||||
h = _bfd_elf_archive_symbol_lookup (abfd, info, dot_name);
|
||||
|
@ -5422,7 +5422,7 @@ _bfd_elf_archive_symbol_lookup (bfd *abfd,
|
||||
len = strlen (name);
|
||||
copy = (char *) bfd_alloc (abfd, len);
|
||||
if (copy == NULL)
|
||||
return (struct elf_link_hash_entry *) 0 - 1;
|
||||
return (struct elf_link_hash_entry *) -1;
|
||||
|
||||
first = p - name + 1;
|
||||
memcpy (copy, name, first);
|
||||
@ -5520,7 +5520,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 *) -1)
|
||||
goto error_return;
|
||||
|
||||
if (h == NULL)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2018-02-01 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* ldexp.c (fold_name, exp_fold_tree_1): Avoid pointer arithmetic
|
||||
on NULL pointer.
|
||||
|
||||
2018-01-31 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* testsuite/ld-elf/pr21964-5.c (my_var): Mark as used.
|
||||
|
@ -782,7 +782,7 @@ fold_name (etree_type *tree)
|
||||
if (expld.assign_src == NULL)
|
||||
expld.assign_src = h;
|
||||
else
|
||||
expld.assign_src = (struct bfd_link_hash_entry *) 0 - 1;
|
||||
expld.assign_src = (struct bfd_link_hash_entry *) - 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1207,7 +1207,7 @@ exp_fold_tree_1 (etree_type *tree)
|
||||
false branches.) */
|
||||
if (expld.assign_src != NULL
|
||||
&& (expld.assign_src
|
||||
!= (struct bfd_link_hash_entry *) 0 - 1))
|
||||
!= (struct bfd_link_hash_entry *) -1))
|
||||
bfd_copy_link_hash_symbol_type (link_info.output_bfd, h,
|
||||
expld.assign_src);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user