[PATCH v2 0/2] bpf: fix gotol with a signed offset, and run the spacing test

Vineet Gupta vineet.gupta@linux.dev
Thu Sep 3 03:39:32 GMT 2026


Ping !

On 8/25/26 3:11 AM, Vineet Gupta wrote:
> In the pseudo-C dialect `gotol +1' is silently assembled as `goto l+1'
> leading to libbpf load time failures. LLVM obviously supports this so gas
> needs fixing.
>
> Ran into this when trying to enable certain selftests which are
> currently clang built only while GCC can build them fine. Moreover those
> not run tests are declared passing too [1].
>
> Patch 1: Orthogonal issue discovered in the process. Directed tests for
> exactly this exist: spacing-pseudoc.{s,d} but are never run.
>
> Patch 2 fixes the actual mis-assembly.
>
> As part of v1 review [2] it was suggested to simply use 'W%' to mandate
> at least whitespace i.e. `goto%W%d16'. However that does not work.
> gas strips the whitespace next to a sign in the operand field before
> md_assemble sees the line, so rejects valid insn: `if rX > N goto +M'
> The registered testsuite does not catch either, as it only ever
> writes conditional jumps with label operands. So v2 retains the v1
> approach to reject a template whose literal text stops in the
> middle of a name, letting a later template match the whole mnemonic.
>
> Tested on bpf-unknown-none: 59 expected passes, no failures.
>
> [1] https://lore.kernel.org/bpf/20260821201316.1059129-1-vineet.gupta@linux.dev/
> [2] https://gcc.gnu.org/pipermail/bpf/2026-August/000192.html
>
> Vineet Gupta (2):
>    gas: bpf: actually run the pseudo-C spacing test
>    PR 34558: bpf: don't mis-assemble `gotol' with signed offset
>
>   gas/config/tc-bpf.c                           | 28 ++++++++++++++++++-
>   gas/testsuite/gas/bpf/bpf.exp                 |  3 ++
>   .../gas/bpf/jump-gotol-signed-pseudoc.d       | 15 ++++++++++
>   .../gas/bpf/jump-gotol-signed-pseudoc.s       | 10 +++++++
>   gas/testsuite/gas/bpf/spacing-pseudoc.d       |  2 +-
>   5 files changed, 56 insertions(+), 2 deletions(-)
>   create mode 100644 gas/testsuite/gas/bpf/jump-gotol-signed-pseudoc.d
>   create mode 100644 gas/testsuite/gas/bpf/jump-gotol-signed-pseudoc.s
>



More information about the Binutils mailing list