From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1610 invoked by alias); 23 Apr 2003 23:18:27 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 1590 invoked from network); 23 Apr 2003 23:18:25 -0000 Received: from unknown (HELO zenia.red-bean.com) (12.222.151.100) by sources.redhat.com with SMTP; 23 Apr 2003 23:18:25 -0000 Received: from zenia.red-bean.com (localhost.localdomain [127.0.0.1]) by zenia.red-bean.com (8.12.5/8.12.5) with ESMTP id h3NNLeFq008315; Wed, 23 Apr 2003 18:21:40 -0500 Received: (from jimb@localhost) by zenia.red-bean.com (8.12.5/8.12.5/Submit) id h3NNLdrI008311; Wed, 23 Apr 2003 18:21:39 -0500 To: gdb@sources.redhat.com Subject: S/390 modernization tasks From: Jim Blandy Date: Wed, 23 Apr 2003 23:18:00 -0000 Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2.95 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2003-04/txt/msg00279.txt.bz2 At the moment, s390-tdep.c uses quite a few deprecated gdbarch methods. Here's a list of the changes currently needed to bring that code forward. So much has changed that I'm sure some of the descriptions of what needs to be done aren't exactly right, but at the very least, I think they'll point to areas that need attention. - The way a target maps out its register set has changed. These old methods don't seem to be necessary any more: - DEPRECATED_MAX_REGISTER_RAW_SIZE - DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE The new method gdbarch_register_type seems to replace: - gdbarch_pseudo_register_read - gdbarch_pseudo_register_write - Some interfaces now use regcaches instead of byte arrays. A number of gdbarch methods have been converted from using a raw registers array (or the equivalent) to using the more opaque regcache structure. These include: - EXTRACT_RETURN_VALUE - STORE_RETURN_VALUE - EXTRACT_STRUCT_VALUE_ADDRESS (which the s390 can't do anyway) - There is a new, much simpler interface for frame unwinding. One simply registers a function that, given a frame's PC, returns a structure of pointers to functions that can unwind that frame's registers. This seems to replace a number of functions: - DEPRECATED_FRAME_CHAIN - DEPRECATED_FRAME_SAVED_PC - DEPRECATED_INIT_FRAME_PC - DEPRECATED_INIT_FRAME_PC_FIRST - DEPRECATED_FRAME_INIT_SAVED_REGS - DEPRECATED_INIT_EXTRA_FRAME_INFO - DEPRECATED_SAVED_PC_AFTER_CALL - DEPRECATED_POP_FRAME - The generic_find_dummy_frame function now returns a regcache. The functions s390_frame_saved_pc_nofix and s390_frame_chain use deprecated_generic_find_dummy_frame, which returns an array of bytes containing values for the registers saved in the dummy frame. The new generic_find_dummy_frame interface returns a regcache instead. The functions that use generic_find_dummy_frame will all go away (I think) under the new frame unwinding system, so this may not need attention if that's done first. However, it is a quick improvement that one could get out of the way before undertaking the larger project. - There is a new inferior function call interface. The new push_dummy_call gdbarch method combines all the following into one call with a lot of arguments: - DEPRECATED_PUSH_ARGUMENTS - DEPRECATED_PUSH_RETURN_ADDRESS - DEPRECATED_DUMMY_WRITE_SP - DEPRECATED_STORE_STRUCT_RETURN - The DEPRECATED_PC_IN_CALL_DUMMY function isn't necessary any more. Each dummy frame structure now holds the address at which its return breakpoint is set; this means that generic code (specifically, pc_in_dummy_frame) can recognize PC's at call dummy breakpoints.