[PATCH v2 00/65] gas: whitespace handling

Jan Beulich jbeulich@suse.com
Mon Jan 27 15:23:42 GMT 2025


As per observations in target specific code there appears to be disagreement
across the assembler whether to check for specific characters (blank and tab
normally) or whether to use ISSPACE().

As agreed upon during the Cauldron in Prague, switch to a single base
construct for all code to use: is_whitespace().

It clearly is an alternative option to have is_whitespace() expand to
ISSPACE() or ISBLANK() (ISSPACE() also yields "true" for characters we don't
really consider whitespace), then (obviously) leaving out the last patch. See
also the CR_EOL uses in read.c and app.c. I think it is advisable though that
is_whitespace() and is_end_of_{line,stmt}() be non-overlapping; question then
is what (further) characters to tag as LEX_WHITE (see remarks in patch 01).

Along with recently (as of the v1 submission) committed work for x86 this
appears to be sufficient to actually use -f (or #NO_APP at start of file)
for gcc-generated code. I didn't properly check other architectures yet, but
I seem to recall that at least Arm32 and PPC would apparently require
compiler side adjustments, too.

01: consolidate whitespace recognition
02: gas/obj-*.c: use is_whitespace()
03: Alpha/EVAX: use is_whitespace() / is_end_of_stmt()
04: arc: use is_whitespace()
05: Arm: use is_whitespace()
06: aarch64: use is_whitespace()
07: avr: use is_whitespace()
08: bfin: use is_whitespace()
09: bpf: use is_whitespace()
10: CR16: use is_whitespace()
11: cris: use is_whitespace()
12: CRx: use is_whitespace()
13: C-Sky: use is_whitespace()
14: d10v: use is_whitespace()
15: d30v: use is_whitespace()
16: dlx: use is_whitespace()
17: Epiphany: use is_whitespace()
18: fr30: use is_whitespace()
19: ft32: use is_whitespace()
20: H8/300: use is_whitespace()
21: HP-PA: use is_whitespace()
22: kvx: use is_whitespace()
23: LoongArch: use is_whitespace()
24: m32c: use is_whitespace()
25: m32r: use is_whitespace()
26: M68HC1x: use is_whitespace()
27: M68k: use is_whitespace()
28: M*Core: use is_whitespace()
29: metag: use is_whitespace()
30: MicroBlaze: use is_whitespace()
31: MIPS: use is_whitespace()
32: MMIX: use is_whitespace()
33: mn10200: use is_whitespace()
34: mn10300: use is_whitespace()
35: Moxie: use is_whitespace()
36: msp430: use is_whitespace()
37: nds32: use is_whitespace()
38: NS32k: use is_whitespace()
39: PDP11: use is_whitespace()
40: PicoJava: use is_whitespace()
41: PPC: use is_whitespace()
42: pru: use is_whitespace()
43: RISC-V: use is_whitespace()
44: rl78: use is_whitespace()
45: rx: use is_whitespace()
46: s12z: use is_whitespace()
47: S/390: use is_whitespace()
48: Score: use is_whitespace()
49: SH: use is_whitespace()
50: Sparc: use is_whitespace()
51: spu: use is_whitespace()
52: C30: use is_whitespace()
53: C4x: use is_whitespace()
54: C54x: use is_whitespace()
55: C6x: use is_whitespace()
56: v850: use is_whitespace()
57: v850: use is_whitespace()
58: Visium: use is_whitespace()
59: wasm32: use is_whitespace()
60: x86: use is_whitespace()
61: xgate: use is_whitespace()
62: Xtensa: use is_whitespace()
63: Z80: use is_whitespace()
64: Z8k: use is_whitespace()
65: gas: suppress use of ISSPACE() / ISBLANK()

Jan


More information about the Binutils mailing list