mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2026-08-27 00:26:02 -04:00
[gdb] Ignore .sframe section in dtrace_static_probe_ops::get_probes
On aarch64-linux (Debian testing), with test-case gdb.base/fission-macro.exp I run into: ... (gdb) set complaints 5^M (gdb) file fission-macro-v4-b32-s0^M Reading symbols from fission-macro-v4-b32-s0...^M During symbol reading: \ skipping section '.sframe' which does not contain valid DOF data.^M (gdb) FAIL: $exp: lang=c: dwarf_version=4: dwarf_bits=32: strict_dwarf=0: \ No complaints ... The problem is that there's an overlap between: ... ./include/elf/common.h:#define SHT_SUNW_dof 0x6ffffff4 ... and: ... ./include/elf/common.h:#define SHT_GNU_SFRAME 0x6ffffff4 ... So when dtrace_static_probe_ops::get_probes tries reading an SHT_SUNW_dof section, it fails to read the corresponding magic number and bails with this complaint: ... During symbol reading: \ skipping section '.sframe' which does not contain valid DOF data.^M ... But the section actually being read is not an SHT_SUNW_dof section, but an SHT_GNU_SFRAME section: ... [Nr] Name Type Address Off Size ES Flg Lk Inf Al [17] .sframe GNU_SFRAME 00000000000008f0 0008f0 000035 00 A 0 0 8 ... Fix this by checking for the section name .sframe in dtrace_static_probe_ops::get_probes. Tested on aarch64-linux. Approved-By: Simon Marchi <simon.marchi@efficios.com> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33813
This commit is contained in:
parent
a2e58247ae
commit
162e5c93df
1 changed files with 6 additions and 1 deletions
|
|
@ -841,7 +841,12 @@ dtrace_static_probe_ops::get_probes
|
|||
information. */
|
||||
for (sect = abfd->sections; sect != NULL; sect = sect->next)
|
||||
{
|
||||
if (elf_section_data (sect)->this_hdr.sh_type == SHT_SUNW_dof)
|
||||
/* Both SHT_SUNW_dof and SHT_GNU_SFRAME are defined as 0x6ffffff4.
|
||||
So for .sframe sections with sh_type == SHT_GNU_SFRAME, it also holds
|
||||
that sh_type == SHT_SUNW_dof. Therefore, in addition to the sh_type
|
||||
check, we need to check for sections named .sframe. */
|
||||
if (elf_section_data (sect)->this_hdr.sh_type == SHT_SUNW_dof
|
||||
&& strcmp (bfd_section_name (sect), ".sframe") != 0)
|
||||
{
|
||||
bfd_byte *dof;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue