无法弄清楚用于汇编宏提取的 ctag regex 有什么问题

can't figure out what's wrong with ctag regex for assembly macro extraction

这是汇编代码的一部分(u-boot,arch/arm/include/debug/8250.S)

.macro  addruart, rp, rv, tmp
ldr \rp, =CONFIG_DEBUG_UART_PHYS
ldr \rv, =CONFIG_DEBUG_UART_VIRT
.endm

我想为这种类型的宏定义提取标签。所以我提到了
但不知何故我的试用无效。
我尝试了以下所有这些命令,但都未能显示标签 (addruart)。
假设此 8250.S 文件位于 /tmp 下并且仅包含这 4 行。实际上每行有两个缩进选项卡。在 .macroadduart 之间也是一个制表符。

ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro[\t ]+\(([a-zA-Z_0-9]+)\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro[\t ][\t ]*\([a-zA-Z_0-9]+\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro[\t ][\t ]*\([a-zA-Z_0-9][a-zA-Z_0-9]*\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro[\t ]\([a-zA-Z_0-9][a-zA-Z_0-9]*\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro\t\([a-zA-Z_0-9][a-zA-Z_0-9]*\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro\([a-zA-Z_0-9][a-zA-Z_0-9]*\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro\([a-zA-Z_0-9][a-zA-Z_0-9]*\)//m,macro/'  -o - /tmp/8250.S
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ 

我应该怎么做?
我的 ctags 版本:

Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
  Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
  Optional compiled features: +wildcards, +regex
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ ctags --regex-Asm='/\.macro[\t ]+\(([a-zA-Z_0-9]+)\)//m,macro/'  -o - /tmp/8250.S

这应该是:

--regex-Asm='/\.macro[\t ]+([a-zA-Z_0-9]+)//m,macro/'

如果您不想调整正则表达式模式,可以用其他实现替换您的 ctags。

Universal Ctags (https://ctags.io) 是 Exuberant Ctags 的非官方分支。 最新的 u-ctags 识别用 gas 语法定义的宏定义。 您不必添加正则表达式选项来提取它们。

$ cat /tmp/foo.S
cat /tmp/foo.S
.macro  addruart, rp, rv, tmp
ldr \rp, =CONFIG_DEBUG_UART_PHYS
ldr \rv, =CONFIG_DEBUG_UART_VIRT
.endm
$ ./ctags --options=NONE -o - /tmp/foo.S
./ctags --options=NONE -o - /tmp/foo.S
ctags: Notice: No options will be read from files or environment
addruart    /tmp/foo.S  /^.macro  addruart, rp, rv, tmp$/;" m
ldr /tmp/foo.S  /^ldr \rp, =CONFIG_DEBUG_UART_PHYS$/;" l
ldr /tmp/foo.S  /^ldr \rv, =CONFIG_DEBUG_UART_VIRT$/;" l

ldr 被意外提取。我不知道如何解决这个问题。