From owner-svn-src-head@freebsd.org Mon Sep 11 22:18:02 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7A7A1E02EB5; Mon, 11 Sep 2017 22:18:02 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 46F49752B2; Mon, 11 Sep 2017 22:18:02 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v8BMI16U061422; Mon, 11 Sep 2017 22:18:01 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v8BMI15x061421; Mon, 11 Sep 2017 22:18:01 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201709112218.v8BMI15x061421@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 11 Sep 2017 22:18:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r323466 - head/libexec/rtld-elf/mips X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/libexec/rtld-elf/mips X-SVN-Commit-Revision: 323466 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Sep 2017 22:18:02 -0000 Author: jhb Date: Mon Sep 11 22:18:01 2017 New Revision: 323466 URL: https://svnweb.freebsd.org/changeset/base/323466 Log: Add CFI directives for _rtld_bind_start. This allows debuggers to unwind back into the caller when stopped in the runtime linker. Sponsored by: DARPA / AFRL Modified: head/libexec/rtld-elf/mips/rtld_start.S Modified: head/libexec/rtld-elf/mips/rtld_start.S ============================================================================== --- head/libexec/rtld-elf/mips/rtld_start.S Mon Sep 11 21:49:38 2017 (r323465) +++ head/libexec/rtld-elf/mips/rtld_start.S Mon Sep 11 22:18:01 2017 (r323466) @@ -104,26 +104,39 @@ END(rtld_start) .ent _rtld_bind_start _rtld_bind_start: .frame sp, XCALLFRAME_SIZ, $15 + .cfi_startproc simple + .cfi_register ra, $15 move v1, gp /* save old GP */ #if defined(__mips_o32) || defined(__mips_o64) PTR_ADDU t9, 8 /* modify T9 to point at .cpload */ #endif SETUP_GP PTR_SUBU sp, XCALLFRAME_SIZ /* save arguments and sp value in stack */ + .cfi_def_cfa sp, XCALLFRAME_SIZ SETUP_GP64(XCALLFRAME_GP, _rtld_bind_start) SAVE_GP(XCALLFRAME_GP) #if defined(__mips_n32) || defined(__mips_n64) REG_S a4, XCALLFRAME_A4(sp) + .cfi_rel_offset a4, XCALLFRAME_A4 REG_S a5, XCALLFRAME_A5(sp) + .cfi_rel_offset a5, XCALLFRAME_A5 REG_S a6, XCALLFRAME_A6(sp) + .cfi_rel_offset a6, XCALLFRAME_A6 REG_S a7, XCALLFRAME_A7(sp) + .cfi_rel_offset a7, XCALLFRAME_A7 #endif REG_S a0, XCALLFRAME_A0(sp) + .cfi_rel_offset a0, XCALLFRAME_A0 REG_S a1, XCALLFRAME_A1(sp) + .cfi_rel_offset a1, XCALLFRAME_A1 REG_S a2, XCALLFRAME_A2(sp) + .cfi_rel_offset a2, XCALLFRAME_A2 REG_S a3, XCALLFRAME_A3(sp) + .cfi_rel_offset a3, XCALLFRAME_A3 REG_S $15, XCALLFRAME_RA(sp) /* ra is in t7/t3 */ + .cfi_rel_offset ra, XCALLFRAME_RA REG_S s0, XCALLFRAME_S0(sp) + .cfi_rel_offset s0, XCALLFRAME_S0 move s0, sp move a0, v1 /* old GP */ @@ -147,20 +160,31 @@ _rtld_bind_start: move sp, s0 REG_L ra, XCALLFRAME_RA(sp) + .cfi_restore ra REG_L s0, XCALLFRAME_S0(sp) + .cfi_restore s0 REG_L a0, XCALLFRAME_A0(sp) + .cfi_restore a0 REG_L a1, XCALLFRAME_A1(sp) + .cfi_restore a1 REG_L a2, XCALLFRAME_A2(sp) + .cfi_restore a2 REG_L a3, XCALLFRAME_A3(sp) + .cfi_restore a3 #if defined(__mips_n32) || defined(__mips_n64) REG_L a4, XCALLFRAME_A4(sp) + .cfi_restore a4 REG_L a5, XCALLFRAME_A5(sp) + .cfi_restore a5 REG_L a6, XCALLFRAME_A6(sp) + .cfi_restore a6 REG_L a7, XCALLFRAME_A7(sp) + .cfi_restore a7 #endif RESTORE_GP64 PTR_ADDU sp, XCALLFRAME_SIZ move t9, v0 jr t9 nop + .cfi_endproc END(_rtld_bind_start)