segment of where to write fixup (eh_frame segment)
offset of where to write fixup (eh_frame offset)
fixup is a reference to this Symbol (GCC_except_table%d or function_name)
displacement from s
function_name.eh
number of bytes written at seg:offset
[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
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