mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-01 11:59:27 +08:00
Recognize -1 as a tombstone value in .debug_line
LLD from 11 onwards (https://reviews.llvm.org/D81784) uses -1 to represent a relocation in .debug_line referencing a discarded symbol. Recognize -1 to fix gdb.base/break-on-linker-gcd-function.exp when the linker is a newer LLD. gdb/ChangeLog: * dwarf2/read.c (lnp_state_machine::check_line_address): Test -1.
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
2020-07-01 Fangrui Song <maskray@google.com>
|
||||
|
||||
* dwarf2/read.c (lnp_state_machine::check_line_address): Test -1.
|
||||
|
||||
2020-07-01 Alok Kumar Sharma <AlokKumar.Sharma@amd.com>
|
||||
|
||||
* dwarf2/read.c (set_die_type): Removed conditions to restrict
|
||||
|
@ -19983,7 +19983,7 @@ public:
|
||||
we're processing the end of a sequence. */
|
||||
void record_line (bool end_sequence);
|
||||
|
||||
/* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
|
||||
/* Check ADDRESS is -1, or zero and less than UNRELOCATED_LOWPC, and if true
|
||||
nop-out rest of the lines in this sequence. */
|
||||
void check_line_address (struct dwarf2_cu *cu,
|
||||
const gdb_byte *line_ptr,
|
||||
@ -20377,12 +20377,13 @@ lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
|
||||
const gdb_byte *line_ptr,
|
||||
CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
|
||||
{
|
||||
/* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
|
||||
the pc range of the CU. However, we restrict the test to only ADDRESS
|
||||
values of zero to preserve GDB's previous behaviour which is to handle
|
||||
the specific case of a function being GC'd by the linker. */
|
||||
/* Linkers resolve a symbolic relocation referencing a GC'd function to 0 or
|
||||
-1. If ADDRESS is 0, ignoring the opcode will err if the text section is
|
||||
located at 0x0. In this case, additionally check that if
|
||||
ADDRESS < UNRELOCATED_LOWPC. */
|
||||
|
||||
if (address == 0 && address < unrelocated_lowpc)
|
||||
if ((address == 0 && address < unrelocated_lowpc)
|
||||
|| address == (CORE_ADDR) -1)
|
||||
{
|
||||
/* This line table is for a function which has been
|
||||
GCd by the linker. Ignore it. PR gdb/12528 */
|
||||
|
Reference in New Issue
Block a user