Hello,

I'm debugging a non-reproducible build of glslang where gcc sometimes generates different DWARF debug info even though the code is the same. Is there a known
bug causing this or is there an easy way to debug this?

The non-reproducibility is present in .debug_loclists section, where some
entries in some loclists have slightly different start and end value, or
different values themselves.

Example of different start and end values:
000000000015c06d 000000000015c074 (DW_OP_reg4 (rsi))
000000000015c074 000000000015c0b3 (DW_OP_entry_value: (DW_OP_reg4 (rsi)); DW_OP_stack_value)
vs
000000000015c06d 000000000015c08f (DW_OP_reg4 (rsi))
000000000015c08f 000000000015c0b3 (DW_OP_entry_value: (DW_OP_reg4 (rsi)); DW_OP_stack_value)

Example of different values themselves:
000000000021ea3b 000000000021ea3d (DW_OP_breg0 (rax): -48; DW_OP_stack_value)
vs
000000000021ea3b 000000000021ea3d (DW_OP_entry_value: (DW_OP_reg5 (rdi)); DW_OP_stack_value)

Full example of the difference can be seen here https://freedesktop-sdk.gitlab.io/-/freedesktop-sdk/-/jobs/15160251956/artifacts/result_folder/components/glslang.bst/index.html.

I'm trying to read gcc code to understand how the debug info is generated, but it's not an easy read, so I thought I'd ask in here in case it's a known
issue.

Thank you,
Nazar Kazakov

Reply via email to