Adding _eh.o frame-dwarf2.o to libstdc++.so.3?

Benjamin Kosnik bkoz@cygnus.com
Tue Jul 25 17:18:00 GMT 2000


H.J:

As you undoubtebly know, this change completely hosed shared libstdc++'s:

2000-06-26  Andrew Macleod <amacleod@cygnus.com>
	    Jason Merrill <jason@redhat.com>

	* dwarf2.h (enum dwarf_call_frame_info): Add
	DW_CFA_def_cfa_expression.
	* dwarf2out.c (union dw_cfi_oprnd_struct): Add a pointer to a
	dw_loc_descr_struct entry.
	(struct cfa_loc): New structure to track a CFA location.
	(lookup_cfa): Take a cfa_loc parameter instead of a reg and an offset.
	(lookup_cfa_1): Take a cfa_loc parameter instead of a reg and an
	offset, plus handle DW_CFA_def_cfa_expression.
	(def_cfa_1): Use to be dwarf2out_def_cfa, only now it uses a
	cfa_loc record.
	(dwarf2out_def_cfa): Entry point maintained for compatability.
	(dwarf_cfi_name): Add DW_CFA_def_cfa_expression.
	(cfa_reg, cfa_offset): Replace with cfa_loc record 'cfa'.
	(cfa_store_reg, cfa_store_offset): Replace with cfa_loc 'cfa_store'.
	(initial_return_save, dwarf2out_stack_adjust): Use cfa.reg, not
	cfa_reg.
	(dwarf2out_frame_debug_expr): Use new cfa_loc records. Recognize rtl
	sequences for the new DW_CFA_def_cfa_expression record.
	(dwarf2out_frame_debug): Use new variables/fields.A
	(output_cfi): Handle DW_CFA_def_cfa_expression.
	(output_cfa_loc): New function to generate a CFI record for
	DW_CFA_def_cfa_expression.
	(get_cfa_from_loc_descr): New function to get a cfa_loc record from
	a dw_loc_descr sequeunce.
	(build_loc_descr): Build a dw_loc_descr from a cfa_loc record.
	(dwarf_stack_op_name, new_loc_descr, add_loc_descr, size_of_loc_descr,
	size_of_locs, output_loc_operands, output_loc_sequence): Move into
	unwind info section.
	* frame.h (frame_state): Add base_offset and indirect fields.
	* frame-dwarf2.c (decode_stack_op): New function to interpret a
	dw_loc_descr operation.
	(execute_cfa_insn): Add support for DW_CFA_def_cfa_expression.
	(struct frame_state): Add base offset and indirect fields.
	* libgcc2.c (next_stack_level): Support indirect loading for CFA.

You've noticed this yourself:

http://gcc.gnu.org/ml/gcc/2000-07/msg00007.html
http://gcc.gnu.org/ml/gcc/2000-07/msg00009.html

It's been broken almost a month now. Any libstdc++-v3 testcases that
throw standard exceptions core unless I add _eh.o and frame-dwarf2.o
to the shared library.

This is pretty lame..... anyway.

I looked through the last two months of postings from you, and see
some stuff about libtool work which I suspect may actually solve the
problem... does it?

http://gcc.gnu.org/ml/gcc/2000-07/msg00568.html
http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00707.html

I've updated libtool, but now get this......

[snip]
checking how to recognise dependant libraries... pass_all
checking for object suffix... o
checking for ranlib... (cached) ranlib
checking for strip... strip
updating cache ./config.cache
ltconfig: unrecognized option `--build=i686-pc-linux-gnu'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed

I suspect my libtool/autoconf/automake sources are not in sync. Can
you tell me what sources you're using for each of those items, and if
it solves this problem?

thanks, benjamin






More information about the Libstdc++ mailing list