fix init_cutu_and_read_dies

init_cutu_and_read_dies creates an outer cleanup and uses its
immediately nested inner cleanup conditionally.  This seems overly
complicated to me; simpler is to just deal with the outer cleanup and
drop the inner one.  That is what this patch implements.

	* dwarf2read.c (init_cutu_and_read_dies): Remove 'free_cu_cleanup'.
	Simplify cleanup handling.
fix solib-som.c

som_open_symbol_file_object was leaking a cleanup.

	* solib-som.c (som_open_symbol_file_object): Call do_cleanups.
merge from gcc