gas: re-arrange listing output for .irp and alike
authorJan Beulich <jbeulich@suse.com>
Thu, 22 Dec 2022 13:31:11 +0000 (14:31 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 22 Dec 2022 13:31:11 +0000 (14:31 +0100)
It is kind of odd to have the expansions of such constructs ahead of
their definition in listings with macro expansion enabled. Adjust this
by pulling ahead the output of the definition lines, taking care to
avoid producing a listing line for (non-existing) line 0 when the source
is stdin.

Note that with the code movement the conditional operator isn't
necessary anymore - list->line now match up.

gas/listing.c
gas/testsuite/gas/i386/noavx512-1.l

index 83a6f39cb316a1cbf26ea1455f7359e0ac4740a4..358e14e689e5cf67e7db83dc9f01858e87514af2 100644 (file)
@@ -1247,18 +1247,7 @@ listing_listing (char *name ATTRIBUTE_UNUSED)
          if (current_hll_file && list->hll_line && (listing & LISTING_HLL))
            print_source (current_hll_file, list, width);
 
-         if (list->line_contents)
-           {
-             if (!((listing & LISTING_NODEBUG)
-                   && debugging_pseudo (list, list->line_contents)))
-               print_lines (list,
-                            list->file->linenum == 0 ? list->line : list->file->linenum,
-                            list->line_contents, calc_hex (list));
-
-             free (list->line_contents);
-             list->line_contents = NULL;
-           }
-         else
+         if (!list->line_contents || list->file->linenum)
            {
              while (list->file->linenum < list_line
                     && !list->file->at_end)
@@ -1278,6 +1267,17 @@ listing_listing (char *name ATTRIBUTE_UNUSED)
                }
            }
 
+         if (list->line_contents)
+           {
+             if (!((listing & LISTING_NODEBUG)
+                   && debugging_pseudo (list, list->line_contents)))
+               print_lines (list, list->line, list->line_contents,
+                            calc_hex (list));
+
+             free (list->line_contents);
+             list->line_contents = NULL;
+           }
+
          if (list->edict == EDICT_EJECT)
            eject = 1;
        }
index 86e852731e1f0ba5c0c6c8b0f3769de60bdf53d0..655a90de2cead622b6a23588c3dfc11b2848eac0 100644 (file)
@@ -45,6 +45,8 @@
 [      ]*[0-9]+[       ]*
 [      ]*[0-9]+[       ]+\.irp isa, default, .*
 #...
+[      ]*[0-9]+[       ]+\.endr
+#...
 [      ]*[0-9]+[       ]+>  \.arch default
 [      ]*[0-9]+[       ]+>  \.arch default
 [      ]*[0-9]+[       ]+\?\?\?\? 62F27D4F     >  vpabsb %zmm5,%zmm6\{%k7\}
 [      ]*[0-9]+[       ]+>  vpermb %xmm4,%xmm5,%xmm6\{%k7\}
 [      ]*[0-9]+[       ]+>  vpermb %ymm4,%ymm5,%ymm6\{%k7\}
 #...
-[      ]*[0-9]+[       ]+\.endr
-[      ]*[0-9]+[       ]*
 [      ]*[0-9]+[       ]+\?\?\?\? C4E2791C             vpabsb %xmm5, %xmm6
 [      ]*[0-9]+[       ]+F5
 [      ]*[0-9]+[       ]+\?\?\?\? C4E27D1C             vpabsb %ymm5, %ymm6