summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/gen-as-const.awk7
-rw-r--r--scripts/gen-py-const.awk7
2 files changed, 14 insertions, 0 deletions
diff --git a/scripts/gen-as-const.awk b/scripts/gen-as-const.awk
index 36e6de303c..fd662c9df9 100644
--- a/scripts/gen-as-const.awk
+++ b/scripts/gen-as-const.awk
@@ -49,6 +49,13 @@ NF > 1 {
if (test)
print " TEST (" name ", \"" FILENAME ":" FNR "\", " $0 ")";
else
+ # The `.ascii` directive here is needed for LLVM/clang support. LLVM will
+ # validate every `asm(...)` directive before emitting it, whereas GCC will
+ # literally emit the directive without validation. Without `.ascii` the
+ # directives emitted by this generator are not valid assembler statements,
+ # and the LLVM assembler will fail to assemble the file. The `.ascii` here
+ # has no functional affect, because string parsing is used to extract the
+ # integer constant from the assembly file built from the generated file.
printf "asm (\".ascii \\\"@@@name@@@%s@@@value@@@%%0@@@end@@@\\\"\" : : \"i\" ((long) %s));\n",
name, $0;
}
diff --git a/scripts/gen-py-const.awk b/scripts/gen-py-const.awk
index beb41964ee..8101bf87ac 100644
--- a/scripts/gen-py-const.awk
+++ b/scripts/gen-py-const.awk
@@ -109,6 +109,13 @@ NF > 1 {
# Remove any characters before the second field.
sub(/^[^[:blank:]]+[[:blank:]]+/, "");
+ # The `.ascii` directive here is needed for LLVM/clang support. LLVM will
+ # validate every `asm(...)` directive before emitting it, whereas GCC will
+ # literally emit the directive without validation. Without `.ascii` the
+ # directives emitted by this generator are not valid assembler statements,
+ # and the LLVM assembler will fail to assemble the file. The `.ascii` here
+ # has no functional affect, because string parsing is used to extract the
+ # integer constant from the assembly file built from the generated file.
# '$0' ends up being everything that appeared after the first field
# separator.
printf " asm (\".ascii \\\"@name@%s@value@%0@\\\"\" : : \"i\" (%s));\n", name, $0;