Skip to content
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

Add options for enable code gen with CFI `-fcf-protection=[full|branc… #54

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions src/toolchain-conventions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,29 @@ NOTE: This option does not affect inline assembly.
The precedence among `-m[no]-scalar-strict-align`, `-m[no-]vector-strict-align`,
and `-m[no-]strict-align` is determined by the last one specified.

=== `-fcf-protection=[full|branch|return|none]`/`-fcf-protection`


Enable control flow protection. The compiler will insert control flow integrity
instructions to protect the program against control flow hijacking attacks.

`-fcf-protection` is alias to `-fcf-protection=full`.

- `none`: Disable control flow protection.
- `full`: Protect all control flow instructions, will enable branch protection
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence reads like branch protection requires Zimop, but I think only return protection requires Zimop?

and return protection if the `Zimop` extension is available.
- `branch`: Protect branch instructions only by insert landing pad.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

insert -> inserting

- `return`: Protect return instructions only, this require `Zimop` extension.

=== `-mcf-branch-label-scheme=[unlabeled|func-sig]`

Specify the label scheme for the `-fcf-protection=branch`. The default is value
is platform defined.

- `unlabeled`: Use simple label scheme, the label is always `0`.
- `func-sig`: Use function signature as the label, the label is generated by the
compiler, the rule is defined in psABI spec.

== TODO

- `-mdiv`, `-mno-div`, `-mfdiv`, `-mno-fdiv`, `-msave-restore`,
Expand Down