Port-vax archive

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

Unwinding with GCC



Hi,

so, looking at things we should address for GCC/vax, I went over
review comments by Jeff Law[1].

One point was that flag_dwarf2_cfi_asm = 0. This probably isn't
great for unwinding, which is one thing we're struggling with.

This was apparently introduced during a binutils update[2].
Removing it results in a build failure in libc,

ld: warning: dynamic relocation to `?' in readonly section `.eh_frame'
ld: warning: dynamic relocation to `?' in readonly section `.eh_frame'
ld: warning: creating a DT_TEXTREL in a shared object
ld: .eh_frame_hdr refers to overlapping FDEs
ld: final link failed: bad value

This seemed to be a cross platform at the time, shared by RISC-V.[3]
Their answer is "Use pc-relative relocation for FDE initial location",
which they do in binutils md_apply_fix.

But that got me to look at the dwarf code and comparing to other archs,
and I can't help but notice there's so much LESS code related to the
use of DWARF.

This is discouraging, I'm not qualified to write such code from scratch,
although I might be able to cargo-cult the RISC-V fix with some help.

Did this code, and C++ exception handling, ever work?


[1] https://gcc.gnu.org/ml/gcc/2019-04/msg00281.html
[2] https://github.com/NetBSD/src/commit/1df57dce3744cf4743358b098728a0658b80b8fb
[3] https://github.com/riscv/riscv-binutils-gdb/issues/76


Home | Main Index | Thread Index | Old Index