This is the mail archive of the gdb@sourceware.cygnus.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: does GDB support IRIX 64 bit executables?


dave , i think the lotus notes mail tool might have failed me
, will resend my message to you again, my apologies:


***************************************************

i got this patch from : 
 
            Benjamin Gamsa <ben@eecg.toronto.edu>
 
the patch installs fairly well on gdb5.0 with a few rejects you have to hand edit:

-using gcc it seems to generate a GDB that works well on 64 bit executables (so far at
least).

I would recommend that you contact him for more details on patch,

-thanks 
bob


-- 

robert somerville 
Geophysicist / Geophysical Programmer
diff -rc -x CVS -x RCS -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ gdb-4.17.85-orig/gdb/config/mips/irix6-64.mt gdb-4.17.85/gdb/config/mips/irix6-64.mt
*** gdb-4.17.85-orig/gdb/config/mips/irix6-64.mt	Wed Mar  3 15:16:36 1999
--- gdb-4.17.85/gdb/config/mips/irix6-64.mt	Wed Mar  3 11:41:24 1999
***************
*** 0 ****
--- 1,3 ----
+ # Target: MIPS SGI running Irix 6 for 64 bits
+ TDEPFILES= mips-tdep.o
+ TM_FILE= tm-irix6-64.h
diff -rc -x CVS -x RCS -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ gdb-4.17.85-orig/gdb/config/mips/tm-irix6-64.h gdb-4.17.85/gdb/config/mips/tm-irix6-64.h
*** gdb-4.17.85-orig/gdb/config/mips/tm-irix6-64.h	Wed Mar  3 15:16:36 1999
--- gdb-4.17.85/gdb/config/mips/tm-irix6-64.h	Wed Mar  3 14:59:27 1999
***************
*** 0 ****
--- 1,80 ----
+ /* Copyright (C) 1996 Free Software Foundation, Inc.
+ 
+ This file is part of GDB.
+ 
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ 
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+ 
+ #define TARGET_BYTE_ORDER_DEFAULT BIG_ENDIAN
+ 
+ #define GDB_TARGET_IS_MIPS64 1
+ 
+ /* Use eight byte registers.  */
+ #define MIPS_REGSIZE 8
+ 
+ /* define 8 byte register type */
+ #define REGISTER_VIRTUAL_TYPE(N) \
+         (((N) >= FP0_REGNUM && (N) < FP0_REGNUM+32)  \
+          ? builtin_type_double : builtin_type_long_long) \
+ 
+ /* Load double words in CALL_DUMMY.  */
+ #define OP_LDFPR 065	/* ldc1 */
+ #define OP_LDGPR 067	/* ld */
+ 
+ /* define sizes for 64-bit data types */
+ #define TARGET_LONG_BIT      64
+ #define TARGET_LONG_LONG_BIT 64
+ #define TARGET_PTR_BIT       64
+ 
+ 
+ #include "mips/tm-irix5.h"
+ 
+ /* from tm-irix5, but remove extra + 4 at end since reg are 8 bytes */
+ 
+ #undef SIGFRAME_PC_OFF
+ #define SIGFRAME_PC_OFF		(SIGFRAME_BASE + 2 * 4)
+ #undef SIGFRAME_REGSAVE_OFF
+ #define SIGFRAME_REGSAVE_OFF	(SIGFRAME_BASE + 2 * 4 + 8)
+ #undef SIGFRAME_FPREGSAVE_OFF
+ #define SIGFRAME_FPREGSAVE_OFF	(SIGFRAME_BASE + 2 * 4 + 8 + 32 * 8)
+ 
+ /* undo tm-irix5 mis-conception of the types of registers */
+ 
+ #undef  REGISTER_VIRTUAL_TYPE
+ #define REGISTER_VIRTUAL_TYPE(N) \
+ 	(((N) >= FP0_REGNUM && (N) < FP0_REGNUM+32) ? builtin_type_double \
+ 	 : ((N) == 32 /*SR*/) ? builtin_type_uint32 \
+ 	 : ((N) >= 70 && (N) <= 89) ? builtin_type_uint64 \
+ 	 : builtin_type_uint64)
+ 
+ /* keep same basic registers, but change names to conform to n32/64 bit
+    conventions. */
+ 
+ #undef REGISTER_NAMES
+ #define REGISTER_NAMES 	\
+     {	"zero",	"at",	"v0",	"v1",	"a0",	"a1",	"a2",	"a3", \
+ 	"a4",	"a5",	"a6",	"a7",	"t0",	"t1",	"t2",	"t3", \
+ 	"s0",	"s1",	"s2",	"s3",	"s4",	"s5",	"s6",	"s7", \
+ 	"t8",	"t9",	"k0",	"k1",	"gp",	"sp",	"fp",	"ra", \
+ 	"f0",   "f1",   "f2",   "f3",   "f4",   "f5",   "f6",   "f7", \
+ 	"f8",   "f9",   "f10",  "f11",  "f12",  "f13",  "f14",  "f15", \
+ 	"f16",  "f17",  "f18",  "f19",  "f20",  "f21",  "f22",  "f23",\
+ 	"f24",  "f25",  "f26",  "f27",  "f28",  "f29",  "f30",  "f31",\
+ 	"pc",	"cause", "bad",	"hi",	"lo",	"fsr",  "fir" \
+     }
+ 
+ /* not sure about the sigframe stuff... just guessing we remove extra +4 */
+ 
+ #undef SIGFRAME_FPREGSAVE_OFF
+ #define SIGFRAME_FPREGSAVE_OFF	(SIGFRAME_BASE + 3 * 4 + 32 * 4)
diff -rc -x CVS -x RCS -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ gdb-4.17.85-orig/gdb/configure.tgt gdb-4.17.85/gdb/configure.tgt
*** gdb-4.17.85-orig/gdb/configure.tgt	Wed Feb 24 15:57:08 1999
--- gdb-4.17.85/gdb/configure.tgt	Wed Mar  3 11:41:24 1999
***************
*** 189,195 ****
  mips*-little-*)		gdb_target=littlemips ;;
  mips*-*-lnews*)		gdb_target=embedl ;;
  mips*-sgi-irix5*)	gdb_target=irix5 ;;
! mips*-sgi-irix6*)	gdb_target=irix5 ;;
  mips*-sgi-*)		gdb_target=irix3 ;;
  mips*-sony-*)		gdb_target=bigmips ;;
  mips*-*-mach3*)		gdb_target=mipsm3 ;;
--- 189,195 ----
  mips*-little-*)		gdb_target=littlemips ;;
  mips*-*-lnews*)		gdb_target=embedl ;;
  mips*-sgi-irix5*)	gdb_target=irix5 ;;
! mips*-sgi-irix6*)	gdb_target=irix6-64 ;;
  mips*-sgi-*)		gdb_target=irix3 ;;
  mips*-sony-*)		gdb_target=bigmips ;;
  mips*-*-mach3*)		gdb_target=mipsm3 ;;
diff -rc -x CVS -x RCS -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ gdb-4.17.85-orig/gdb/dwarf2read.c gdb-4.17.85/gdb/dwarf2read.c
*** gdb-4.17.85-orig/gdb/dwarf2read.c	Mon Jan 11 16:51:37 1999
--- gdb-4.17.85/gdb/dwarf2read.c	Wed Mar  3 21:56:43 1999
***************
*** 52,58 ****
      unsigned short version;	/* version number -- 2 for DWARF
  				   version 2 */
      unsigned int abbrev_offset;	/* offset into .debug_abbrev section */
!     unsigned char addr_size;	/* byte size of an address -- 4 */
    }
  _COMP_UNIT_HEADER;
  #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
--- 52,58 ----
      unsigned short version;	/* version number -- 2 for DWARF
  				   version 2 */
      unsigned int abbrev_offset;	/* offset into .debug_abbrev section */
!     unsigned char addr_size;	/* byte size of an address -- 4 or 8 */
    }
  _COMP_UNIT_HEADER;
  #define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
***************
*** 926,944 ****
    obstack_init (&dwarf2_tmp_obstack);
    back_to = make_cleanup (dwarf2_free_tmp_obstack, NULL);
  
    while ((unsigned int) (info_ptr - dwarf_info_buffer)
! 	  + ((info_ptr - dwarf_info_buffer) % 4) < dwarf_info_size)
      {
        beg_of_comp_unit = info_ptr;
!       cu_header.length = read_4_bytes (abfd, info_ptr);
!       info_ptr += 4;
        cu_header.version = read_2_bytes (abfd, info_ptr);
        info_ptr += 2;
!       cu_header.abbrev_offset = read_4_bytes (abfd, info_ptr);
!       info_ptr += 4;
        cu_header.addr_size = read_1_byte (abfd, info_ptr);
        info_ptr += 1;
!       address_size = cu_header.addr_size;
  
        if (cu_header.version != 2)
  	{
--- 926,966 ----
    obstack_init (&dwarf2_tmp_obstack);
    back_to = make_cleanup (dwarf2_free_tmp_obstack, NULL);
  
+   /* temporary hack by ben */
+ #if GDB_TARGET_IS_MIPS64
+   address_size = 8;
+ #else
+   address_size = 4;
+ #endif
+ 
    while ((unsigned int) (info_ptr - dwarf_info_buffer)
! 	  + ((info_ptr - dwarf_info_buffer) %  address_size) < dwarf_info_size)
      {
        beg_of_comp_unit = info_ptr;
!       if (address_size == 4) {
!           cu_header.length = read_4_bytes (abfd, info_ptr);
!           info_ptr += 4;
!       } else {
!           cu_header.length = read_8_bytes (abfd, info_ptr);
!           info_ptr += 8;
!       }
        cu_header.version = read_2_bytes (abfd, info_ptr);
        info_ptr += 2;
!       if (address_size == 4) {
!           cu_header.abbrev_offset = read_4_bytes (abfd, info_ptr);
!           info_ptr += 4;
!       } else {
!           cu_header.abbrev_offset = read_8_bytes (abfd, info_ptr);
!           info_ptr += 8;
!       }
        cu_header.addr_size = read_1_byte (abfd, info_ptr);
        info_ptr += 1;
! 
!       if ( address_size != cu_header.addr_size ) {
! 	  error ("Dwarf error: cu address size %ld not what expected (%d)",
! 		 (long)cu_header.addr_size, (long)address_size );
! 	  return;
!       }
  
        if (cu_header.version != 2)
  	{
***************
*** 1027,1033 ****
           also happen.) This happens in VxWorks.  */
        free_named_symtabs (pst->filename);
  
!       info_ptr = beg_of_comp_unit + cu_header.length + 4;
      }
    do_cleanups (back_to);
  }
--- 1049,1055 ----
           also happen.) This happens in VxWorks.  */
        free_named_symtabs (pst->filename);
  
!       info_ptr = beg_of_comp_unit + cu_header.length + address_size;
      }
    do_cleanups (back_to);
  }
***************
*** 1307,1318 ****
    make_cleanup ((make_cleanup_func) really_free_pendings, NULL);
  
    /* read in the comp_unit header  */
!   cu_header.length = read_4_bytes (abfd, info_ptr);
!   info_ptr += 4;
    cu_header.version = read_2_bytes (abfd, info_ptr);
    info_ptr += 2;
!   cu_header.abbrev_offset = read_4_bytes (abfd, info_ptr);
!   info_ptr += 4;
    cu_header.addr_size = read_1_byte (abfd, info_ptr);
    info_ptr += 1;
  
--- 1329,1350 ----
    make_cleanup ((make_cleanup_func) really_free_pendings, NULL);
  
    /* read in the comp_unit header  */
!   if (address_size == 4) {
!       cu_header.length = read_4_bytes (abfd, info_ptr);
!       info_ptr += 4;
!   } else {
!       cu_header.length = read_8_bytes (abfd, info_ptr);
!       info_ptr += 8;
!   }
    cu_header.version = read_2_bytes (abfd, info_ptr);
    info_ptr += 2;
!   if (address_size == 4) {
!       cu_header.abbrev_offset = read_4_bytes (abfd, info_ptr);
!       info_ptr += 4;
!   } else {
!       cu_header.abbrev_offset = read_8_bytes (abfd, info_ptr);
!       info_ptr += 8;
!   }
    cu_header.addr_size = read_1_byte (abfd, info_ptr);
    info_ptr += 1;
  
***************
*** 1887,1893 ****
       and create blank accessibility bitfields if necessary.  */
    TYPE_NFIELDS (type) = nfields;
    TYPE_FIELDS (type) = (struct field *)
!     TYPE_ALLOC (type, sizeof (struct field) * nfields);
    memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
  
    if (fip->non_public_fields)
--- 1919,1925 ----
       and create blank accessibility bitfields if necessary.  */
    TYPE_NFIELDS (type) = nfields;
    TYPE_FIELDS (type) = (struct field *)
!       TYPE_ALLOC (type, sizeof (struct field) * nfields);
    memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
  
    if (fip->non_public_fields)
***************
*** 2518,2524 ****
  	      else if (attr->form == DW_FORM_udata
  	               || attr->form == DW_FORM_data1
  	               || attr->form == DW_FORM_data2
! 	               || attr->form == DW_FORM_data4)
  		{
  		  low = DW_UNSND (attr);
  		}
--- 2550,2557 ----
  	      else if (attr->form == DW_FORM_udata
  	               || attr->form == DW_FORM_data1
  	               || attr->form == DW_FORM_data2
! 	               || attr->form == DW_FORM_data4
!                        || attr->form == DW_FORM_data8)
  		{
  		  low = DW_UNSND (attr);
  		}
***************
*** 2544,2550 ****
  	      else if (attr->form == DW_FORM_udata
  	               || attr->form == DW_FORM_data1
  	               || attr->form == DW_FORM_data2
! 	               || attr->form == DW_FORM_data4)
  		{
  		  high = DW_UNSND (attr);
  		}
--- 2577,2584 ----
  	      else if (attr->form == DW_FORM_udata
  	               || attr->form == DW_FORM_data1
  	               || attr->form == DW_FORM_data2
! 	               || attr->form == DW_FORM_data4
!                        || attr->form == DW_FORM_data8)
  		{
  		  high = DW_UNSND (attr);
  		}
***************
*** 3458,3463 ****
--- 3492,3501 ----
        DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
        info_ptr += 4;
        break;
+     case DW_FORM_ref8:
+       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
+       info_ptr += 8;
+       break;
      case DW_FORM_ref_udata:
        DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
        info_ptr += bytes_read;
***************
*** 3811,3823 ****
    line_ptr = dwarf_line_buffer + offset;
  
    /* read in the prologue */
!   lh.total_length = read_4_bytes (abfd, line_ptr);
!   line_ptr += 4;
    line_end = line_ptr + lh.total_length;
    lh.version = read_2_bytes (abfd, line_ptr);
    line_ptr += 2;
!   lh.prologue_length = read_4_bytes (abfd, line_ptr);
!   line_ptr += 4;
    lh.minimum_instruction_length = read_1_byte (abfd, line_ptr);
    line_ptr += 1;
    lh.default_is_stmt = read_1_byte (abfd, line_ptr);
--- 3849,3871 ----
    line_ptr = dwarf_line_buffer + offset;
  
    /* read in the prologue */
!   if (address_size == 4) {
!       lh.total_length = read_4_bytes (abfd, line_ptr);
!       line_ptr += 4;
!   } else {
!       lh.total_length = read_8_bytes (abfd, line_ptr);
!       line_ptr += 8;
!   }
    line_end = line_ptr + lh.total_length;
    lh.version = read_2_bytes (abfd, line_ptr);
    line_ptr += 2;
!   if (address_size == 4) {
!       lh.prologue_length = read_4_bytes (abfd, line_ptr);
!       line_ptr += 4;
!   } else {
!       lh.prologue_length = read_8_bytes (abfd, line_ptr);
!       line_ptr += 8;
!   }
    lh.minimum_instruction_length = read_1_byte (abfd, line_ptr);
    line_ptr += 1;
    lh.default_is_stmt = read_1_byte (abfd, line_ptr);
***************
*** 3915,3921 ****
  	  switch (op_code)
  	    {
  	    case DW_LNS_extended_op:
! 	      line_ptr += 1;	/* ignore length */
  	      extended_op = read_1_byte (abfd, line_ptr);
  	      line_ptr += 1;
  	      switch (extended_op)
--- 3963,3971 ----
  	  switch (op_code)
  	    {
  	    case DW_LNS_extended_op:
! 	      /* ignore length */
! 	      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
! 	      line_ptr += bytes_read;
  	      extended_op = read_1_byte (abfd, line_ptr);
  	      line_ptr += 1;
  	      switch (extended_op)
***************
*** 3993,3999 ****
  	      basic_block = 1;
  	      break;
  	    case DW_LNS_const_add_pc:
! 	      address += (255 - lh.opcode_base) / lh.line_range;
  	      break;
  	    case DW_LNS_fixed_advance_pc:
  	      address += read_2_bytes (abfd, line_ptr);
--- 4043,4050 ----
  	      basic_block = 1;
  	      break;
  	    case DW_LNS_const_add_pc:
! 	      address += lh.minimum_instruction_length * 
! 			(255 - lh.opcode_base) / lh.line_range;
  	      break;
  	    case DW_LNS_fixed_advance_pc:
  	      address += read_2_bytes (abfd, line_ptr);
***************
*** 4006,4012 ****
  	      line += lh.line_base + (adj_opcode % lh.line_range);
  	      /* append row to matrix using current values */
  	      record_line (current_subfile, line, address);
! 	      basic_block = 1;
  	    }
  	}
      }
--- 4057,4063 ----
  	      line += lh.line_base + (adj_opcode % lh.line_range);
  	      /* append row to matrix using current values */
  	      record_line (current_subfile, line, address);
! 	      basic_block = 0;
  	    }
  	}
      }
***************
*** 5469,5477 ****
--- 5520,5530 ----
  	case DW_FORM_data1:
  	case DW_FORM_data2:
  	case DW_FORM_data4:
+ 	case DW_FORM_data8:
  	case DW_FORM_ref1:
  	case DW_FORM_ref2:
  	case DW_FORM_ref4:
+ 	case DW_FORM_ref8:
  	case DW_FORM_udata:
  	case DW_FORM_sdata:
  	  fprintf (stderr, "constant: %d", DW_UNSND (&die->attrs[i]));
***************
*** 5490,5496 ****
  	case DW_FORM_strp:	/* we do not support separate string
  				   section yet */
  	case DW_FORM_indirect:	/* we do not handle indirect yet */
- 	case DW_FORM_data8:	/* we do not have 64 bit quantities */
  	default:
  	  fprintf (stderr, "unsupported attribute form: %d.",
  			   die->attrs[i].form);
--- 5543,5548 ----
***************
*** 5545,5550 ****
--- 5597,5603 ----
      case DW_FORM_ref1:
      case DW_FORM_ref2:
      case DW_FORM_ref4:
+     case DW_FORM_ref8:
      case DW_FORM_ref_udata:
        result = cu_header_offset + DW_UNSND (attr);
        break;
***************
*** 5590,5598 ****
       current language and the current target machine. */
  
    if (ftypes[typeid] == NULL)
!     {
        ftypes[typeid] = cu_language_defn->la_fund_type (objfile, typeid);
!     }
  
    return (ftypes[typeid]);
  }
--- 5643,5651 ----
       current language and the current target machine. */
  
    if (ftypes[typeid] == NULL)
!   {
        ftypes[typeid] = cu_language_defn->la_fund_type (objfile, typeid);
!   }
  
    return (ftypes[typeid]);
  }
diff -rc -x CVS -x RCS -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ gdb-4.17.85-orig/gdb/irix5-nat.c gdb-4.17.85/gdb/irix5-nat.c
*** gdb-4.17.85-orig/gdb/irix5-nat.c	Tue Jan 19 12:01:36 1999
--- gdb-4.17.85/gdb/irix5-nat.c	Wed Mar  3 15:04:08 1999
***************
*** 466,471 ****
--- 466,472 ----
    return (1);
  }
  
+ 
  /*
  
  LOCAL FUNCTION
***************
*** 561,573 ****
      return NULL;
  
    /* Get address of first list entry.  */
!   read_memory (debug_base, (char *) &listp, sizeof (struct obj_list *));
  
!   if (listp == NULL)
      return NULL;
  
    /* Get first list entry.  */
-   lladdr = (CORE_ADDR) listp;
    read_memory (lladdr, (char *) &list_old, sizeof (struct obj_list));
  
    /* The first entry in the list is the object file we are debugging,
--- 562,573 ----
      return NULL;
  
    /* Get address of first list entry.  */
!   read_memory (debug_base, (char *) &lladdr, sizeof(CORE_ADDR));
  
!   if (lladdr == NULL)
      return NULL;
  
    /* Get first list entry.  */
    read_memory (lladdr, (char *) &list_old, sizeof (struct obj_list));
  
    /* The first entry in the list is the object file we are debugging,
***************
*** 577,588 ****
--- 577,597 ----
  #ifdef HANDLE_NEW_OBJ_LIST
    if (list_old.data == NEW_OBJ_INFO_MAGIC)
      {
+ #if GDB_TARGET_IS_MIPS64
+       Elf64_Obj_Info list_64;
+ 
+       read_memory (lladdr, (char *) &list_64, sizeof (Elf64_Obj_Info));
+       if (list_64.oi_size != sizeof (Elf64_Obj_Info)) 
+ 	return NULL;
+       next_lladdr = (CORE_ADDR) list_64.oi_next; 
+ #else
        Elf32_Obj_Info list_32;
  
        read_memory (lladdr, (char *) &list_32, sizeof (Elf32_Obj_Info));
        if (list_32.oi_size != sizeof (Elf32_Obj_Info))
  	return NULL;
        next_lladdr = (CORE_ADDR) list_32.oi_next; 
+ #endif
      }
  #endif
  
***************
*** 643,648 ****
--- 652,665 ----
  				       sizeof (Elf32_Obj_Info));
  	  next_lladdr = (CORE_ADDR) list_32.oi_next;
  	}
+       else if (lm -> l_variant == OBJ_LIST_64)
+         {
+ 	  Elf64_Obj_Info list_64;
+ 	  status = target_read_memory (lm -> l_lladdr,
+ 				       (char *) &list_64,
+ 				       sizeof (Elf64_Obj_Info));
+ 	  next_lladdr = (CORE_ADDR) list_64.oi_next;
+         }
  #endif
  
        if (status != 0 || next_lladdr == 0)
***************
*** 690,695 ****
--- 707,731 ----
  #ifdef HANDLE_NEW_OBJ_LIST
    if (list_old.data == NEW_OBJ_INFO_MAGIC)
      {
+ #if GDB_TARGET_IS_MIPS64
+       Elf64_Obj_Info list_64;
+ 
+       read_memory (lladdr, (char *) &list_64, sizeof (Elf64_Obj_Info));
+       if (list_64.oi_size != sizeof (Elf64_Obj_Info))
+ 	return;
+       new_lm -> l_variant = OBJ_LIST_64;
+       new_lm -> l_next = (CORE_ADDR) list_64.oi_next; 
+ 
+       target_read_string ((CORE_ADDR) list_64.oi_pathname,
+ 			  &so_list_ptr -> so_name,
+ 			  list_64.oi_pathname_len + 1, &errcode);
+       if (errcode != 0)
+ 	memory_error (errcode, (CORE_ADDR) list_64.oi_pathname);
+ 
+       LM_ADDR (so_list_ptr) = (CORE_ADDR) list_64.oi_ehdr;
+       LM_OFFSET (so_list_ptr) =
+ 	(CORE_ADDR) list_64.oi_ehdr - (CORE_ADDR) list_64.oi_orig_ehdr;
+ #else
        Elf32_Obj_Info list_32;
  
        read_memory (lladdr, (char *) &list_32, sizeof (Elf32_Obj_Info));
***************
*** 707,712 ****
--- 743,749 ----
        LM_ADDR (so_list_ptr) = (CORE_ADDR) list_32.oi_ehdr;
        LM_OFFSET (so_list_ptr) =
  	(CORE_ADDR) list_32.oi_ehdr - (CORE_ADDR) list_32.oi_orig_ehdr;
+ #endif
      }
    else
  #endif

--gBBFr7Ir9EOA20Yy--


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]