mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-01 03:41:58 +08:00

Consider the test-case contained in this patch. It consists of two CUs: - cu1, containing a DW_TAG_variable DIE foo - cu2, containing a DW_TAG_base_type DIE int where the variable foo has type int, in other words, there's an inter-CU reference. When expanding the symtab for cu1, expansion of the symtab for cu2 is enqueued, and later processed by process_full_comp_unit. However, processing of .debug_ranges fails because the range is specified relative to a base address which is considered not to be present because !cu->base_address.has_value (), and we run into this case in dwarf2_ranges_process: ... if (!base.has_value ()) { /* We have no valid base address for the ranges data. */ complaint (_("Invalid .debug_ranges data (no base address)")); return 0; } ... Fix this in process_full_comp_unit by setting cu->base_address. Tested on x86_64-linux. gdb/ChangeLog: 2020-10-26 Tom de Vries <tdevries@suse.de> * dwarf2/read.c (process_full_comp_unit): Call dwarf2_find_base_address. gdb/testsuite/ChangeLog: 2020-10-26 Tom de Vries <tdevries@suse.de> * gdb.dwarf2/enqueued-cu-base-addr.exp: New file.