/* Build the cfg of ginsn(s) of the function. */
if (!frchain_now->frch_ginsn_data->gcfg_apt_p)
{
- as_warn (_("Untraceable control flow for func '%s'; Skipping SCFI"),
- S_GET_NAME (func));
+ as_bad (_("untraceable control flow for func '%s'"),
+ S_GET_NAME (func));
goto end;
}
+++ /dev/null
-#as: --scfi=experimental -W
-#objdump: -Wf
-#name: Synthesize CFI for add insn
-
-#pass
+++ /dev/null
-.*Assembler messages:
-.*12: Warning: SCFI ignores most user-specified CFI directives
-.*24: Warning: Untraceable control flow for func 'foo'; Skipping SCFI
+++ /dev/null
-# Testcase with a variety of "change of flow instructions"
-#
-# Must be run with -W so it remains warning free.
-#
-# This test does not have much going on wrt synthesis of CFI;
-# it just aims to ensure x8_64 -> ginsn decoding behaves
-# gracefully for these "change of flow instructions"
- .text
- .globl foo
- .type foo, @function
-foo:
- .cfi_startproc
- addq %rdx, %rax
- loop foo
- notrack jmp *%rax
- call *%r8
- jecxz .L179
- jmp *48(%rdi)
- jo .L179
-.L179:
- ret
- .cfi_endproc
-.LFE0:
- .size foo, .-foo
.*Assembler messages:
.*50: Warning: SCFI ignores most user-specified CFI directives
-.*52: Warning: Untraceable control flow for func 'foo'; Skipping SCFI
+.*52: Error: untraceable control flow for func 'foo'
run_list_test "ginsn-add-1" "--scfi=experimental -ali"
run_list_test "ginsn-pop-1" "--scfi=experimental -ali"
run_list_test "ginsn-push-1" "--scfi=experimental -ali"
+ run_list_test "ginsn-cofi-1" "--scfi=experimental -ali -W"
run_dump_test "scfi-cfi-label-1"
run_list_test "scfi-cfi-label-1" "--scfi=experimental --warn"
run_dump_test "scfi-pushsection-2"
run_list_test "scfi-pushsection-2" "--scfi=experimental --warn"
- run_dump_test "scfi-cofi-1"
- run_list_test "scfi-cofi-1" "--scfi=experimental --warn"
run_dump_test "scfi-sub-1"
run_list_test "scfi-sub-1" "--scfi=experimental --warn"
run_dump_test "scfi-sub-2"