From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28865 invoked by alias); 11 Jan 2004 20:48:07 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 28851 invoked from network); 11 Jan 2004 20:48:02 -0000 Received: from unknown (HELO walton.kettenis.dyndns.org) (213.93.115.144) by sources.redhat.com with SMTP; 11 Jan 2004 20:48:02 -0000 Received: from elgar.kettenis.dyndns.org (elgar.kettenis.dyndns.org [192.168.0.2]) by walton.kettenis.dyndns.org (8.12.6p3/8.12.6) with ESMTP id i0BKm1gR000396 for ; Sun, 11 Jan 2004 21:48:01 +0100 (CET) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: from elgar.kettenis.dyndns.org (localhost [127.0.0.1]) by elgar.kettenis.dyndns.org (8.12.6p3/8.12.6) with ESMTP id i0BKm0SX004194 for ; Sun, 11 Jan 2004 21:48:00 +0100 (CET) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: (from kettenis@localhost) by elgar.kettenis.dyndns.org (8.12.6p3/8.12.6/Submit) id i0BKm0rv004191; Sun, 11 Jan 2004 21:48:00 +0100 (CET) Date: Sun, 11 Jan 2004 20:48:00 -0000 Message-Id: <200401112048.i0BKm0rv004191@elgar.kettenis.dyndns.org> From: Mark Kettenis To: gdb-patches@sources.redhat.com Subject: [PATCH] Activate extract_struct_value_address for SPARC and UltraSPARC X-SW-Source: 2004-01/txt/msg00294.txt.bz2 Andrews -Wunused-function message pointed out that this wasn't hooked up. So some of my previous patches were absolutely useless. Anyway, this corrects the problem, and hooks things up. No regressions in structs.exp on NetBSD/sparc and FreeBSD/sparc64. Committed, Mark Index: ChangeLog from Mark Kettenis * sparc-tdep.c (sparc32_extract_struct_value_address): Rename from sparc_extract_struct_value_address. (sparc32_gdbarch_init): Set extract_struct_value_address. * sparc64-tdep.c (sparc64_extract_struct_value_address): New function. (sparc64_init_abi): Set extract_struct_value_address. Don't set return_value_on_stack. Index: sparc-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc-tdep.c,v retrieving revision 1.138 diff -u -p -r1.138 sparc-tdep.c --- sparc-tdep.c 10 Jan 2004 23:43:25 -0000 1.138 +++ sparc-tdep.c 11 Jan 2004 20:42:13 -0000 @@ -839,7 +839,7 @@ sparc32_return_value (struct gdbarch *gd CORE_ADDR. */ static CORE_ADDR -sparc_extract_struct_value_address (struct regcache *regcache) +sparc32_extract_struct_value_address (struct regcache *regcache) { ULONGEST sp; @@ -1069,6 +1069,8 @@ sparc32_gdbarch_init (struct gdbarch_inf set_gdbarch_push_dummy_call (gdbarch, sparc32_push_dummy_call); set_gdbarch_return_value (gdbarch, sparc32_return_value); + set_gdbarch_extract_struct_value_address + (gdbarch, sparc32_extract_struct_value_address); set_gdbarch_stabs_argument_has_addr (gdbarch, sparc32_stabs_argument_has_addr); Index: sparc64-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc64-tdep.c,v retrieving revision 1.8 diff -u -p -r1.8 sparc64-tdep.c --- sparc64-tdep.c 4 Jan 2004 12:18:25 -0000 1.8 +++ sparc64-tdep.c 11 Jan 2004 20:42:13 -0000 @@ -1086,6 +1086,19 @@ sparc64_return_value (struct gdbarch *gd return RETURN_VALUE_REGISTER_CONVENTION; } + +/* Extract from REGCACHE, which contains the (raw) register state, the + address in which a function should return its structure value, as a + CORE_ADDR. */ + +static CORE_ADDR +sparc64_extract_struct_value_address (struct regcache *regcache) +{ + ULONGEST addr; + + regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr); + return addr; +} void @@ -1117,8 +1130,8 @@ sparc64_init_abi (struct gdbarch_info in set_gdbarch_push_dummy_call (gdbarch, sparc64_push_dummy_call); set_gdbarch_return_value (gdbarch, sparc64_return_value); - set_gdbarch_return_value_on_stack - (gdbarch, generic_return_value_on_stack_not); + set_gdbarch_extract_struct_value_address + (gdbarch, sparc64_extract_struct_value_address); set_gdbarch_stabs_argument_has_addr (gdbarch, default_stabs_argument_has_addr);