about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorJosh Kunz <jkz@google.com>2019-08-12 13:28:09 -0700
committerFangrui Song <i@maskray.me>2021-08-27 17:26:02 -0700
commit6733782381a84fe18cf89d11c88d7df497e3a275 (patch)
treedd8c104d6da963942798297fc27c1ea76e6687d4 /scripts
parentad41eacfb70e98e13cbfda076ded0c77b387ae8b (diff)
downloadglibc-6733782381a84fe18cf89d11c88d7df497e3a275.tar.gz
glibc-6733782381a84fe18cf89d11c88d7df497e3a275.tar.xz
glibc-6733782381a84fe18cf89d11c88d7df497e3a275.zip
Add comments explaining the diff from cf8e3f8757
These comments should make it easier to see the (small) diff introduced
in cf8e3f8757. Without these comments, the diff may get list on a future
upstream merge.
Diffstat (limited to 'scripts')
-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;