]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gas: scfi: untraceable control flow should be a hard error
authorIndu Bhagat <indu.bhagat@oracle.com>
Fri, 26 Jan 2024 18:30:18 +0000 (10:30 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Fri, 26 Jan 2024 19:31:35 +0000 (11:31 -0800)
commit91cdbed4d7b3acff951e0f21008a7775a7f23c20
treef8f20ce690cad902b14618b4f42c8ebe981d6534
parent16cbeae1b2757dd661ef936a505c6b3818a52853
gas: scfi: untraceable control flow should be a hard error

PR gas/31284

Currently, if an indirect jump is seen, GCFG (a CFG of ginsns) cannot be
created, and the SCFI machinery bails out with a warning:
  "Warning: Untraceable control flow for func 'foo'; Skipping SCFI"

It is, however, better suited if this is a hard error.  Change it to a
hard error.  Also change the message to skip mentioning "SCFI", because
the error itself may also useful when ginsns are used for other passes
(distinct from SCFI) involving GCFG, like a pass to detect if there is
unreachable code.  Hence, simply say:
  "Error: untraceable control flow for func 'foo'"

gas/
PR gas/31284
* ginsn.c (ginsn_data_end): Use as_bad instead of as_warn.

gas/testsuite/
PR gas/31284
* gas/scfi/x86_64/ginsn-cofi-1.l: Adjust to the expected output
in case of errors.
* gas/scfi/x86_64/scfi-unsupported-cfg-1.l: Error not Warning.
gas/ginsn.c
gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l
gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-1.l