From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id BE4333858D38 for ; Thu, 22 Sep 2022 17:56:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BE4333858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28MH3wV6019665 for ; Thu, 22 Sep 2022 17:56:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=message-id : date : to : from : subject : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=f09TesUlBg2sbr+kDbVdhtD2HpzDSR2vawFzBIeIk7s=; b=sbM77ZWeAwlr5taRcH95ygus1yafqKaTT0ybJ4zqSfQ3IoCK3wj9/At7tOXwptlaMnsq Qn8o7EVhOK4NdKsfNCKbHO8hJIXk9D1pNT5kTR/hYBbgynjexjucY2epamyXYEW/YnuD F+YpWyYsYVBaC1NPdnfqsz6BvJSqDT1aQovk3x5rrX7S0b2j4njrezY+CS3ZR/igNgRg TkpGZ+BJUftrwnz3kOfqZjfpwMzXaIjbkLW0Ei4jiSxr0ViSGgFQaNBGt1+k/sOE5iM2 a9db9vR8n1bM1dJ2n6aQpUiNcE3i75ZpshMjlFexm4K8C37Qd9Txu6kyAnDxSnP1YZ9h oQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jn68mec5p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 22 Sep 2022 17:56:23 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 28MG8Gh1005609 for ; Thu, 22 Sep 2022 17:56:22 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2176.outbound.protection.outlook.com [104.47.55.176]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jp3cqvn7k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 22 Sep 2022 17:56:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B5ah8VWEHfl5eYA2f3vU/4NWQ0hcn+2tzCyKDDoT8XbjiMX3cbEVn9WG2+pkC02AuPDMjqkBcxd+KFTX5Q+t+HBgUPLF0e1tBXbX7e9X9iaN5EhseWcJFpd66EsP0gobOBi3H3+7PcEXJf3F78lUsQ6fAToMEouZZONnT5u1jfsKd+6ra829AypotoAWYgTiJd8IvN2C/XKVOjxbrcdOLqIpPGn4gdURzAxuyfXYz/kPv9uIsQj4X6GZ6IrbJ+LqRjDLBtoiP3CCSvv5giyHvPgmaT9HmAV3dUpDH4nJxvAttL220ryhbqRr35Ti8w4f+W/TUJpEYJIrZEd7lSw60A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=f09TesUlBg2sbr+kDbVdhtD2HpzDSR2vawFzBIeIk7s=; b=B58AwkqPwAnEE9vO2Vrl8ZC9nQ3D6s26sCZ8btF5voJl55nik9A415NjCqiAhu+k7D7IqFcMj+LD6DwBMBCiNTKuK2ykZUyGWbI997yfnAlCjpOF2yGINMhdcee6Oap+e9JLQ0g4lgM16yJ+0GGbcxTpI5acHrEzYIFUgQ/0tBtDEUWzvbT9JqePz1dnNLvq/PaUY3T4SaFjy84W8jAQ/iGncxUEx7F47ReIYYWp8RNhmuiyXXPAqTURlOmcDIYXyx0HtJZleqTeMR1yaNONTuDQfIJK1LJKrieJHy1l1q/lF43juL9Zyy5VKuc4gwU8cTE4hCEPIsN0ClEcj+1VTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f09TesUlBg2sbr+kDbVdhtD2HpzDSR2vawFzBIeIk7s=; b=u2YkXNNd4INOZWAFwJEV+AQu0JG5yYQq3z0plz6AxdE/VIg3gaLtrPfZSTpmD5HZk3xJdN9jFxj/xgZ0ks0MQJq0W6eGGjkiYKfM6D0igHwKW07b+HRv7kgWquG2x+lQYMEMUH4JPgeSdPs1sWcxcIlAdfsvyYLldlaPQ2WmYrQ= Received: from SA2PR10MB4636.namprd10.prod.outlook.com (2603:10b6:806:11e::10) by MN0PR10MB5957.namprd10.prod.outlook.com (2603:10b6:208:3cf::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.18; Thu, 22 Sep 2022 17:56:21 +0000 Received: from SA2PR10MB4636.namprd10.prod.outlook.com ([fe80::6d02:6021:533d:56a5]) by SA2PR10MB4636.namprd10.prod.outlook.com ([fe80::6d02:6021:533d:56a5%3]) with mapi id 15.20.5654.019; Thu, 22 Sep 2022 17:56:20 +0000 Message-ID: <3899fb9d-fe87-ce71-2938-844a9715e3e2@oracle.com> Date: Thu, 22 Sep 2022 10:56:17 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Content-Language: en-US To: "binutils@sourceware.org" From: Vladimir Mezentsev Subject: Stack unwind details in gprofng Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SJ0PR03CA0274.namprd03.prod.outlook.com (2603:10b6:a03:39e::9) To SA2PR10MB4636.namprd10.prod.outlook.com (2603:10b6:806:11e::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PR10MB4636:EE_|MN0PR10MB5957:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e85ec58-253a-4fbe-24a4-08da9cc3c192 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Hku+/k+nuWVC1NfpJudU/A8NF/LJ7Plch846dO8CozT9olsyVLB4WqgavP95HH84Nuady64VdNr3xCw1GGTE5Y7rpUaG+YNEC6kDMtOTzKbeMlI8U+uWGumf49+5PjMJpwTM+Ey+PSEORgsFG5e8GaBCUlOpgDyxyv5yLgy4ZDlcONqSariBdNQj+dlkieb1Wm3kHq5SsXeoIX04VaOtxyj+Bt8J9i3YWWIHWy94slxOPMbRCG+l+gZrRb1fMFMmPwxZqXTKuoctMpt3tGn0EIVtAbf0kKWplBzuy0pSBJqvTALHO8uu5ZoGm0k/ucVHZ1FqsEGEB0RCx8o5uzpFp3kJah5P95AC4+Q/5b/18kQkP5nIVTUQUW/+soEpu2n2JRNbQLFpS2E3RN7r66AWEOIwsZKLOk+SpvibforytyUbT4d39uUzgwG6DXmOQI4AuTO1DOSfm4qGUiGaeaDp7ilx+RgL/VLAmB2C/ijrpWApmYESW8bREiSa549OKXu8dlmlbNtizywubBp4S4cSg1wfiVQVp0kN+Jaf3TTG1JcuQAYkH8rXOycSqOwg8FsFnAniZDiU+EaWgP+4Kr4+MRG+5iB+Vwv6Zn5H4OE1DWPazh0cuW36cHUWhFL6zqkCISSWZCoTviq5oyaip6ASF+oxiCQ3UTO+p63FWMCn72m7/k6jD+uj/Pd6FcCHSdZpSQZ5tZGtHjpjRrHGDv3UNYbCFNZxqsHR0YYRegfeYMwHDMnmZ7g0r402LAYHETnrL1RsBG+qERH+vInbM5TDLZm4LAx8PGodsbdSS4ADiyl/ZPaU9lR/UXDMUn7KGN6H X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4636.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6486002)(31686004)(478600001)(6666004)(41300700001)(8676002)(316002)(66946007)(83380400001)(186003)(44832011)(66556008)(84970400001)(6916009)(66476007)(38100700002)(6512007)(86362001)(2906002)(5660300002)(8936002)(2616005)(31696002)(36756003)(6506007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aWNNcU12SjZ4RDNkeHZyRVFJVHd1ZTFYajdnRTN0UHkvdjJjNUY2WWNMYXhk?= =?utf-8?B?RXZJekxuTzJuWkRBdC9GL2srVzYwU1VxSXMrS2x3SnE3eENKbUhjUXBHUWNz?= =?utf-8?B?U2g4U2lodXpYQ2ZyYmNOYUtyYkcvblg1RUVGWEpFVkRZZkJ4QWNQNDk0TlE1?= =?utf-8?B?RzZXVW5acGJtQ2lod3g0SWp1RDZMdGNmajJuNStvYzBGZVBhazFiRzR5cGFX?= =?utf-8?B?TFVSa1B1UDlwdE1leENDczRPaVR3YlZUTld5T3FPTEovcGl5aHVEQkJTVXIr?= =?utf-8?B?eWpTVjc1QTloelA0RmE5UFRkTkZZekQ0RnVjYmNvU3ZoaXQxRURCZnJJYjJV?= =?utf-8?B?cmxzWjNuSnZJR3ZMOWdNaFR4Sk43ZTBvd2NES2twRDhXZDZ1Q1NoTTFuRVdy?= =?utf-8?B?dFVJVytXdnMxeGNodXJYRlYvWVoyTmcvckc1U1NKNXU1S1pJYk1SYXY5aDlY?= =?utf-8?B?SCtsYlJXbEI4a3RFV25Sejc0YWdZZFR5UDlSMS9KZWIvQnF1Z20rRUlKOVpQ?= =?utf-8?B?M3M2cTVTT1ZPNnhJRkVVRDNxUUZxTy9NeDZPVkpRTldUV1dqdzUwUmZzOFdo?= =?utf-8?B?UVVBcHNhOTJQakxZdmRVa0p6ajVFSkdKUVRsRThLOXo5TGJ0SUF0YWNMRFdK?= =?utf-8?B?WllMSzF5MVRZZG1OeUJmMEdzaDQ5SG9RclNlT3ZUbjIrY2svU3g2U3Vjd2Rr?= =?utf-8?B?eGNoK0JHdmpMdWwvckF0UzZEOFZOSTFQdHh0aFFNQW1neUJCMEV3OFVNZmlx?= =?utf-8?B?K0tIRkc5anJLV3lGN0tLQzdHY2JWeGNQRUJYOHB2SXAwZ2ZoS1dZelF4MnFI?= =?utf-8?B?ZkIydGNEQklHMy9JQ25oQmNoZk9RY1lPV1d6Q0hlNU9tTzRCZTMxTDRFV0FQ?= =?utf-8?B?cHpZOWh6cWhNSTYyYkRRQTdONkxma1ZwMHA3MXA0Y0s5d2JYNzc1bFl3MW9z?= =?utf-8?B?UzY3QmJzZmNSUzRqZmMrb0E5WWFUWXlSeFFPTlBVcGtXcW14UXUzKy9zSGQx?= =?utf-8?B?Rk4zQ29HMVRXWG5lMkxvUDBIb1ZvRVBMbjdTeFVzMUpnYjN5dXEvSTUzVVU3?= =?utf-8?B?eVViSzNKczJLRnJNMUhyWTJzYWJBTklmUEl6ZnhYYWZrSFhqb3pmM0NwVGZT?= =?utf-8?B?SDFvRXcrTzY4a2RGbWM2eitrazRHVW5SRS9lMUxBbEpwU1dLK1hjZE5wWXpu?= =?utf-8?B?QWtVdFJJeGpqKzhBZFZ3ODkxMk5hNmgvL2JrT1ljSUxuSlpnSURzNHZrVDdP?= =?utf-8?B?aXIrWnRaa1ZzUDNYL1F4ZlR1OUoycnEraFZXZG93RGpnSmpZWCtiVnFvcHlG?= =?utf-8?B?Qkw2OUc4NmdFaTZNaVFhSXNqWE1QQkpXNjJROENUV1Y0aGVHV1IzMFJLcWdT?= =?utf-8?B?N3pVOVV2ME5qRTUxQkc2Z2VZdDhEUUdlcmNlRytOVEJ6d2Yvbys3akozeDly?= =?utf-8?B?c0hpNkZvV2ExZkhaMVdBOTRuMUU1Njh1OE9KczAzRWVoTGZlbGRmMjh5NmtV?= =?utf-8?B?TVZvYUpKdkFGeTJLbG5QRkJjK0NpS2NsWFExZ0IzUHdEbUlNVitocHVUTGZG?= =?utf-8?B?OWozTnp6NjZ4Z0grWmt1aXN6dTZrdzVweFYxOFV5RW1vNitxTHR2TFU3SkVR?= =?utf-8?B?QmVKMm5xdUhXSzFnZFJyRTJwc3R3WG1NZ0ZiY01NdnFtbXh1Tmd5aEhhN25Z?= =?utf-8?B?MTEybUNsY1dycXVudlVHNzY1VlYyUEk4ZnRpV1E5MTFkU0dJNE1iOE90OUZR?= =?utf-8?B?Z0pITmpkeGkxZjBpVSsvbVhBTEV6bWZQVWxnZzlQL0hLN01kRldHWjJ6RjNP?= =?utf-8?B?MERIbEpzS0Y2d3pFSmdqSUZ2MHlna0oxVHRkeW1nVnB0Z0ZyMzJNS3BXdVE3?= =?utf-8?B?UFhhZVRzSHIyNVJPSExGK2RZZGwwcDMrekhoYVYrRzlpeHB2VDkrR0pFbVVT?= =?utf-8?B?VnFFN2E1UWsrUmJNa0g3cmJ1SkpObmxCM0FrTElFeFM0aUkzSVFocjJUSy9X?= =?utf-8?B?RXRjL2s2Um9CNXIraTZBdHovdVYxeVBNcm91Y0s2blFoZFpWUnk0a0FuVVpH?= =?utf-8?B?azJoMFlmNUhRL0Q4MWlFaXFEZmZ1N2ErV1J1L0NDcFByQjd0RzFuNW00S1hj?= =?utf-8?B?NzBSVm1QMGNpNytLQkZVa2NJeTFlSlBENVV3TTFLNE9JS2RlcDFudHYzWWZw?= =?utf-8?Q?bF2eyZLgLC17SxjwkIaSuJU=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e85ec58-253a-4fbe-24a4-08da9cc3c192 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4636.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2022 17:56:20.8044 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WcD+N3kDVDmQg/t8je4JDdycWX5oH0Mco8nj3PfsduSq/WoZopBvOjswC0EPgNmOmq2M4VEJ5U8lIr4vYKa2aKxkynh4s8IAM2I8tLizM0k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR10MB5957 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-22_12,2022-09-22_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 spamscore=0 adultscore=0 mlxscore=0 malwarescore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209220118 X-Proofpoint-ORIG-GUID: 4vaqxKOY0NCNauznjtwkmNV3Hivw5fdv X-Proofpoint-GUID: 4vaqxKOY0NCNauznjtwkmNV3Hivw5fdv X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,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: As a follow on to the discussion on this at Cauldron 2022, we thought it may be useful to explain our stack unwind in more detail. Please find this below. We are aware of more recent developments we may be able to leverage and in any case are very open to suggestions for improvement. Kind regards, Vladimir PS All details can be found in binutils-gdb.git/gprofng/libcollector/unwind.c. ====== Our approach The basic issue with our x86 stack unwind is that we don't know if we can trust the frame-pointer register. So we walk instructions to find a return instruction, at which point we know the return address is on the top of the stack, etc. This is a challenge when we encounter "jmp *(reg)" instruction, where we are expected to jump to the (unknown-to-us) contents of a register. Our "jmp_reg" code attempts to keep track of the context for such a jump, deferring any handling of such a difficult case. We continue with other contexts, hoping that some other walk will take us to a return instruction. If no other walk helps, we return to "jmp_reg" contexts. While we don't know the jump target, it is possible that the bytes immediately following the jmp_reg instruction represent one possible target, as might be the case when a "switch" statement is compiled. Unfortunately, the bytes following a "jmp_reg" instruction might instead be a jump target from somewhere else -- execution might never "fall through" from the preceding "jmp_reg". Those bytes might not even be instructions at all. There are many uses of jmp_reg instructions beyond just compiling switch statements. If the above approach fails and we did not find a return instruction, we try to use the frame-pointer register. On aarch64 we use dladdr() from libdl.so.  We're looking to at Paul Brook's implementation (https://github.com/gcc-mirror/gcc/blob/master/libgcc/config/arm/unwind-arm.c)