From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4381 invoked by alias); 17 Jan 2002 19:26:28 -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 4342 invoked from network); 17 Jan 2002 19:26:23 -0000 Received: from unknown (HELO kajiki.kuee.kyoto-u.ac.jp) (130.54.208.194) by sources.redhat.com with SMTP; 17 Jan 2002 19:26:23 -0000 Received: (from takai@localhost) by kajiki.kuee.kyoto-u.ac.jp (8.9.3+3.2W/3.7W-R8V8/smtpfeed 1.12) id EAA07452; Fri, 18 Jan 2002 04:26:21 +0900 (JST) (envelope-from takai@vlsi.kuee.kyoto-u.ac.jp) X-Authentication-Warning: kajiki.kuee.kyoto-u.ac.jp: takai set sender to takai@vlsi.kuee.kyoto-u.ac.jp using -f To: gdb-patches@sources.redhat.com Subject: [PATCH] fix solib-svr4.c with 64-bit bfd Cc: takai@vlsi.kuee.kyoto-u.ac.jp From: TAKAI Kousuke MIME-Version: 1.0 (generated by NISEMI 1.14.2 - =?ISO-2022-JP?B?Ig==?= =?ISO-2022-JP?B?GyRCOWIwZjksSmUbKEIi?=) Content-Type: text/plain; charset=US-ASCII Date: Thu, 17 Jan 2002 11:26:00 -0000 Message-ID: User-Agent: T-gnus/6.15.3 (based on Oort Gnus v0.03) (revision 06) NISEMI/1.14.2 (=?ISO-2022-JP?B?GyRCOWIwZjksSmUbKEI=?=) SLIM/1.14.7 (=?ISO-2022-JP?B?GyRCPHIwZjpMTD4bKEI=?=) APEL/10.3 Emacs/21.1 (sparc-sun-solaris2.6) MULE/5.0 (=?ISO-2022-JP?B?GyRCOC1MWhsoQg==?=) X-SW-Source: 2002-01/txt/msg00487.txt.bz2 Hello, I had encountered a bug in GDB 5.1 compiled for sparc-sun-solaris2.8, that GDB cannot resolve symbols in shared libraries in 32-bit environment. (I found this problem had been reported as PR gdb/266). I found that this seems to be because LM_ADDR() in solib-svr4.c sign-extends 32-bit address value into 64-bit CORE_ADDR type. I have no access to SVR4 spec, but under SunOS 5.7 and 5.8, says that `l_addr' is unsigned, and it seems that l_addr should be zero-extended. This is a patch to fix it. 2002-01-18 TAKAI Kousuke * solib-svr4.c (LM_ADDR): Use `extract_address' instead of `extract_signed_integer'. Fix PR gdb/266. *** gdb-5.1.orig/gdb/solib-svr4.c Tue Jul 3 04:37:59 2001 --- gdb-5.1/gdb/solib-svr4.c Fri Jan 18 03:58:10 2002 *************** LM_ADDR (struct so_list *so) *** 185,192 **** { struct link_map_offsets *lmo = SVR4_FETCH_LINK_MAP_OFFSETS (); ! return (CORE_ADDR) extract_signed_integer (so->lm_info->lm + lmo->l_addr_offset, ! lmo->l_addr_size); } static CORE_ADDR --- 185,191 ---- { struct link_map_offsets *lmo = SVR4_FETCH_LINK_MAP_OFFSETS (); ! return extract_address (so->lm_info->lm + lmo->l_addr_offset, lmo->l_addr_size); } static CORE_ADDR [end of patch] I am not subscribing gdb-patches, so I will appreciate it if you would send Cc to me. Sorry for my poor English. -- TAKAI Kousuke Dept. of Communications and Computer Engineering, Graduate School of Infomatics, Kyoto University, Japan