[v3,07/15] gas: Warn if SFrame FDE is skipped due to non-default return column
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_binutils_build--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_binutils_check--master-arm |
success
|
Testing passed
|
Commit Message
Print a warning message if SFrame FDE is skipped due to a non-default
DWARF return column (i.e. return address (RA) register number). This
may be caused by the use of CFI directive .cfi_return_column with a
non-default return address (RA) register number in the processed
assembler source code.
Warning: skipping SFrame FDE due to non-default DWARF return column
gas/
* gen-sframe.c: Warn if SFrame FDE is skipped due to non-default
DWARF return column.
gas/testsuite/
* gas/cfi-sframe/common-empty-3.d: Update test case to expect
for new warning message when SFrame FDE is skipped due to
a non-default DWARF return column.
Reviewed-by: Andreas Krebbel <krebbel@linux.ibm.com>
Reviewed-by: Indu Bhagat <indu.bhagat@oracle.com>
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
---
Notes (jremus):
Changes v2 -> v3:
- Enhance comment in code as suggested by Indu.
- Corrected formatting of ChangeLog in commit message.
Without this patch the assembler would generate incomplete SFrame
information without warning for the s390-specific SFrame error test
case 4, that gets introduced by patch "s390: Initial support to
generate .sframe from CFI directives in assembler".
gas/gen-sframe.c | 10 +++++++---
gas/testsuite/gas/cfi-sframe/common-empty-3.d | 1 +
2 files changed, 8 insertions(+), 3 deletions(-)
Comments
On 4/12/24 07:47, Jens Remus wrote:
> Print a warning message if SFrame FDE is skipped due to a non-default
> DWARF return column (i.e. return address (RA) register number). This
> may be caused by the use of CFI directive .cfi_return_column with a
> non-default return address (RA) register number in the processed
> assembler source code.
>
> Warning: skipping SFrame FDE due to non-default DWARF return column
>
> gas/
> * gen-sframe.c: Warn if SFrame FDE is skipped due to non-default
> DWARF return column.
>
> gas/testsuite/
> * gas/cfi-sframe/common-empty-3.d: Update test case to expect
> for new warning message when SFrame FDE is skipped due to
> a non-default DWARF return column.
>
OK.
Thanks
> Reviewed-by: Andreas Krebbel <krebbel@linux.ibm.com>
> Reviewed-by: Indu Bhagat <indu.bhagat@oracle.com>
> Signed-off-by: Jens Remus <jremus@linux.ibm.com>
> ---
>
> Notes (jremus):
> Changes v2 -> v3:
> - Enhance comment in code as suggested by Indu.
> - Corrected formatting of ChangeLog in commit message.
>
> Without this patch the assembler would generate incomplete SFrame
> information without warning for the s390-specific SFrame error test
> case 4, that gets introduced by patch "s390: Initial support to
> generate .sframe from CFI directives in assembler".
>
> gas/gen-sframe.c | 10 +++++++---
> gas/testsuite/gas/cfi-sframe/common-empty-3.d | 1 +
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c
> index 1269b2b77c54..fe8b24906c1b 100644
> --- a/gas/gen-sframe.c
> +++ b/gas/gen-sframe.c
> @@ -1343,9 +1343,12 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx,
>
> xlate_ctx->dw_fde = dw_fde;
>
> - /* If the return column is not RIP, SFrame format cannot represent it. */
> + /* SFrame format cannot represent a non-default DWARF return column reg. */
> if (xlate_ctx->dw_fde->return_column != DWARF2_DEFAULT_RETURN_COLUMN)
> - return SFRAME_XLATE_ERR_NOTREPRESENTED;
> + {
> + as_warn (_("skipping SFrame FDE due to non-default DWARF return column"));
> + return SFRAME_XLATE_ERR_NOTREPRESENTED;
> + }
>
> /* Iterate over the CFIs and create SFrame FREs. */
> for (cfi_insn = dw_fde->data; cfi_insn; cfi_insn = cfi_insn->next)
> @@ -1355,7 +1358,8 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx,
> if (err != SFRAME_XLATE_OK)
> {
> /* Skip generating SFrame stack trace info for the function if any
> - offending CFI is encountered by sframe_do_cfi_insn (). */
> + offending CFI is encountered by sframe_do_cfi_insn (). Warning
> + message already printed by sframe_do_cfi_insn (). */
> return err; /* Return the error code. */
> }
> }
> diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-3.d b/gas/testsuite/gas/cfi-sframe/common-empty-3.d
> index 5914c620760d..d17521dd88ea 100644
> --- a/gas/testsuite/gas/cfi-sframe/common-empty-3.d
> +++ b/gas/testsuite/gas/cfi-sframe/common-empty-3.d
> @@ -1,4 +1,5 @@
> #as: --gsframe
> +#warning: skipping SFrame FDE due to non-default DWARF return column
> #objdump: --sframe=.sframe
> #name: SFrame supports only default return column
> #...
@@ -1343,9 +1343,12 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx,
xlate_ctx->dw_fde = dw_fde;
- /* If the return column is not RIP, SFrame format cannot represent it. */
+ /* SFrame format cannot represent a non-default DWARF return column reg. */
if (xlate_ctx->dw_fde->return_column != DWARF2_DEFAULT_RETURN_COLUMN)
- return SFRAME_XLATE_ERR_NOTREPRESENTED;
+ {
+ as_warn (_("skipping SFrame FDE due to non-default DWARF return column"));
+ return SFRAME_XLATE_ERR_NOTREPRESENTED;
+ }
/* Iterate over the CFIs and create SFrame FREs. */
for (cfi_insn = dw_fde->data; cfi_insn; cfi_insn = cfi_insn->next)
@@ -1355,7 +1358,8 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx,
if (err != SFRAME_XLATE_OK)
{
/* Skip generating SFrame stack trace info for the function if any
- offending CFI is encountered by sframe_do_cfi_insn (). */
+ offending CFI is encountered by sframe_do_cfi_insn (). Warning
+ message already printed by sframe_do_cfi_insn (). */
return err; /* Return the error code. */
}
}
@@ -1,4 +1,5 @@
#as: --gsframe
+#warning: skipping SFrame FDE due to non-default DWARF return column
#objdump: --sframe=.sframe
#name: SFrame supports only default return column
#...