From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 62206 invoked by alias); 1 Aug 2018 13:28:28 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 62180 invoked by uid 89); 1 Aug 2018 13:28:26 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=H*f:sk:ur87nqw, H*f:sk:CAN8C2C, H*i:sk:CAN8C2C, H*i:sk:ur87nqw X-HELO: mail-pf1-f182.google.com Received: from mail-pf1-f182.google.com (HELO mail-pf1-f182.google.com) (209.85.210.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 01 Aug 2018 13:28:25 +0000 Received: by mail-pf1-f182.google.com with SMTP id j26-v6so7858800pfi.10; Wed, 01 Aug 2018 06:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=0Z9X0ZgqnkD88Biq4yaEXSjBiiLzf67inrWJItYaMgA=; b=eKf6bcnQWfCgQIcQO4hOpL6LVtxYJXB61yRgQdcXGzqSgD6YMTc8Y0kiIm/CPHyOlp 6K6aCL2rw0+L7YlG3hswT2GneoXKx4ndD2cA6a5QLbd4MFGDJsSGyFUz8WNfXnym+gtJ J4+uODIC6u4OYFuXvnaq5q8VZDr4WmeBYsBi9xV3xH1J7cBU2FAem8vI+koWB3xoIQVR 9GEbW3BzHNcU/t6b6VTdd00Y42Td3AhzZd3BorqMqiB1VYhJlSHqVUSYEi9JwzHNxtMa zQesoOHP+ricDgjNLayuxqv5zslmww3Tnf0EclFVXgTJjITvxyVENU1RDQFDqtKm0b0y K5Xg== MIME-Version: 1.0 Received: by 2002:a17:90a:35a4:0:0:0:0 with HTTP; Wed, 1 Aug 2018 06:28:23 -0700 (PDT) In-Reply-To: References: From: Alexander Fedotov Date: Wed, 01 Aug 2018 13:28:00 -0000 Message-ID: Subject: Re: AArch64 calling convention in assembly code To: newlib@sourceware.org Cc: gdb@sourceware.org Content-Type: text/plain; charset="UTF-8" X-SW-Source: 2018-08/txt/msg00004.txt.bz2 >>Pushing LR on the stack resolves a problem FP of course, not LR. So the correct code must be like this: _cpu_init_hook: stp x29, x30, [sp, #-16]! mov x29, sp bl _init_vectors bl _flat_map ldp x29, x30, [sp], #16 ret But still my point is that GDB should catch such an error and do not hang. Alex On Tue, Jul 31, 2018 at 9:34 PM, Alexander Fedotov wrote: > Hello dear AArch64 maintainers > Please look into code snippet below from newlib/libgloss/aarch64/rdimon-aem-el3. > > Seems to me this code violates AArch64 calling convention and actually > breaks debugging in GDB. GDB tries to unwind call stack and got > endless reentrancy... > > FUNCTION (_cpu_init_hook): > sub sp, sp, #16 > str x30, [sp, xzr] > bl _init_vectors > bl _flat_map > ldr x30, [sp, xzr] > add sp, sp, #16 > ret > > > We have couple of calls there (_init_vectors, _flat_map). If you'll > try to step into any subroutine you will found that GDB hangs and > can't step anymore. > > Pushing LR on the stack resolves a problem. > > So my message is that: > 1. Current code in _cpu_init_hook is incorrect > 2. GDB should handle this and do not hang > > Alex -- Best regards, AF