[PATCH] dwarf: Bail out if debug info needs relocation
H.J. Lu
hjl.tools@gmail.com
Tue Sep 11 13:48:00 GMT 2018
On Mon, Sep 10, 2018 at 7:17 PM, Alan Modra <amodra@gmail.com> wrote:
> On Fri, Sep 07, 2018 at 12:58:32PM -0700, H.J. Lu wrote:
>> PR ld/23425
>> * dwarf2.c (find_abstract_instance): Bail out if debug info
>> needs relocation.
>> ---
>> bfd/dwarf2.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
>> index 8fadb5c4b6..bce5db9c7e 100644
>> --- a/bfd/dwarf2.c
>> +++ b/bfd/dwarf2.c
>> @@ -2839,6 +2839,9 @@ find_abstract_instance (struct comp_unit * unit,
>> total = info_ptr_end - info_ptr;
>> if (!die_ref || die_ref >= total)
>> {
>> + /* Bail out if the debug info needs relocation. */
>> + if ((unit->stash->sec->flags & SEC_RELOC))
>> + return TRUE;
>> _bfd_error_handler
>> (_("DWARF error: invalid abstract instance DIE ref"));
>> bfd_set_error (bfd_error_bad_value);
>
> Every .debug_info section will have relocations, so this completely
> disables the error checking here. Too much sweeping under the rug.
It disables error checking on relocatable files, not on executables
nor shared objects.
> I believe the problem is described by the comment just above this
> code: "We only support DW_FORM_ref_addr within the same file".
>
I don't believe find_abstract_instance should check if there are
relocation errors in a relocatable file. What does my patch
change in binutils behavior?
--
H.J.
More information about the Binutils
mailing list