Re: [RFA] dwarf2-frame.c sign extension patch

Mark Kettenis
2004-07-21T20:30:02Z

From: "Martin M. Hunt" <hunt@redhat.com>
Date: Tue, 20 Jul 2004 12:11:25 -0700

This patch fixes some dwarf2 problems with sign-extension.

2004-07-20 Kevin Buettner and Martin Hunt <hunt@redhat.com>

* dwarf2-frame.c (execute_cfa_program): Fix typo in which the
alignment was being added to the offset instead of multiplied.

This is unrelated to the rest of the changes. Please make this a
seperate commit. Consider that one pre-approved.

(struct comp_unit): Add new field ``signed_addr_p''.

(encoding_for_size): Add new parameter ``signed_addr_p''.
Adjust all callers. Add code for handling signed encodings.

(dwarf2_build_frame_info): Initialize ``unit.signed_addr_p''.

These are all related, so there shouldn't be any blank lines between
them. The formatting of your changes to encoding_for_size() is wrong.
Please re-indent the exitsing return()-lines. Or perhaps it's better
to use:

return signed_addr_p ? DW_EH_PE_sdata4 : DW_EH_PE_udata4;

(dwarf2_build_frame_info): Set unit.addr_size.

Why is the old code wrong? The comment clearly says "from unit
header" which is what the DWARF standard says (or at least implies).
Theoretically it could change from compilation unit to compilation
unit. So I think your change to replace it by
TYPE_LENGTH(builtin_type_void_data_ptr) is wrong.

Mark