summaryrefslogtreecommitdiff
path: root/scripts/extract-asm-offsets.sed
blob: c97ec2cce342ca9aac9a0cdb9fb0fe9b32058121 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;}