Indu Bhagat 055c525b8f [SFrame-V3][RFC] sframe: gas: testsuite: enable flex FDE for s390x
This commit amalgamates a patch set proposed by Jens Remus to enable the
SFrame Version 3 Flexible FDE Type (SFRAME_FDE_TYPE_FLEX) generation for
the s390x ABI.

Previously, s390x relied on architecture-specific encoding (shifting register
numbers into offset fields) to represent register recovery rules.  This limited
the complexity of CFI that could be supported.  With Flex FDE enabled:
  - s390x can now represent .cfi_def_cfa using non-SP/FP registers.
  - The architecture-specific function s390_sframe_xlate_do_register () in GAS
    is replaced by the generic Flex FDE generation path.
  - The SFrame V3 specific macros for s390x register encoding are removed
    from libsframe/include, as the generic Flex FDE format handles explicit
    register columns natively.

The testsuite is updated to replace negative tests (which asserted
warnings or empty SFrame generation for these patterns) with positive
tests verifying valid Flex FDE generation.

Co-authored-by: Jens Remus <jremus@linux.ibm.com>

TBD:
  - Discuss with s390x maintainer.

gas/
	* config/tc-s390.c (s390_support_flex_fde_p): Return true to
	enable Flex FDE generation.
	* gen-sframe.c (s390_sframe_xlate_do_register): Disable s390x
	specific implementation.
	(sframe_xlate_do_register): Invoke generic Flex FDE path now
	that flex FDE generation is supported.
gas/testsuite/
	* gas/cfi-sframe/cfi-sframe-s390x-err-1.d: Removed.
	* gas/cfi-sframe/cfi-sframe-s390x-err-1.s: Moved to...
	* gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.s: ...here.
	* gas/cfi-sframe/cfi-sframe-s390x-err-2.d: Removed.
	* gas/cfi-sframe/cfi-sframe-s390x-err-2.s: Moved to...
	* gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.s: ...here.
	* gas/cfi-sframe/cfi-sframe-s390x-fpra-register-1.d: Update to
	expect Flex FDE output.
	* gas/cfi-sframe/cfi-sframe-s390x-fpra-register-2.d: Likewise.
	* gas/cfi-sframe/cfi-sframe.exp: Run renamed tests.
include/
	* sframe.h (SFRAME_V3_S390X_OFFSET_IS_REGNUM): Remove.
	(SFRAME_V3_S390X_OFFSET_ENCODE_REGNUM): Remove.
	(SFRAME_V3_S390X_OFFSET_DECODE_REGNUM): Remove.
libsframe/
	* sframe-dump.c (sframe_s390x_offset_regnum_p): Return false
	for SFrame V3.
	(sframe_s390x_offset_decode_regnum): Remove V3 support.

---
[New in V2]

This commit is an amalgamation of a set of patches proposed by Jens to
use flex FDE for s390x.  For ease of review, here are the details of the
diffs brought over:

makeshift s390x flex FDE use

gas/
	* config/tc-s390.c (s390_support_flex_fde_p): Return true to
	enable FLEX FDE generation for s390x.
	* gen-sframe.c (s390_sframe_xlate_do_register): Remove definition.
	(sframe_xlate_do_register): Use sframe_support_flex_fde_p () and
	invoke the FLEX FDE generation path.

s390x: Jens' patch to move err tests to flex ones

Bring over the testsuite specific component from:

commit b4e5e9e670
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Fri Dec 12 16:03:33 2025 +0100

    s390: sframe: gas: Represent .cfi_def_cfa[_register] for non-SP/FP reg. using FLEX_TOPMOST_FRAME

    Signed-off-by: Jens Remus <jremus@linux.ibm.com>

ChangeLog:

        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-1.s: Move to...
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.s: ...here.
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-2.s: Move to...
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.s: ...here.
        * gas/testsuite/gas/cfi-sframe/cfi-sframe.exp:
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-1.d: Removed.
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-2.d: Removed.
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.d: New test.
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.d: New test.

TODO: fixup! s390: sframe: gas: Represent .cfi_def_cfa[_register] for non-SP/FP reg. using FLEX_TOPMOST_FRAME

cherry-pick of the following commit

commit 9a39216b87
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Mon Dec 15 15:54:17 2025 +0100

    TODO: fixup! s390: sframe: gas: Represent .cfi_def_cfa[_register] for non-SP/FP reg. using FLEX_TOPMOST_FRAME

    Why does FLEX_TOPMOST_FRAME always have RA tracking information?

ChangeLog:

        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.d:
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.d:

bring Jens fix fpra-register-1.d fpra-register-2.d

commit 69c3a613a4
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Fri Dec 12 16:05:01 2025 +0100

    s390: gas: sframe: Represent .cfi_register FP/RA using FLEX_TOPMOST_FRAME

    Signed-off-by: Jens Remus <jremus@linux.ibm.com>

still needs adjustment

ChangeLog:

        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-1.d:
        * gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-2.d:

testsuite: fixup s390x tests now that 2 RA offsets are not always forcefully emitted

ChangeLog:
	* gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-1.d
	* gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-2.d
	* gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.d
	* gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.d

cleanup sframe.h and sframe-dump.c based on Jens' patch

 commit 69c3a613a4
Author: Jens Remus <jremus@linux.ibm.com>
Date:   Fri Dec 12 16:05:01 2025 +0100

    s390: gas: sframe: Represent .cfi_register FP/RA using FLEX_TOPMOST_FRAME

    Signed-off-by: Jens Remus <jremus@linux.ibm.com>

include/

	* sframe.h (SFRAME_V3_S390X_OFFSET_IS_REGNUM): Remove.
	(SFRAME_V3_S390X_OFFSET_ENCODE_REGNUM): Remove.
	(SFRAME_V3_S390X_OFFSET_DECODE_REGNUM): Remove.

libsframe/

	* sframe-dump.c (sframe_s390x_offset_regnum_p): No more
	necessary for V3, now that it uses FLEX FDE instead.
	(sframe_s390x_offset_decode_regnum): Likewise.
2026-01-06 23:50:34 -08:00
2025-11-03 10:59:50 +10:30
2025-07-13 08:35:45 +01:00
2026-01-06 15:14:50 -05:00
2026-01-06 15:15:02 -05:00
2025-11-03 10:59:50 +10:30
2025-02-28 16:06:25 +00:00
2025-07-13 08:35:45 +01:00
2025-11-03 09:53:04 +00:00
2025-11-03 09:53:04 +00:00
2025-11-03 09:53:04 +00:00
2025-10-02 07:42:18 +08:00
2025-10-02 07:42:18 +08:00
2025-09-07 04:06:01 +01:00

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README, and so on. That'll give you
info about this package -- supported targets, how to use it, how to report
bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.
Description
Unofficial mirror of sourceware binutils-gdb repository. Updated daily.
Readme 944 MiB
Languages
C 50.4%
Makefile 22.7%
Assembly 13.2%
C++ 5.9%
Roff 1.5%
Other 5.7%