Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
SQLab/112-spring-software-testing#2
I implemented a custom LLVM pass that, at the very start of the compilation pipeline, rewrites both the argc and argv[1] values in the main function so that:
debug(48763) is injected immediately at the top of main.
I grab the argc and argv arguments from main’s entry block.
I build a global constant string "hayaku... motohayaku!" and then:
Store its pointer directly into the argv[1] slot (so that any subsequent printf(argv[1]) sees the new value).
Scan through every instruction, replacing any use of the original argc SSA value with the constant 48763.
I also locate all LoadInst operations loading argv[1] (using a stripped‐cast GEP check) and strcmp calls, and replace their operands or uses with my constant string pointer, then erase the old loads.
Finally, I register this pass via the registerPipelineStartEPCallback so it runs unconditionally on every build configuration (O0 through O2).