Ticket #29981: all.patch

File all.patch, 5.5 KB (added by fawzi@…, 13 years ago)

patch for gdb

  • bfd/mach-o.c

    ? all.patch
    ? ciePtr.patch
    ? encrypt.patch
    ? gdb72.config
    ? gdb72.creator
    ? gdb72.creator.user
    ? gdb72.files
    ? gdb72.includes
    ? mac.patch
    ? machoMmap.patch
    ? printf.patch
    ? printf2.patch
    ? rest.patch
    ? routines.patch
    RCS file: /cvs/src/src/bfd/mach-o.c,v
    retrieving revision 1.56
    diff -u -r1.56 mach-o.c
     
    25242524    case BFD_MACH_O_LC_FVMFILE:
    25252525    case BFD_MACH_O_LC_PREPAGE:
    25262526    case BFD_MACH_O_LC_ROUTINES:
     2527    case BFD_MACH_O_LC_ROUTINES_64:
    25272528      break;
    25282529    case BFD_MACH_O_LC_SUB_FRAMEWORK:
    25292530    case BFD_MACH_O_LC_SUB_UMBRELLA:
  • gdb/dwarf2-frame.c

    RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v
    retrieving revision 1.113.2.1
    diff -u -r1.113.2.1 dwarf2-frame.c
     
    16541654#define DW64_CIE_ID ~0
    16551655#endif
    16561656
     1657enum eh_frame_type{
     1658    eh_cie_type_id=1,
     1659    eh_fde_type_id=2,
     1660    eh_cie_or_fde_type_id=3
     1661};
     1662
    16571663static gdb_byte *decode_frame_entry (struct comp_unit *unit, gdb_byte *start,
    16581664                                     int eh_frame_p,
    16591665                                     struct dwarf2_cie_table *cie_table,
    1660                                      struct dwarf2_fde_table *fde_table);
     1666                                     struct dwarf2_fde_table *fde_table,
     1667                                     enum eh_frame_type entry_type);
    16611668
    16621669/* Decode the next CIE or FDE.  Return NULL if invalid input, otherwise
    16631670   the next byte to be processed.  */
    16641671static gdb_byte *
    16651672decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p,
    16661673                      struct dwarf2_cie_table *cie_table,
    1667                       struct dwarf2_fde_table *fde_table)
     1674                      struct dwarf2_fde_table *fde_table, enum eh_frame_type entry_type)
    16681675{
    16691676  struct gdbarch *gdbarch = get_objfile_arch (unit->objfile);
    16701677  gdb_byte *buf, *end;
     
    17151722      char *augmentation;
    17161723      unsigned int cie_version;
    17171724
     1725      gdb_assert((entry_type & eh_cie_type_id)!=0);
     1726
    17181727      /* Record the offset into the .debug_frame section of this CIE.  */
    17191728      cie_pointer = start - unit->dwarf_frame_buffer;
    17201729
     
    18791888      /* This is a FDE.  */
    18801889      struct dwarf2_fde *fde;
    18811890
     1891      gdb_assert((entry_type & eh_fde_type_id)!=0);
     1892
    18821893      /* In an .eh_frame section, the CIE pointer is the delta between the
    18831894         address within the FDE where the CIE pointer is stored and the
    18841895         address of the CIE.  Convert it to an offset into the .eh_frame
     
    19001911      if (fde->cie == NULL)
    19011912        {
    19021913          decode_frame_entry (unit, unit->dwarf_frame_buffer + cie_pointer,
    1903                               eh_frame_p, cie_table, fde_table);
     1914                              eh_frame_p, cie_table, fde_table,eh_cie_type_id);
    19041915          fde->cie = find_cie (cie_table, cie_pointer);
    19051916        }
    19061917
     
    19451956static gdb_byte *
    19461957decode_frame_entry (struct comp_unit *unit, gdb_byte *start, int eh_frame_p,
    19471958                    struct dwarf2_cie_table *cie_table,
    1948                     struct dwarf2_fde_table *fde_table)
     1959                    struct dwarf2_fde_table *fde_table,enum eh_frame_type entry_type)
    19491960{
    19501961  enum { NONE, ALIGN4, ALIGN8, FAIL } workaround = NONE;
    19511962  gdb_byte *ret;
     
    19541965  while (1)
    19551966    {
    19561967      ret = decode_frame_entry_1 (unit, start, eh_frame_p,
    1957                                   cie_table, fde_table);
     1968                                  cie_table, fde_table,entry_type);
    19581969      if (ret != NULL)
    19591970        break;
    19601971
     
    21092120      frame_ptr = unit->dwarf_frame_buffer;
    21102121      while (frame_ptr < unit->dwarf_frame_buffer + unit->dwarf_frame_size)
    21112122        frame_ptr = decode_frame_entry (unit, frame_ptr, 1,
    2112                                         &cie_table, &fde_table);
     2123                                        &cie_table, &fde_table, eh_cie_or_fde_type_id);
    21132124
    21142125      if (cie_table.num_entries != 0)
    21152126        {
     
    21292140      frame_ptr = unit->dwarf_frame_buffer;
    21302141      while (frame_ptr < unit->dwarf_frame_buffer + unit->dwarf_frame_size)
    21312142        frame_ptr = decode_frame_entry (unit, frame_ptr, 0,
    2132                                         &cie_table, &fde_table);
     2143                                        &cie_table, &fde_table, eh_cie_or_fde_type_id);
    21332144    }
    21342145
    21352146  /* Discard the cie_table, it is no longer needed.  */
  • gdb/dwarf2read.c

    RCS file: /cvs/src/src/gdb/dwarf2read.c,v
    retrieving revision 1.409.2.5
    diff -u -r1.409.2.5 dwarf2read.c
     
    13591359
    13601360  if (info->size > 4 * pagesize && (sectp->flags & SEC_RELOC) == 0)
    13611361    {
    1362       off_t pg_offset = sectp->filepos & ~(pagesize - 1);
    1363       size_t map_length = info->size + sectp->filepos - pg_offset;
     1362      off_t filePos = (off_t)sectp->filepos+((abfd->my_archive == NULL)?0:abfd->origin);
     1363      off_t pg_offset =  filePos & ~((off_t)pagesize - 1);
     1364      size_t map_length = info->size + filePos - pg_offset;
    13641365      caddr_t retbuf = bfd_mmap (abfd, 0, map_length, PROT_READ,
    13651366                                 MAP_PRIVATE, pg_offset);
    13661367
    13671368      if (retbuf != MAP_FAILED)
    13681369        {
    13691370          info->was_mmapped = 1;
    1370           info->buffer = retbuf + (sectp->filepos & (pagesize - 1)) ;
     1371          info->buffer = retbuf + (filePos - pg_offset) ;
    13711372#if HAVE_POSIX_MADVISE
    13721373          posix_madvise (retbuf, map_length, POSIX_MADV_WILLNEED);
    13731374#endif