public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Clarification regarding various classes DIE's attribute value class
@ 2023-10-10 15:08 Rishi Raj
  2023-10-11  8:42 ` Richard Biener
  2023-10-11 16:07 ` Jan Hubicka
  0 siblings, 2 replies; 3+ messages in thread
From: Rishi Raj @ 2023-10-10 15:08 UTC (permalink / raw)
  To: Martin Jambor, Jan Hubicka, Richard Biener, gcc

[-- Attachment #1: Type: text/plain, Size: 1971 bytes --]

Hello,
I am working on a project to produce the LTO object file from the compiler
directly. So far, we have
correctly outputted .symtab along with various .debug sections. The only
thing remaining is to
correctly output attribute values and their corresponding values in the
.debug_info section. This is done by the output_die function in
dwarf2out.cc based on the value's class. However, the same
function is used in dwarf2out_finish  as well as dwarf2out_early_finish, so
I suspect that not every value class is being used in dwarfout_early_finish
(mainly I am interested in -flto mode). As there is little documentation on
the same, I experimented by commenting out the various cases of value class
in output die. I found that the classes such as dw_val_class_addr,
dw_val_class_high_pc, and dw_val_class_vms_delta aren't being used during
the early_finish of LTO mode. I might be wrong, as my observation is based
on commenting out and testing a few pieces of code that might need to be
completed. So, can anyone please tell out of these 30 classes that are
relevant to dwarf2out_early_finish in LTO mode or at least point out some
documentation if it exists?
enum dw_val_class
{
  dw_val_class_none,
  dw_val_class_addr,
  dw_val_class_offset,
  dw_val_class_loc,
  dw_val_class_loc_list,
  dw_val_class_range_list,
  dw_val_class_const,
  dw_val_class_unsigned_const,
  dw_val_class_const_double,
  dw_val_class_wide_int,
  dw_val_class_vec,
  dw_val_class_flag,
  dw_val_class_die_ref,
  dw_val_class_fde_ref,
  dw_val_class_lbl_id,
  dw_val_class_lineptr,
  dw_val_class_str,
  dw_val_class_macptr,
  dw_val_class_loclistsptr,
  dw_val_class_file,
  dw_val_class_data8,
  dw_val_class_decl_ref,
  dw_val_class_vms_delta,
  dw_val_class_high_pc,
  dw_val_class_discr_value,
  dw_val_class_discr_list,
  dw_val_class_const_implicit,
  dw_val_class_unsigned_const_implicit,
  dw_val_class_file_implicit,
  dw_val_class_view_list,
  dw_val_class_symview
};

--
Rishi

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Clarification regarding various classes DIE's attribute value class
  2023-10-10 15:08 Clarification regarding various classes DIE's attribute value class Rishi Raj
@ 2023-10-11  8:42 ` Richard Biener
  2023-10-11 16:07 ` Jan Hubicka
  1 sibling, 0 replies; 3+ messages in thread
From: Richard Biener @ 2023-10-11  8:42 UTC (permalink / raw)
  To: Rishi Raj; +Cc: Martin Jambor, Jan Hubicka, gcc

On Tue, 10 Oct 2023, Rishi Raj wrote:

> Hello,
> I am working on a project to produce the LTO object file from the compiler
> directly. So far, we have
> correctly outputted .symtab along with various .debug sections. The only
> thing remaining is to
> correctly output attribute values and their corresponding values in the
> .debug_info section. This is done by the output_die function in
> dwarf2out.cc based on the value's class. However, the same
> function is used in dwarf2out_finish  as well as dwarf2out_early_finish, so
> I suspect that not every value class is being used in dwarfout_early_finish
> (mainly I am interested in -flto mode). As there is little documentation on
> the same, I experimented by commenting out the various cases of value class
> in output die. I found that the classes such as dw_val_class_addr,
> dw_val_class_high_pc, and dw_val_class_vms_delta aren't being used during
> the early_finish of LTO mode. I might be wrong, as my observation is based
> on commenting out and testing a few pieces of code that might need to be
> completed. So, can anyone please tell out of these 30 classes that are
> relevant to dwarf2out_early_finish in LTO mode or at least point out some
> documentation if it exists?

There's no documentation.  The constraint is that early debug should not
have relocations to .text, thus it doesn't have location lists for 
example.

I believe you should be able to mostly hook into the dwarf2asm hooks
that perform the output (but those also add labels and label references).

If leaving out support for some value classes makes your live easier
I suggest to handle them with a gcc_unreachable () handler so you'll
get ICEs whenever one turns out to be required.

> enum dw_val_class
> {
>   dw_val_class_none,
>   dw_val_class_addr,
>   dw_val_class_offset,
>   dw_val_class_loc,
>   dw_val_class_loc_list,
>   dw_val_class_range_list,
>   dw_val_class_const,
>   dw_val_class_unsigned_const,
>   dw_val_class_const_double,
>   dw_val_class_wide_int,
>   dw_val_class_vec,
>   dw_val_class_flag,
>   dw_val_class_die_ref,
>   dw_val_class_fde_ref,
>   dw_val_class_lbl_id,
>   dw_val_class_lineptr,
>   dw_val_class_str,
>   dw_val_class_macptr,
>   dw_val_class_loclistsptr,
>   dw_val_class_file,
>   dw_val_class_data8,
>   dw_val_class_decl_ref,
>   dw_val_class_vms_delta,
>   dw_val_class_high_pc,
>   dw_val_class_discr_value,
>   dw_val_class_discr_list,
>   dw_val_class_const_implicit,
>   dw_val_class_unsigned_const_implicit,
>   dw_val_class_file_implicit,
>   dw_val_class_view_list,
>   dw_val_class_symview
> };
> 
> --
> Rishi
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Clarification regarding various classes DIE's attribute value class
  2023-10-10 15:08 Clarification regarding various classes DIE's attribute value class Rishi Raj
  2023-10-11  8:42 ` Richard Biener
@ 2023-10-11 16:07 ` Jan Hubicka
  1 sibling, 0 replies; 3+ messages in thread
From: Jan Hubicka @ 2023-10-11 16:07 UTC (permalink / raw)
  To: Rishi Raj; +Cc: Martin Jambor, Richard Biener, gcc

> Hello,
> I am working on a project to produce the LTO object file from the compiler
> directly. So far, we have
> correctly outputted .symtab along with various .debug sections. The only
> thing remaining is to
> correctly output attribute values and their corresponding values in the
> .debug_info section. This is done by the output_die function in
> dwarf2out.cc based on the value's class. However, the same
> function is used in dwarf2out_finish  as well as dwarf2out_early_finish, so
> I suspect that not every value class is being used in dwarfout_early_finish
> (mainly I am interested in -flto mode). As there is little documentation on
> the same, I experimented by commenting out the various cases of value class
> in output die. I found that the classes such as dw_val_class_addr,
> dw_val_class_high_pc, and dw_val_class_vms_delta aren't being used during
> the early_finish of LTO mode. I might be wrong, as my observation is based
> on commenting out and testing a few pieces of code that might need to be
> completed. So, can anyone please tell out of these 30 classes that are
> relevant to dwarf2out_early_finish in LTO mode or at least point out some
> documentation if it exists?

You can probably do gcc_assert (!in_lto_p && flag_lto && !flag_fat_lto_objects)
on parts of output_die which you think are unused and then do make check
and if it passes also make bootstrap.  That should probably catch all
relevant cases.

Honza
> enum dw_val_class
> {
>   dw_val_class_none,
>   dw_val_class_addr,
>   dw_val_class_offset,
>   dw_val_class_loc,
>   dw_val_class_loc_list,
>   dw_val_class_range_list,
>   dw_val_class_const,
>   dw_val_class_unsigned_const,
>   dw_val_class_const_double,
>   dw_val_class_wide_int,
>   dw_val_class_vec,
>   dw_val_class_flag,
>   dw_val_class_die_ref,
>   dw_val_class_fde_ref,
>   dw_val_class_lbl_id,
>   dw_val_class_lineptr,
>   dw_val_class_str,
>   dw_val_class_macptr,
>   dw_val_class_loclistsptr,
>   dw_val_class_file,
>   dw_val_class_data8,
>   dw_val_class_decl_ref,
>   dw_val_class_vms_delta,
>   dw_val_class_high_pc,
>   dw_val_class_discr_value,
>   dw_val_class_discr_list,
>   dw_val_class_const_implicit,
>   dw_val_class_unsigned_const_implicit,
>   dw_val_class_file_implicit,
>   dw_val_class_view_list,
>   dw_val_class_symview
> };
> 
> --
> Rishi

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-10-11 16:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-10 15:08 Clarification regarding various classes DIE's attribute value class Rishi Raj
2023-10-11  8:42 ` Richard Biener
2023-10-11 16:07 ` Jan Hubicka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).