-
Notifications
You must be signed in to change notification settings - Fork 192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document a limitation of the DW_CFA_AARCH64_negate_ra_state. #129
Document a limitation of the DW_CFA_AARCH64_negate_ra_state. #129
Conversation
aadwarf64/aadwarf64.rst
Outdated
@@ -582,6 +582,9 @@ This ABI defines one vendor call frame instruction | |||
|
|||
The ``DW_CFA_AARCH64_negate_ra_state`` operation negates bit[0] of the | |||
RA_SIGN_STATE pseudo-register. It does not take any operands. | |||
The ``DW_CFA_AARCH64_negate_ra_state`` shall not be mixed with other DWARF operations on the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think we should use the "Register Rule Instruction" terminology from 6.4.2.3 of https://www.dwarfstd.org/doc/DWARF5.pdf
because we want to allow "Row State Instructions" from 6.4.2.4. to be mixed with negate_ra_state.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
either that or we should call out DW_CFA_remember_state/restore_state explicitly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @nsz-arm, change is updated.
8f68214
to
424fff7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general this looks OK to me.
Minor wording nit-pick. The DWARF standard does not use "shall not", instead it uses "must not". Suggest we do the same here.
DW_CFA_AARCH64_negate_ra_state depends on the previous state of the RA_SIGN_STATE register which makes complex to handle in cases when the register is set by DWARF expressions because expression are lasily evaulated in runtime.
424fff7
to
81a633f
Compare
@walkerkd Thanks, done. |
Looks good to me |
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] ARM-software/abi-aa#129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] ARM-software/abi-aa#129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692 Reland: test moved because it depends on exceptions.
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] ARM-software/abi-aa#129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] ARM-software/abi-aa#129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692 Reland: test moved because it depends on exceptions.
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] ARM-software/abi-aa#129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] ARM-software/abi-aa#129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692 Reland: test moved because it depends on exceptions.
DW_CFA_AARCH64_negate_ra_state depends on the previous state of the RA_SIGN_STATE
register which makes complex to handle in cases when the register is set by
DWARF expressions because expression are lasily evaulated in runtime.