This is the mail archive of the
gdb-testers@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Poison non-POD memset & non-trivially-copyable memcpy/memmove
- From: sergiodj+buildbot at sergiodj dot net
- To: gdb-testers at sourceware dot org
- Date: Mon, 24 Apr 2017 23:26:56 -0400
- Subject: [binutils-gdb] Poison non-POD memset & non-trivially-copyable memcpy/memmove
- Authentication-results: sourceware.org; auth=none
*** TEST RESULTS FOR COMMIT b0b92aeb3828219075fce23543fb39fee8608e99 ***
Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: b0b92aeb3828219075fce23543fb39fee8608e99
Poison non-POD memset & non-trivially-copyable memcpy/memmove
This patch catches invalid initialization of non-POD types with
memset, at compile time.
This is what I used to catch the problems fixed by the previous
patches in the series:
$ make -k 2>&1 | grep "deleted function"
src/gdb/breakpoint.c:951:53: error: use of deleted function void* memset(T*, int, size_t) [with T = bp_location; <template-parameter-1-2> = void; size_t = long unsigned int]
src/gdb/breakpoint.c:7325:32: error: use of deleted function void* memset(T*, int, size_t) [with T = bp_location; <template-parameter-1-2> = void; size_t = long unsigned int]
src/gdb/btrace.c:1153:42: error: use of deleted function void* memset(T*, int, size_t) [with T = btrace_insn; <template-parameter-1-2> = void; size_t = long unsigned int]
...
gdb/ChangeLog:
2017-04-25 Pedro Alves <palves@redhat.com>
* common/common-defs.h: Include "common/poison.h".
* common/function-view.h: (Not, Or, Requires): Move to traits.h
and adjust.
* common/poison.h: New file.
* common/traits.h: Include <type_traits>.
(Not, Or, Requires): New, moved from common/function-view.h.