View source code
Display the source code in dmd/backend/machobj.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Function dmd.backend.machobj.dwarf_eh_frame_fixup

Generate LSDA and PC_Begin fixups in the _eh_frame segment encoded as DW_EH_PE_pcrel|ptr. 64 bits LSDA [0] address x0071 symbolnum 6 pcrel 0 length 3 extern 1 type 5 RELOC_SUBTRACTOR _Z3foov.eh [1] address x0071 symbolnum 1 pcrel 0 length 3 extern 1 type 0 RELOC_UNSIGNED GCC_except_table2

extern(C++) int dwarf_eh_frame_fixup (
  int dfseg,
  ulong offset,
  dmd.backend.cc.Symbol* s,
  ulong val,
  dmd.backend.cc.Symbol* fdesym
);

PC Begin

[2] address x0060 symbolnum 6 pcrel 0 length 3 extern 1 type 5 RELOC_SUBTRACTOR _Z3foov.eh [3] address x0060 symbolnum 5 pcrel 0 length 3 extern 1 type 0 RELOC_UNSIGNED _Z3foov Want the result to be &s - pc The fixup yields &s - &fdesym + value Therefore value = &fdesym - pc which is the same as fdesym.Soffset - offset 32 bits LSDA [6] address x0028 pcrel 0 length 2 value x0 type 4 RELOC_LOCAL_SECTDIFF [7] address x0000 pcrel 0 length 2 value x1dc type 1 RELOC_PAIR PC_Begin [8] address x0013 pcrel 0 length 2 value x228 type 4 RELOC_LOCAL_SECTDIFF [9] address x0000 pcrel 0 length 2 value x1c7 type 1 RELOC_PAIR

Parameters

NameDescription
dfseg segment of where to write fixup (eh_frame segment)
offset offset of where to write fixup (eh_frame offset)
s fixup is a reference to this Symbol (GCC_except_table%d or function_name)
val displacement from s
fdesym function_name.eh

Returns

number of bytes written at seg:offset

Authors

Walter Bright

License

Boost License 1.0