diff options
Diffstat (limited to 'scripts/extract-asm-offsets.sed')
| -rw-r--r-- | scripts/extract-asm-offsets.sed | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/scripts/extract-asm-offsets.sed b/scripts/extract-asm-offsets.sed new file mode 100644 index 0000000..c97ec2c --- /dev/null +++ b/scripts/extract-asm-offsets.sed @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Extract `->SYM val COMMENT` markers emitted by inline asm in +# asm-offsets.c into proper `#define SYM val /* COMMENT */` lines. +# 1:1 with Linux scripts/Makefile.lib `sed-offsets`. +# +# Input : assembly source produced by `gcc -S asm-offsets.c` — +# inline asm emits lines like +# .ascii "->KERNEL_MAP_VIRT_ADDR 0 offsetof(...)" +# Output : header fragment for include/generated/asm-offsets.h +# +# Step 1 unwraps the `.ascii "..."` directive so the actual payload +# (starting with `->`) is exposed. Steps 2-4 then rewrite into a +# proper #define. +s:^[[:space:]]*\.ascii[[:space:]]*"\(.*\)".*:\1: +/^->/{s:->#\(.*\):/* \1 */:; + s:^->\([^ ]*\) [\$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; + s:->::; + p;} |
