From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 98651 invoked by alias); 9 Dec 2016 19:02:06 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 98601 invoked by uid 89); 9 Dec 2016 19:02:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_50,SPF_HELO_PASS,SPF_SOFTFAIL autolearn=no version=3.3.2 spammy=toolchain, fail-safe, MIPS_ABI_N64, failsafe X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail.baldwin.cx Received: from bigwig.baldwin.cx (HELO mail.baldwin.cx) (96.47.65.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 09 Dec 2016 19:02:05 +0000 Received: from ralph.baldwin.cx (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by mail.baldwin.cx (Postfix) with ESMTPSA id 4CE2C10A80C; Fri, 9 Dec 2016 14:02:03 -0500 (EST) From: John Baldwin To: Luis Machado Cc: gdb-patches@sourceware.org, binutils@sourceware.org Subject: Re: [PATCH v2 2/3] Add FreeBSD/mips architecture. Date: Fri, 09 Dec 2016 19:02:00 -0000 Message-ID: <1572597.0QlnaJBEcF@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.0-PRERELEASE; KDE/4.14.10; amd64; ; ) In-Reply-To: References: <20161206210015.40422-1-jhb@FreeBSD.org> <3686876.pSvlj3YOXd@ralph.baldwin.cx> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-IsSubscribed: yes X-SW-Source: 2016-12/txt/msg00253.txt.bz2 On Thursday, December 08, 2016 02:13:17 PM Luis Machado wrote: > On 12/08/2016 02:08 PM, John Baldwin wrote: > > On Thursday, December 08, 2016 12:47:42 PM Luis Machado wrote: > >> On 12/06/2016 03:00 PM, John Baldwin wrote: > >>> +static void > >>> +mips_fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) > >>> +{ > >>> + enum mips_abi abi = mips_abi (gdbarch); > >>> + > >>> + /* Generic FreeBSD support. */ > >>> + fbsd_init_abi (info, gdbarch); > >>> + > >>> + set_gdbarch_software_single_step (gdbarch, mips_software_single_step); > >>> + > >>> + switch (abi) > >>> + { > >>> + case MIPS_ABI_O32: > >>> + tramp_frame_prepend_unwinder (gdbarch, &mips_fbsd_sigframe); > >>> + break; > >>> + case MIPS_ABI_N32: > >>> + break; > >>> + case MIPS_ABI_N64: > >>> + tramp_frame_prepend_unwinder (gdbarch, &mips64_fbsd_sigframe); > >>> + break; > >>> + } > >>> + > >>> + set_gdbarch_iterate_over_regset_sections > >>> + (gdbarch, mips_fbsd_iterate_over_regset_sections); > >>> + > >>> + /* FreeBSD/mips has SVR4-style shared libraries. */ > >>> + set_solib_svr4_fetch_link_map_offsets > >>> + (gdbarch, (gdbarch_ptr_bit (gdbarch) == 32 ? > >>> + mips_fbsd_ilp32_fetch_link_map_offsets : > >>> + mips_fbsd_lp64_fetch_link_map_offsets)); > >>> +} > >>> + > >>> + > >> > >> Do we need to set a reasonable default in case abi is something unknown > >> or undefined? Maybe as a fail-safe? > > > > Default in which sense, for the sigframe unwinder or something else? > > I don't think there's any support in any toolchains I'm aware of to > > generate FreeBSD binaries with other ABIs (no O64 in particular). > > > > For the sigframe unwinders. I was mostly concerned about the switch > construct without a default case for something invalid. Well, in that case we simply won't have an unwinder for signal frames, but the target will work for other things. That said, I don't know of any existing toolchain that supports generating FreeBSD/mips binaries that supports any ABIs other than o32, n32, and n64. Specifically, FreeBSD does not have any o64 support, and binutils doesn't have a linker emulation for any other ABIs on FreeBSD/mips. -- John Baldwin