From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id CC71F3858C66 for ; Fri, 3 May 2024 12:30:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CC71F3858C66 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CC71F3858C66 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714739425; cv=none; b=RWNsDJi6B7GoW53EsPKolRYCGwUHQYc7xeLZ9wbkXNu0FRkuJ/xSMB/sR6OSzWFz9+SPSkJxbgCxJgz/w53udeVkuEgbe53hdBDX5HlUETqFhHvcMPW2OFJ7ghY28ZSQjERkqiyVjqZXSPrmxsRbTqHuXu1Wk2oy8x+PanfoqVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714739425; c=relaxed/simple; bh=VUjDkDvXvM6HIthipdC1TP3rXgsl1KsfNBlMEbFVxnQ=; h=DKIM-Signature:Message-ID:Date:Subject:To:From:MIME-Version; b=rJvYl7xsZwqaiRADpVqT7Tv7xOiAd9Zrpl8pmOPjs5cXK2t4kBGZ1TUAbeTJxT/m7N4t4TVD01pNIjsCRpEykdaCXEAehp8/26Y48Ih6+s5Oex7HA29jPs7LAfx2Bv2aAKHcegX3TJU0RWahH4mkfotkqlm2hMyKSpXIV+4ZAJk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 443C2Ynb030261; Fri, 3 May 2024 12:30:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pp1; bh=MxjockIiWPythdr6FNz6tzu/ZQoEF0mDy1GIoRS8JBs=; b=O7XPiC96K9+UtsUNDJN3Yxq3Mc7sHuGVIPWYsjQ09RKisvH7fzE9gisvdmeAkqgF3squ ChjSkvJyAuuxsXWeI3HrXjNxi84d2O1PIJ4cguWnioqUtH+RZ5sXJ+FYBuSdtuXx/2YJ +yxeeU8qfxBThci9jA5xSvDRzCDUM7pJtMbaemSpcj4xn1mC/UBqaBa8VAAsPDKx0oLv nuUD2+x1pq3Dx5YpBfKQZVRM+Ki1FHcYht7pTREK5XLP8gkIfySVvx3Cp2TJpipFMTZO zADzcMiwEjXKgAKfjq4vFRMOnRwltFWmNTvkmbQxj+sIKDocNyYCCOD4RhRqBE8ULvx8 Sg== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xvyjw037g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 03 May 2024 12:30:20 +0000 Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 443CAHK4015533; Fri, 3 May 2024 12:30:19 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 3xsed3d63d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 03 May 2024 12:30:19 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 443CUDCo37487058 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 3 May 2024 12:30:15 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A34E52005A; Fri, 3 May 2024 12:30:13 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1D4A72004B; Fri, 3 May 2024 12:30:13 +0000 (GMT) Received: from [9.171.46.7] (unknown [9.171.46.7]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 3 May 2024 12:30:13 +0000 (GMT) Message-ID: Date: Fri, 3 May 2024 14:30:13 +0200 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 09/15] gas: User readable warnings if SFrame FDE is not generated To: Indu Bhagat , binutils@sourceware.org Cc: Andreas Krebbel References: <20240412144718.4191286-1-jremus@linux.ibm.com> <20240412144718.4191286-10-jremus@linux.ibm.com> <5591cd7d-8464-4d71-8f02-aa88af36fcd9@oracle.com> From: Jens Remus Content-Language: en-US Organization: IBM Deutschland Research & Development GmbH In-Reply-To: <5591cd7d-8464-4d71-8f02-aa88af36fcd9@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: mQc3g7cMMcfdVJJnrscWJZGcF293OA1b X-Proofpoint-GUID: mQc3g7cMMcfdVJJnrscWJZGcF293OA1b Content-Transfer-Encoding: 8bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.650,FMLib:17.11.176.26 definitions=2024-05-03_08,2024-05-03_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 malwarescore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 mlxlogscore=999 priorityscore=1501 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2405030090 X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Am 18.04.2024 um 22:33 schrieb Indu Bhagat: > On 4/12/24 07:47, Jens Remus wrote: >> The following generic warning message, which is printed whenever the >> assembler skips generation of SFrame FDE, is not very helpful for the >> user: >> >>    skipping SFrame FDE due to DWARF CFI op (0x) >> >> Whenever possible print meaningful warning messages, when the assembler >> skips generation of SFrame FDE: >> > > My intention below is to keep warning messages terse but useful. > >> - skipping SFrame FDE due to .cfi_def_cfa defining non-SP/FP register >>    as CFA base register > > .cfi_def_cfa _is_ used to specify the CFA base register. So I suggest we > re-word this to following (and hence, removing the redundancy): > > skipping SFrame FDE; non-SP/FP register in .cfi_def_cfa Done. > > or if (;) is unappetizing: > > skipping SFrame FDE due to non-SP/FP register in .cfi_def_cfa > > (replacing ; with "due to", if you prefer, applies to all comments below) I like the terse format. Especially as it saves some characters for the longer reason descriptions. > >> - skipping SFrame FDE due to .cfi_def_cfa_register defining non-SP/FP >>    register as CFA base register > > skipping SFrame FDE; non-SP/FP register in .cfi_def_cfa_register Done. > >> - skipping SFrame FDE due to .cfi_def_cfa_offset without CFA base >>    register in effect > > skipping SFrame FDE; .cfi_def_cfa_offset specified when no CFA base > register in effect "when no" or "without" (see "without prior SFrame FRE state" below)? > >> - skipping SFrame FDE due to .cfi_def_cfa_offset with non-SP/FP register >>    as CFA base register in effect > > I find this very confusing.  Can we not add this warning?  Such a case > should not happen as we have handled the respective cases in > sframe_xlate_do_def_cfa and sframe_xlate_do_def_cfa_register ? Done. I finally got the point. I have added the following comment as explanation: /* No CFA base register in effect. Non-SP/FP CFA base register should not occur, as sframe_xlate_do_def_cfa[_register] would detect this. */ > >> - skipping SFrame FDE due to .cfi_val_offset specifying {FP|RA} register > > skipping SFrame FDE; FP/RA register in .cfi_val_offset Done. > >> - skipping SFrame FDE due to .cfi_remember_state without SFrame FRE >>    state > > skipping SFrame FDE; .cfi_remember_state without prior SFrame FRE state Done. > >> - skipping SFrame FDE due to .cfi_register specifying {SP|FP|RA} >>    register > > skipping SFrame FDE; FP/RA register in .cfi_register Done. > >> - skipping SFrame FDE due to non-default return-address register > > skipping SFrame FDE; non-default RA register Done. Using the abbreviation "RA" instead of "return address" aligns well with the other warnings. For consistency I have changed the following SFrame warnings as well: skipping SFrame FDE; CFI insn () skipping SFrame FDE; FP without RA on stack skipping SFrame FDE; .cfi_window_save > >> >> gas/ >>     * gen-sframe.h (SFRAME_FRE_BASE_REG_INVAL): New macro for >>     invalid SFrame FRE CFA base register value of -1. >>     * gen-sframe.c: User readable warnings if SFrame FDE is not >>     generated. >> >> gas/testsuite/ >>     * gas/cfi-sframe/common-empty-1.d: Update generic SFrame test >>     case to updated warning message texts. >>     * gas/cfi-sframe/common-empty-2.d: Likewise. >>     * gas/cfi-sframe/common-empty-3.d: Likewise. >> >> Reviewed-by: Andreas Krebbel >> Signed-off-by: Jens Remus >> --- >> >> Notes (jremus): >>      Changes v2 -> v3: >>      - Updated SFrame warning message texts as suggested by Indu, >> except for >>        the .cfi_def_cfa[_register] ones. I think it would be helpful >> for the >>        user to know that the issue is caused by a non-SP/FP register. But >>        maybe that is because I am new to CFI and those that would >> actually >>        debug the cause for these warnings would not need this extra >>        information? Anyhow, Indu, if you still prefer your suggestions I >>        would go with yours. >>        The ".cfi_remember_state without SFrame FRE state" warning >> needs to >>        remain, as there would otherwise not be any warning at all. The >> reason >>        is that sframe_do_cfi_insn now expects any of its called CFI >>        processing functions to emit a warning, if they return with an >> error, >>        such as SFRAME_XLATE_ERR_NOTREPRESENTED. Silently skipping >> SFrame FDE >>        does not seem an acceptable approach to me. >>      - Do not test sframe_ra_tracking_p when determining the SFrame >> register >>        name in sframe_register_name. The RA register name does not >> depend on >>        whether RA tracking is used or not. >>      - Corrected formatting of ChangeLog in commit message. >> >>   gas/gen-sframe.c                              | 95 ++++++++++++++----- >>   gas/gen-sframe.h                              |  2 + >>   gas/testsuite/gas/cfi-sframe/common-empty-1.d |  2 +- >>   gas/testsuite/gas/cfi-sframe/common-empty-2.d |  2 +- >>   gas/testsuite/gas/cfi-sframe/common-empty-3.d |  2 +- >>   5 files changed, 75 insertions(+), 28 deletions(-) >> >> diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c >> index f47f51c7a354..a3b6f75cfe85 100644 >> --- a/gas/gen-sframe.c >> +++ b/gas/gen-sframe.c >> @@ -867,7 +867,7 @@ sframe_row_entry_new (void) >>     struct sframe_row_entry *fre = XCNEW (struct sframe_row_entry); >>     /* Reset cfa_base_reg to -1.  A value of 0 will imply some valid >> register >>        for the supported arches.  */ >> -  fre->cfa_base_reg = -1; >> +  fre->cfa_base_reg = SFRAME_FRE_BASE_REG_INVAL; >>     fre->merge_candidate = true; >>     /* Reset the mangled RA status bit to zero by default.  We will >> initialize it in >>        sframe_row_entry_initialize () with the sticky bit if set.  */ >> @@ -922,6 +922,23 @@ sframe_row_entry_initialize (struct >> sframe_row_entry *cur_fre, >>     cur_fre->mangled_ra_p = prev_fre->mangled_ra_p; >>   } >> +/* Return SFrame register name for SP, FP, and RA, or NULL if other.  */ >> + >> +static const char * >> +sframe_register_name (unsigned int reg) >> +{ >> +  if (reg == SFRAME_CFA_SP_REG) >> +    return "SP"; >> +  else if (reg == SFRAME_CFA_FP_REG) >> +    return "FP"; >> +#ifdef SFRAME_FRE_RA_TRACKING >> +  else if (reg == SFRAME_CFA_RA_REG) >> +    return "RA"; >> +#endif >> +  else >> +    return NULL; >> +} >> + >>   /* Translate DW_CFA_advance_loc into SFrame context. >>      Return SFRAME_XLATE_OK if success.  */ >> @@ -990,7 +1007,12 @@ sframe_xlate_do_def_cfa (struct sframe_xlate_ctx >> *xlate_ctx, >>        SFrame stack trace info for the function.  */ >>     if (cfi_insn->u.r != SFRAME_CFA_SP_REG >>         && cfi_insn->u.r != SFRAME_CFA_FP_REG) >> -    return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +    { >> +      as_warn (_("skipping SFrame FDE due to .cfi_def_cfa defining " >> +         "non-SP/FP register %u as CFA base register"), >> +           cfi_insn->u.r); >> +      return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +    } >>     sframe_fre_set_cfa_base_reg (cur_fre, cfi_insn->u.ri.reg); >>     sframe_fre_set_cfa_offset (cur_fre, cfi_insn->u.ri.offset); >>     cur_fre->merge_candidate = false; >> @@ -1015,7 +1037,12 @@ sframe_xlate_do_def_cfa_register (struct >> sframe_xlate_ctx *xlate_ctx, >>        skip creating SFrame stack trace info for the function.  */ >>     if (cfi_insn->u.r != SFRAME_CFA_SP_REG >>         && cfi_insn->u.r != SFRAME_CFA_FP_REG) >> -    return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +    { >> +      as_warn (_("skipping SFrame FDE due to .cfi_def_cfa_register >> defining " >> +         "non-SP/FP register %u as CFA base register"), >> +           cfi_insn->u.r); >> +      return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +    } >>     sframe_fre_set_cfa_base_reg (cur_fre, cfi_insn->u.ri.reg); >>     sframe_fre_set_cfa_offset (cur_fre, last_fre->cfa_offset); >>     cur_fre->merge_candidate = false; >> @@ -1046,7 +1073,16 @@ sframe_xlate_do_def_cfa_offset (struct >> sframe_xlate_ctx *xlate_ctx, >>         cur_fre->merge_candidate = false; >>       } >>     else >> -    return SFRAME_XLATE_ERR_NOTREPRESENTED; >> +    { >> +      if (cur_fre->cfa_base_reg == SFRAME_FRE_BASE_REG_INVAL) >> +    as_warn (_("skipping SFrame FDE due to .cfi_def_cfa_offset without " >> +           "CFA base register in effect")); >> +      else >> +    as_warn (_("skipping SFrame FDE due to .cfi_def_cfa_offset with " >> +           "non-SP/FP register %u as CFA base register in effect"), >> +         cur_fre->cfa_base_reg); >> +      return SFRAME_XLATE_ERR_NOTREPRESENTED; >> +    } >>     return SFRAME_XLATE_OK; >>   } >> @@ -1096,13 +1132,16 @@ sframe_xlate_do_val_offset (struct >> sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, >>        register is not interesting (FP or RA reg), the current >> DW_CFA_val_offset >>        instruction can be safely skipped without sacrificing the >> asynchronicity of >>        stack trace information.  */ >> -  if (cfi_insn->u.r == SFRAME_CFA_FP_REG) >> -    return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +  if (cfi_insn->u.r == SFRAME_CFA_FP_REG >>   #ifdef SFRAME_FRE_RA_TRACKING >> -  else if (sframe_ra_tracking_p () >> -       && cfi_insn->u.r == SFRAME_CFA_RA_REG) >> -    return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +      || (sframe_ra_tracking_p () && cfi_insn->u.r == SFRAME_CFA_RA_REG) >>   #endif >> +      ) >> +    { >> +      as_warn (_("skipping SFrame FDE due to .cfi_val_offset >> specifying %s register"), >> +           sframe_register_name (cfi_insn->u.r)); >> +      return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented.  */ >> +    } >>     /* Safe to skip.  */ >>     return SFRAME_XLATE_OK; >> @@ -1124,7 +1163,11 @@ sframe_xlate_do_register (struct >> sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, >>         || (cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG) >>   #endif >>         || cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG) >> -    return SFRAME_XLATE_ERR_NOTREPRESENTED;  /* Not represented.  */ >> +    { >> +      as_warn (_("skipping SFrame FDE due to .cfi_register specifying >> %s register"), >> +           sframe_register_name (cfi_insn->u.rr.reg1)); >> +      return SFRAME_XLATE_ERR_NOTREPRESENTED;  /* Not represented.  */ >> +    } >>     /* Safe to skip.  */ >>     return SFRAME_XLATE_OK; >> @@ -1142,7 +1185,10 @@ sframe_xlate_do_remember_state (struct >> sframe_xlate_ctx *xlate_ctx) >>        early with non-zero error code, this will cause no SFrame stack >> trace >>        info for the function involved.  */ >>     if (!last_fre) >> -    return SFRAME_XLATE_ERR_INVAL; >> +    { >> +      as_warn (_("skipping SFrame FDE due to .cfi_remember_state >> without SFrame FRE state")); > > "without SFrame FRE state" --> "without prior SFrame FRE state" ? > >> +      return SFRAME_XLATE_ERR_INVAL; >> +    } >>     if (!xlate_ctx->remember_fre) >>       xlate_ctx->remember_fre = sframe_row_entry_new (); >> @@ -1330,21 +1376,19 @@ sframe_do_cfi_insn (struct sframe_xlate_ctx >> *xlate_ctx, >>       default: >>         /* Following skipped operations do, however, impact the >> asynchronicity: >>         - CFI_escape.  */ >> -      err = SFRAME_XLATE_ERR_NOTREPRESENTED; >> -    } >> - >> -  /* An error here will cause no SFrame FDE later.  Warn the user >> because this >> -     will affect the overall coverage and hence, asynchronicity.  */ >> -  if (err) >> -    { >> -      const char *cfi_name = sframe_get_cfi_name (op); >> - >> -      if (!cfi_name) >> -    cfi_name = _("(unknown)"); >> -      as_warn (_("skipping SFrame FDE due to DWARF CFI op %s (%#x)"), >> -           cfi_name, op); >> +      { >> +    const char *cfi_name = sframe_get_cfi_name (op); >> + >> +    if (!cfi_name) >> +      cfi_name = _("(unknown)"); >> +    as_warn (_("skipping SFrame FDE due to DWARF CFI op %s (%#x)"), >> +         cfi_name, op); >> +        err = SFRAME_XLATE_ERR_NOTREPRESENTED; > > <>/GCC/gcc-upstream/gcc/contrib/check_GNU_style.py patch gives: > > === ERROR type #1: blocks of 8 spaces should be replaced with tabs (1 > error(s)) === > gas/gen-sframe.c:1386:0:        err = SFRAME_XLATE_ERR_NOTREPRESENTED; Corrected. > > I dont think it is a must-be-used-script for binutils project, but for > my commits I have used this script to keep code base aligned to same > formatting style. Thanks for sharing! That is really helful! > > PS: Not all errors reported by the script need to be fixed. > >> +      } >>       } >> +  /* Any error will cause no SFrame FDE later.  The user has already >> been >> +     warned.  */ >>     return err; >>   } >> @@ -1361,7 +1405,8 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx, >>     /* SFrame format cannot represent a non-default DWARF return >> column reg.  */ >>     if (xlate_ctx->dw_fde->return_column != DWARF2_DEFAULT_RETURN_COLUMN) >>       { >> -      as_warn (_("skipping SFrame FDE due to non-default DWARF return >> column")); >> +      as_warn (_("skipping SFrame FDE due to non-default >> return-address register %u"), >> +           xlate_ctx->dw_fde->return_column); > > return-address -> "return address" or even just RA. > >>         return SFRAME_XLATE_ERR_NOTREPRESENTED; >>       } >> diff --git a/gas/gen-sframe.h b/gas/gen-sframe.h >> index fbe2fd5d9368..8ed46dbb087b 100644 >> --- a/gas/gen-sframe.h >> +++ b/gas/gen-sframe.h >> @@ -24,6 +24,8 @@ >>   #define SFRAME_FRE_ELEM_LOC_REG        0 >>   #define SFRAME_FRE_ELEM_LOC_STACK    1 >> +#define SFRAME_FRE_BASE_REG_INVAL    ((unsigned int)-1) >> + >>   /* SFrame Frame Row Entry (FRE). >>      A frame row entry is a slice of the frame and can be valid for a >> set of >> diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-1.d >> b/gas/testsuite/gas/cfi-sframe/common-empty-1.d >> index d7756302b559..08731b069229 100644 >> --- a/gas/testsuite/gas/cfi-sframe/common-empty-1.d >> +++ b/gas/testsuite/gas/cfi-sframe/common-empty-1.d >> @@ -1,5 +1,5 @@ >>   #as: --gsframe >> -#warning: skipping SFrame FDE due to DWARF CFI op >> DW_CFA_remember_state \(0xa\) >> +#warning: skipping SFrame FDE due to \.cfi_remember_state without >> SFrame FRE state >>   #objdump: --sframe=.sframe >>   #name: Uninteresting cfi directives generate an empty SFrame section >>   #... >> diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-2.d >> b/gas/testsuite/gas/cfi-sframe/common-empty-2.d >> index 20282c7854e8..e759cddfcc20 100644 >> --- a/gas/testsuite/gas/cfi-sframe/common-empty-2.d >> +++ b/gas/testsuite/gas/cfi-sframe/common-empty-2.d >> @@ -1,5 +1,5 @@ >>   #as: --gsframe >> -#warning: skipping SFrame FDE due to DWARF CFI op >> DW_CFA_def_cfa_offset \(0xe\) >> +#warning: skipping SFrame FDE due to \.cfi_def_cfa_offset without CFA >> base register in effect >>   #objdump: --sframe=.sframe >>   #name: SFrame supports only FP/SP based CFA >>   #... >> diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-3.d >> b/gas/testsuite/gas/cfi-sframe/common-empty-3.d >> index d17521dd88ea..5cc37d5ff440 100644 >> --- a/gas/testsuite/gas/cfi-sframe/common-empty-3.d >> +++ b/gas/testsuite/gas/cfi-sframe/common-empty-3.d >> @@ -1,5 +1,5 @@ >>   #as: --gsframe >> -#warning: skipping SFrame FDE due to non-default DWARF return column >> +#warning: skipping SFrame FDE due to non-default return-address >> register 0 >>   #objdump: --sframe=.sframe >>   #name: SFrame supports only default return column >>   #... > Regards, Jens -- Jens Remus Linux on Z Development (D3303) and z/VSE Support +49-7031-16-1128 Office jremus@de.ibm.com IBM IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats: Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft: Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294 IBM Data Privacy Statement: https://www.ibm.com/privacy/