-
Notifications
You must be signed in to change notification settings - Fork 24
Implement goto labels from GCC extended inline assembly syntax. #203
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
base: develop
Are you sure you want to change the base?
Conversation
|
I didn't have a deep look at this yet but I want to point out that part of #161 (if not all) was to do the same thing. It needed some changes but the student moved on. The hope is that this PR can replace it but this should also account for all the unfinished business discussed in #161 which prevented it from being merged. On another note, #161 seems to have avoided the need for a |
If I understand this comment correctly, #161 does not take goto labels into account in CFG: My pull request attempts to faithfully represent potential inline asm goto there. Thus, I needed to upgrade the |
Things might have been changed after that review comment because currently #161 moves |
|
I looked through the code of #161. I presume, the relevant line is: let dummyStmt = mkStmt (Asm([], ["dummy statement!!"], [], [], [], [], lu))I did my changes back in April and do not remember my exact rationale for changing that, but I think I was just baffled with use of inline assembly to express the notion of a dummy instruction, and decided to deal with it in place. Shouldn't appearance of inline assembly in the code pessimize analysis? Even if the respective Of course, even if this concern is valid, the pull request needs to be split to address it separately. At the moment, I just created a pull request for whatever I had on my branch. |
|
I think it would be fine to remove As to how to reach something mergeable, an option would be to also try to clean up #161 based on the unaddressed feedback there (although the history of #161 isn't too pretty), but it might not be worth it. |
|
I have reverted the original definition of |
Enables inline assembly to specify a list of C labels where the assembler code might jump, turning inline asm into a control flow branching point. Inline assembly is converted from instruction into a statement; dummy instruction is introduced to replace "empty" instances of inline assembly instruction previously used.
6378174 to
395bb4e
Compare
|
Rebased on top of current |
Enables inline assembly to specify a list of C labels where the assembler code might jump, turning inline asm into a control flow branching point.
Inline assembly is converted from instruction into a statement; dummy instruction is introduced to replace "empty" instances of inline assembly instruction previously used.
This feature is necessary for Linux kernel module analysis.