Re: GCC for AArch64 never emits CFI in debug_frame

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Any objections ?
Can it be treated as a common gcc bug (not only an aarch64) ?

Alex
On Fri, Oct 5, 2018 at 5:50 PM Alexander Fedotov <alfedotov@xxxxxxxxx> wrote:
>
> According to http://wiki.dwarfstd.org/index.php?title=Exception_Handling#Relationship_with_DWARF
> current GCC behavior for aarch64 simply violates DWARF standard that
> in turn doesn't define EH.
>
> p.s. I've also found a note that .eh_frame uses different numbering of
> registers than .debug_frame on PPC target
> (https://www.sourceware.org/ml/binutils/2009-10/msg00028.html)
>
> Alex
> On Fri, Oct 5, 2018 at 4:09 PM Alexander Fedotov <alfedotov@xxxxxxxxx> wrote:
> >
> > >>So I presume this is done to avoid wasting space with duplicate information.
> > Well yes, I had the same thought too. But seems like it is makes no
> > sense because you can disable/strip debug sections.
> >
> > But the major problem that I've seen is that non-GDB debugger expects
> > CFI in debug_frame section but not eh_frame. And their point is pretty
> > strong - eh_frame is just for EH, not for debugging. purposes.
> > GDB is smart enough to use this info from eh_frame but it is not
> > specified for architecture in documents (or I was unable to find it).
> >
> >
> > Alex
> > On Fri, Oct 5, 2018 at 3:33 PM Richard Earnshaw (lists)
> > <Richard.Earnshaw@xxxxxxx> wrote:
> > >
> > > On 05/10/18 13:27, Kyrill Tkachov wrote:
> > > > Hi Alex,
> > > >
> > > > I'm forwarding this to the gcc-help list which is the appropriate place
> > > > for this discussion.
> > > > gcc-bugs is for automated emails from the bug tracker and your mail is
> > > > likely to get lost in there.
> > > >
> > > > Thanks,
> > > > Kyrill
> > > >
> > > > On 05/10/18 13:24, Alexander Fedotov wrote:
> > > >> Hello
> > > >>
> > > >> I've noticed that for C++ translation unit GCC for aarch64 always
> > > >> emits CFI into eh_frame but never debug_frame even if debug
> > > >> information is enabled. Tried on GCC versions 6 to 8.
> > > >> DWARF for the ARM 64-bit architecture (AArch64) states that it must be
> > > >> debug_frame
> > > >> ((https://static.docs.arm.com/ihi0057/b/IHI0057B_aadwarf64.pdf)
> > > >> GAS supports emitting CFI to both sections by directive: .cfi_sections
> > > >>    .debug_frame,.eh_frame
> > > >>
> > > >> At the same time gcc for arm emits CFI in both debug_frame and .ARM.exidx
> > > >>
> > > >> I'm aware about CFI for Exception Handling. But what the reason to not
> > > >> emit both ?
> > > >> Is there any implicit reason for that or it's just a bug ?
> > >
> > > On Arm, the .ARM.exidx data is insufficient for debugging, so we
> > > certainly need the additional information in the dwarf unwinding tables.
> > >  On AArch64 that's not true, the information is complete enough for a
> > > debugger to use.  So I presume this is done to avoid wasting space with
> > > duplicate information.
> > >
> > > What do other targets that use dwarf exception unwinding do?
> > >
> > > R.
> > >
> > > >>
> > > >> Steps to reproduce:
> > > >>
> > > >> cat > test.cpp <<EOF
> > > >> int foo() {
> > > >> return 0;
> > > >> }
> > > >> EOF
> > > >>
> > > >> ./aarch64-none-elf-gcc -c -g test.cpp -o test_cpp.o &&
> > > >> ./aarch64-none-elf-objdump -g test_cpp.o | grep -B 3 "CIE" | grep
> > > >> "_frame"
> > > >> Contents of the .eh_frame section:
> > > >>
> > > >> While for C code it does:
> > > >> cat > test.c <<EOF
> > > >> int foo() {
> > > >> return 0;
> > > >> }
> > > >> EOF
> > > >>
> > > >> ./aarch64-none-elf-gcc -c -g test.c -o test_c.o &&
> > > >> ./aarch64-none-elf-objdump -g test_c.o | grep -B 3 "CIE" | grep
> > > >> "_frame"
> > > >> Contents of the .debug_frame section:
> > > >>
> > > >>
> > > >> Alex
> > > >
> > >
> >
> >
> > --
> > Best regards,
> > AF
>
>
>
> --
> Best regards,
> AF



-- 
Best regards,
AF



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux