This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ubsan] Instrument __builtin_unreachable


On Sun, Jul 14, 2013 at 07:39:38AM +0200, Marek Polacek wrote:
> This patch implements sanitizing of the __builtin_unreachable call.
> A call to __builtin_unreachable only emits BARRIER, if we actually get to it,
> the behavior is undefined.  So, we just replace the call with a call to
> the ubsan library, it then issues an error and dies.
> 
> The patch is long because I had to pluck some code out of c-family/c-ubsan.c
> (otherwise we couldn't call ubsan_* routines from builtins.c), I've put
> the code into ubsan.c.
> 
> Commited to ubsan branch.  Comments?
> 
> (I think I'm going to solve the ubsan testsuite now.)
> 
> 2013-07-14  Marek Polacek  <polacek@redhat.com>
> 
> 	* builtins.c: Include ubsan.h.
> 	(fold_builtin_0): Instrument __builtin_unreachable.
> 	* c-family/c-ubsan.c (struct ubsan_typedesc): Move to ubsan.c.
> 	(struct ubsan_typedesc_hasher): Likewise.
> 	(ubsan_typedesc_hasher::hash): Likewise.
> 	(ubsan_typedesc_hasher::equal): Likewise.
> 	(ubsan_typedesc_init): Likewise.
> 	(ubsan_typedesc_get_alloc_pool): Likewise.
> 	(get_typedesc_hash_table): Likewise.
> 	(ubsan_typedesc_new): Likewise.
> 	(empty_ubsan_typedesc_hash_table): Likewise.
> 	(uptr_type): Likewise.
> 	(ubsan_encode_value): Likewise.
> 	(ubsan_type_descriptor_type): Likewise.
> 	(ubsan_source_location_type): Likewise.
> 	(ubsan_source_location): Likewise.
> 	(get_tinfo_for_type): Likewise.
> 	(ubsan_type_descriptor): Likewise.
> 	(ubsan_create_data): Likewise.
> 	* c-family/c-ubsan.h: Rename GCC_UBSAN_H to GCC_C_UBSAN_H.
> 	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Define.
> 	* Makefile.in: Add ubsan.c.
> 	* ubsan.h: New file.
> 	* ubsan.c: New file.

I've noticed that the parts of the CL should go into c-family/, fixed
before commiting.

	Marek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]