Home | History | Annotate | Download | only in elfutils
      1 diff -r -u -d /local/elfutils-0.138/libdw/dwarf_begin.c ./libdw/dwarf_begin.c
      2 --- /local/elfutils-0.138/libdw/dwarf_begin.c	2008-12-10 20:33:30.000000000 -0800
      3 +++ ./libdw/dwarf_begin.c	2012-03-09 10:19:33.000000000 -0800
      4 @@ -94,7 +94,9 @@
      5    /* Get an ELF descriptor.  */
      6    elf = elf_begin (fd, elfcmd, NULL);
      7    if (elf == NULL)
      8 +    /* ANDROID_CHANGE_BEGIN */
      9      {
     10 +#if 0
     11        /* Test why the `elf_begin" call failed.  */
     12        struct stat64 st;
     13  
     14 @@ -104,6 +106,10 @@
     15  	__libdw_seterrno (DWARF_E_INVALID_FILE);
     16        else
     17  	__libdw_seterrno (DWARF_E_IO_ERROR);
     18 +#else
     19 +      __libdw_seterrno (DWARF_E_IO_ERROR);
     20 +#endif
     21 +      /* ANDROID_CHANGE_END */
     22      }
     23    else
     24      {
     25 diff -r -u -d /local/elfutils-0.138/libdw/dwarf_getpubnames.c ./libdw/dwarf_getpubnames.c
     26 --- /local/elfutils-0.138/libdw/dwarf_getpubnames.c	2008-12-10 20:33:30.000000000 -0800
     27 +++ ./libdw/dwarf_getpubnames.c	2012-03-12 11:09:29.000000000 -0700
     28 @@ -60,6 +60,9 @@
     29  #include <libdwP.h>
     30  #include <dwarf.h>
     31  
     32 +/* ANDROID_CHANGE_BEGIN */
     33 +#include <AndroidFixup.h>
     34 +/* ANDROID_CHANGE_END */
     35  
     36  static int
     37  get_offsets (Dwarf *dbg)
     38 diff -r -u -d /local/elfutils-0.138/libdw/dwarf_getsrc_file.c ./libdw/dwarf_getsrc_file.c
     39 --- /local/elfutils-0.138/libdw/dwarf_getsrc_file.c	2008-12-10 20:33:30.000000000 -0800
     40 +++ ./libdw/dwarf_getsrc_file.c	2012-03-12 12:42:46.000000000 -0700
     41 @@ -59,7 +59,6 @@
     42  
     43  #include "libdwP.h"
     44  
     45 -
     46  int
     47  dwarf_getsrc_file (Dwarf *dbg, const char *fname, int lineno, int column,
     48  		   Dwarf_Line ***srcsp, size_t *nsrcs)
     49 diff -r -u -d /local/elfutils-0.138/libdw/libdw_alloc.c ./libdw/libdw_alloc.c
     50 --- /local/elfutils-0.138/libdw/libdw_alloc.c	2008-12-10 20:33:30.000000000 -0800
     51 +++ ./libdw/libdw_alloc.c	2012-03-09 10:19:35.000000000 -0800
     52 @@ -58,6 +58,9 @@
     53  #include <sys/param.h>
     54  #include "libdwP.h"
     55  
     56 +/* ANDROID_CHANGE_BEGIN */
     57 +#include <AndroidFixup.h>
     58 +/* ANDROID_CHANGE_END */
     59  
     60  void *
     61  __libdw_allocate (Dwarf *dbg, size_t minsize, size_t align)
     62 diff -r -u -d /local/elfutils-0.138/libdwfl/dwfl_build_id_find_elf.c ./libdwfl/dwfl_build_id_find_elf.c
     63 --- /local/elfutils-0.138/libdwfl/dwfl_build_id_find_elf.c	2008-12-10 20:33:30.000000000 -0800
     64 +++ ./libdwfl/dwfl_build_id_find_elf.c	2012-03-12 12:23:29.000000000 -0700
     65 @@ -52,7 +52,6 @@
     66  #include <fcntl.h>
     67  #include <unistd.h>
     68  
     69 -
     70  int
     71  internal_function
     72  __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name)
     73 @@ -84,8 +83,16 @@
     74  	    ".debug");
     75  
     76    const Dwfl_Callbacks *const cb = mod->dwfl->callbacks;
     77 +
     78 +/* ANDROID_CHANGE_BEGIN */
     79 +#ifdef __BIONIC__
     80 +  char *path = strdup ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
     81 +			?: DEFAULT_DEBUGINFO_PATH);
     82 +#else
     83    char *path = strdupa ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
     84  			?: DEFAULT_DEBUGINFO_PATH);
     85 +#endif
     86 +/* ANDROID_CHANGE_END */
     87  
     88    int fd = -1;
     89    char *dir;
     90 @@ -103,7 +110,6 @@
     91        if (unlikely (name == NULL))
     92  	break;
     93        memcpy (mempcpy (name, dir, dirlen), id_name, sizeof id_name);
     94 -
     95        fd = TEMP_FAILURE_RETRY (open64 (name, O_RDONLY));
     96        if (fd >= 0)
     97  	{
     98 @@ -119,6 +125,12 @@
     99        free (name);
    100      }
    101  
    102 +/* ANDROID_CHANGE_BEGIN */
    103 +#ifdef __BIONIC__
    104 +  free(path);
    105 +#endif
    106 +/* ANDROID_CHANGE_END */
    107 +
    108    /* If we simply found nothing, clear errno.  If we had some other error
    109       with the file, report that.  Possibly this should treat other errors
    110       like ENOENT too.  But ignoring all errors could mask some that should
    111 diff -r -u -d /local/elfutils-0.138/libdwfl/dwfl_error.c ./libdwfl/dwfl_error.c
    112 --- /local/elfutils-0.138/libdwfl/dwfl_error.c	2008-12-10 20:33:30.000000000 -0800
    113 +++ ./libdwfl/dwfl_error.c	2012-03-12 12:39:16.000000000 -0700
    114 @@ -218,7 +218,14 @@
    115    switch (error &~ 0xffff)
    116      {
    117      case OTHER_ERROR (ERRNO):
    118 +      /* ANDROID_CHANGE_BEGIN */
    119 +#ifdef __BIONIC__
    120 +      strerror_r (error & 0xffff, "bad", 0);
    121 +      return NULL;
    122 +#else
    123        return strerror_r (error & 0xffff, "bad", 0);
    124 +#endif
    125 +      /* ANDROID_CHANGE_END */
    126      case OTHER_ERROR (LIBELF):
    127        return elf_errmsg (error & 0xffff);
    128      case OTHER_ERROR (LIBDW):
    129 diff -r -u -d /local/elfutils-0.138/libdwfl/dwfl_module_build_id.c ./libdwfl/dwfl_module_build_id.c
    130 --- /local/elfutils-0.138/libdwfl/dwfl_module_build_id.c	2008-12-30 21:48:23.000000000 -0800
    131 +++ ./libdwfl/dwfl_module_build_id.c	2012-03-12 12:40:16.000000000 -0700
    132 @@ -139,9 +139,17 @@
    133    return result;
    134  }
    135  
    136 +/* ANDROID_CHANGE_BEGIN */
    137 +#if 0
    138  int
    139  __dwfl_module_build_id (Dwfl_Module *mod,
    140  			const unsigned char **bits, GElf_Addr *vaddr)
    141 +#else
    142 +int
    143 +dwfl_module_build_id (Dwfl_Module *mod,
    144 +		      const unsigned char **bits, GElf_Addr *vaddr)
    145 +#endif
    146 +/* ANDROID_CHANGE_END */
    147  {
    148    if (mod == NULL)
    149      return -1;
    150 @@ -164,6 +172,9 @@
    151    *vaddr = mod->build_id_vaddr;
    152    return mod->build_id_len;
    153  }
    154 +
    155 +/* ANDROID_CHANGE_BEGIN */
    156 +#if 0
    157  extern __typeof__ (dwfl_module_build_id) INTUSE(dwfl_module_build_id)
    158       __attribute__ ((alias ("__dwfl_module_build_id")));
    159  asm (".symver "
    160 @@ -180,3 +191,5 @@
    161  }
    162  asm (".symver "
    163       "_BUG_COMPAT_dwfl_module_build_id, dwfl_module_build_id (a] ELFUTILS_0.130");
    164 +#endif
    165 +/* ANDROID_CHANGE_END */
    166 diff -r -u -d /local/elfutils-0.138/libdwfl/dwfl_module_getdwarf.c ./libdwfl/dwfl_module_getdwarf.c
    167 --- /local/elfutils-0.138/libdwfl/dwfl_module_getdwarf.c	2008-12-10 20:33:30.000000000 -0800
    168 +++ ./libdwfl/dwfl_module_getdwarf.c	2012-03-12 12:24:14.000000000 -0700
    169 @@ -53,7 +53,6 @@
    170  #include <unistd.h>
    171  #include "../libdw/libdwP.h"	/* DWARF_E_* values are here.  */
    172  
    173 -
    174  /* Open libelf FILE->fd and compute the load base of ELF as loaded in MOD.
    175     When we return success, FILE->elf and FILE->bias are set up.  */
    176  static inline Dwfl_Error
    177 diff -r -u -d /local/elfutils-0.138/libdwfl/dwfl_module_getsrc_file.c ./libdwfl/dwfl_module_getsrc_file.c
    178 --- /local/elfutils-0.138/libdwfl/dwfl_module_getsrc_file.c	2008-12-10 20:33:30.000000000 -0800
    179 +++ ./libdwfl/dwfl_module_getsrc_file.c	2012-03-12 12:42:55.000000000 -0700
    180 @@ -50,7 +50,6 @@
    181  #include "libdwflP.h"
    182  #include "../libdw/libdwP.h"
    183  
    184 -
    185  int
    186  dwfl_module_getsrc_file (Dwfl_Module *mod,
    187  			 const char *fname, int lineno, int column,
    188 diff -r -u -d /local/elfutils-0.138/libdwfl/find-debuginfo.c ./libdwfl/find-debuginfo.c
    189 --- /local/elfutils-0.138/libdwfl/find-debuginfo.c	2008-12-10 20:33:30.000000000 -0800
    190 +++ ./libdwfl/find-debuginfo.c	2012-03-12 12:24:39.000000000 -0700
    191 @@ -53,7 +53,6 @@
    192  #include <unistd.h>
    193  #include "system.h"
    194  
    195 -
    196  /* Try to open64 [DIR/][SUBDIR/]DEBUGLINK, return file descriptor or -1.
    197     On success, *DEBUGINFO_FILE_NAME has the malloc'd name of the open file.  */
    198  static int
    199 @@ -145,8 +144,15 @@
    200       indicated by the debug directory path setting.  */
    201  
    202    const Dwfl_Callbacks *const cb = mod->dwfl->callbacks;
    203 +/* ANDROID_CHANGE_BEGIN */
    204 +#ifdef __BIONIC__
    205 +  char *path = strdup ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
    206 +			?: DEFAULT_DEBUGINFO_PATH);
    207 +#else
    208    char *path = strdupa ((cb->debuginfo_path ? *cb->debuginfo_path : NULL)
    209  			?: DEFAULT_DEBUGINFO_PATH);
    210 +#endif
    211 +/* ANDROID_CHANGE_END */
    212  
    213    /* A leading - or + in the whole path sets whether to check file CRCs.  */
    214    bool defcheck = true;
    215 @@ -156,8 +162,15 @@
    216        ++path;
    217      }
    218  
    219 +  /* ANDROID_CHANGE_BEGIN */
    220 +#ifdef __BIONIC__
    221 +  char *file_dirname = (file_basename == file_name ? NULL
    222 +			: strndup (file_name, file_basename - 1 - file_name));
    223 +#else
    224    char *file_dirname = (file_basename == file_name ? NULL
    225  			: strndupa (file_name, file_basename - 1 - file_name));
    226 +#endif
    227 +  /* ANDROID_CHANGE_END */
    228    char *p;
    229    while ((p = strsep (&path, ":")) != NULL)
    230      {
    231 @@ -201,17 +214,36 @@
    232  	  case ENOTDIR:
    233  	    continue;
    234  	  default:
    235 +/* ANDROID_CHANGE_BEGIN */
    236 +#ifdef __BIONIC__
    237 +            free(path);
    238 +            free(file_dirname);
    239 +#endif
    240 +/* ANDROID_CHANGE_END */
    241  	    return -1;
    242  	  }
    243        if (validate (mod, fd, check, debuglink_crc))
    244  	{
    245  	  *debuginfo_file_name = fname;
    246 +/* ANDROID_CHANGE_BEGIN */
    247 +#ifdef __BIONIC__
    248 +          free(path);
    249 +          free(file_dirname);
    250 +#endif
    251 +/* ANDROID_CHANGE_END */
    252  	  return fd;
    253  	}
    254        free (fname);
    255        close (fd);
    256      }
    257  
    258 +/* ANDROID_CHANGE_BEGIN */
    259 +#ifdef __BIONIC__
    260 +  free(path);
    261 +  free(file_dirname);
    262 +#endif
    263 +/* ANDROID_CHANGE_END */
    264 +
    265    /* No dice.  */
    266    errno = 0;
    267    return -1;
    268 diff -r -u -d /local/elfutils-0.138/libebl/eblopenbackend.c ./libebl/eblopenbackend.c
    269 --- /local/elfutils-0.138/libebl/eblopenbackend.c	2008-12-10 20:33:30.000000000 -0800
    270 +++ ./libebl/eblopenbackend.c	2012-03-16 16:55:06.000000000 -0700
    271 @@ -196,8 +196,15 @@
    272  				 uint32_t descsz, const char *desc);
    273  static bool default_debugscn_p (const char *name);
    274  static bool default_copy_reloc_p (int reloc);
    275 +/* ANDROID_CHANGE_BEGIN */
    276 +#ifndef __APPLE__
    277  static bool default_none_reloc_p (int reloc);
    278  static bool default_relative_reloc_p (int reloc);
    279 +#else
    280 +#define default_none_reloc_p 		default_copy_reloc_p
    281 +#define default_relative_reloc_p 	default_copy_reloc_p
    282 +#endif
    283 +/* ANDROID_CHANGE_END */
    284  static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr,
    285  					  const GElf_Sym *sym,
    286  					  const char *name,
    287 @@ -677,8 +684,12 @@
    288  {
    289    return false;
    290  }
    291 +/* ANDROID_CHANGE_BEGIN */
    292 +#ifndef __APPLE__
    293  strong_alias (default_copy_reloc_p, default_none_reloc_p)
    294  strong_alias (default_copy_reloc_p, default_relative_reloc_p)
    295 +#endif
    296 +/* ANDROID_CHANGE_END */
    297  
    298  static bool
    299  default_check_special_symbol (Elf *elf __attribute__ ((unused)),
    300 diff -r -u -d /local/elfutils-0.138/libebl/libeblP.h ./libebl/libeblP.h
    301 --- /local/elfutils-0.138/libebl/libeblP.h	2008-12-10 20:33:30.000000000 -0800
    302 +++ ./libebl/libeblP.h	2012-03-09 10:19:37.000000000 -0800
    303 @@ -55,7 +55,6 @@
    304  #include <libebl.h>
    305  #include <libintl.h>
    306  
    307 -
    308  /* Backend handle.  */
    309  struct ebl
    310  {
    311 diff -r -u -d /local/elfutils-0.138/libelf/elf32_fsize.c ./libelf/elf32_fsize.c
    312 --- /local/elfutils-0.138/libelf/elf32_fsize.c	2008-12-10 20:33:30.000000000 -0800
    313 +++ ./libelf/elf32_fsize.c	2012-03-09 10:19:38.000000000 -0800
    314 @@ -88,5 +88,9 @@
    315  	  * __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][type]);
    316  #endif
    317  }
    318 +/* ANDROID_CHANGE_BEGIN */
    319 +#ifndef __APPLE__
    320  #define local_strong_alias(n1, n2) strong_alias (n1, n2)
    321  local_strong_alias (elfw2(LIBELFBITS, fsize), __elfw2(LIBELFBITS, msize))
    322 +#endif
    323 +/* ANDROID_CHANGE_END */
    324 diff -r -u -d /local/elfutils-0.138/libelf/elf_begin.c ./libelf/elf_begin.c
    325 --- /local/elfutils-0.138/libelf/elf_begin.c	2008-12-10 20:33:30.000000000 -0800
    326 +++ ./libelf/elf_begin.c	2012-03-09 10:19:38.000000000 -0800
    327 @@ -68,7 +68,6 @@
    328  #include "libelfP.h"
    329  #include "common.h"
    330  
    331 -
    332  /* Create descriptor for archive in memory.  */
    333  static inline Elf *
    334  file_read_ar (int fildes, void *map_address, off_t offset, size_t maxsize,
    335 diff -r -u -d /local/elfutils-0.138/libelf/elf_getdata_rawchunk.c ./libelf/elf_getdata_rawchunk.c
    336 --- /local/elfutils-0.138/libelf/elf_getdata_rawchunk.c	2008-12-10 20:33:30.000000000 -0800
    337 +++ ./libelf/elf_getdata_rawchunk.c	2012-03-15 11:14:32.000000000 -0700
    338 @@ -64,7 +64,13 @@
    339  Elf_Data *
    340  elf_getdata_rawchunk (elf, offset, size, type)
    341       Elf *elf;
    342 +     /* ANDROID_CHANGE_BEGIN */
    343 +#if 0
    344       off64_t offset;
    345 +#else
    346 +     off_t offset;
    347 +#endif
    348 +     /* ANDROID_CHANGE_END */
    349       size_t size;
    350       Elf_Type type;
    351  {
    352 @@ -78,8 +84,15 @@
    353        return NULL;
    354      }
    355  
    356 +   /* ANDROID_CHANGE_BEGIN */
    357 +#if 0
    358    if (unlikely (size > elf->maximum_size
    359  		|| (off64_t) (elf->maximum_size - size) < offset))
    360 +#else
    361 +  if (unlikely (size > elf->maximum_size
    362 +		|| (off_t) (elf->maximum_size - size) < offset))
    363 +#endif
    364 +   /* ANDROID_CHANGE_END */
    365      {
    366        /* Invalid request.  */
    367        __libelf_seterrno (ELF_E_INVALID_OP);
    368 diff -r -u -d /local/elfutils-0.138/libelf/elf.h ./libelf/elf.h
    369 --- /local/elfutils-0.138/libelf/elf.h	2008-12-10 20:33:30.000000000 -0800
    370 +++ ./libelf/elf.h	2012-03-09 10:19:38.000000000 -0800
    371 @@ -21,7 +21,15 @@
    372  #ifndef _ELF_H
    373  #define	_ELF_H 1
    374  
    375 +/* ANDROID_CHANGE_BEGIN */
    376 +/*
    377 + * elf.h may be directly included from a different project, and features.h does
    378 + * not exist on host Mac OS.
    379 + */
    380 +#ifndef __APPLE__
    381  #include <features.h>
    382 +#endif
    383 +/* ANDROID_CHANGE_END */
    384  
    385  __BEGIN_DECLS
    386  
    387 diff -r -u -d /local/elfutils-0.138/libelf/gelf_xlate.c ./libelf/gelf_xlate.c
    388 --- /local/elfutils-0.138/libelf/gelf_xlate.c	2008-12-10 20:33:30.000000000 -0800
    389 +++ ./libelf/gelf_xlate.c	2012-03-09 10:19:39.000000000 -0800
    390 @@ -229,7 +229,11 @@
    391      }
    392    }
    393  };
    394 +/* ANDROID_CHANGE_BEGIN */
    395 +#ifndef __APPLE__
    396  /* For now we only handle the case where the memory representation is the
    397     same as the file representation.  Should this change we have to define
    398     separate functions.  For now reuse them.  */
    399  strong_alias (__elf_xfctstom, __elf_xfctstof)
    400 +#endif
    401 +/* ANDROID_CHANGE_END */
    402 diff -r -u -d /local/elfutils-0.138/libelf/libelf.h ./libelf/libelf.h
    403 --- /local/elfutils-0.138/libelf/libelf.h	2008-12-17 16:29:37.000000000 -0800
    404 +++ ./libelf/libelf.h	2012-03-15 11:07:48.000000000 -0700
    405 @@ -95,7 +95,13 @@
    406    Elf_Type d_type;		/* Type of this piece of data.  */
    407    unsigned int d_version;	/* ELF version.  */
    408    size_t d_size;		/* Size in bytes.  */
    409 +  /* ANDROID_CHANGE_BEGIN */
    410 +#if 0
    411    loff_t d_off;			/* Offset into section.  */
    412 +#else
    413 +  off_t d_off;			/* Offset into section.  */
    414 +#endif
    415 +  /* ANDROID_CHANGE_END */
    416    size_t d_align;		/* Alignment in section.  */
    417  } Elf_Data;
    418  
    419 @@ -157,7 +163,13 @@
    420    uid_t ar_uid;			/* User ID.  */
    421    gid_t ar_gid;			/* Group ID.  */
    422    mode_t ar_mode;		/* File mode.  */
    423 +  /* ANDROID_CHANGE_BEGIN */
    424 +#if 0
    425    loff_t ar_size;		/* File size.  */
    426 +#else
    427 +  off_t ar_size;		/* File size.  */
    428 +#endif
    429 +  /* ANDROID_CHANGE_END */
    430    char *ar_rawname;		/* Original name of archive member.  */
    431  } Elf_Arhdr;
    432  
    433 @@ -198,13 +210,25 @@
    434  extern int elf_end (Elf *__elf);
    435  
    436  /* Update ELF descriptor and write file to disk.  */
    437 -extern loff_t elf_update (Elf *__elf, Elf_Cmd __cmd);
    438 +/* ANDROID_CHANGE_BEGIN */
    439 +#if 0
    440 +extern off_t elf_update (Elf *__elf, Elf_Cmd __cmd);
    441 +#else
    442 +#endif
    443 +/* ANDROID_CHANGE_END */
    444 +
    445  
    446  /* Determine what kind of file is associated with ELF.  */
    447  extern Elf_Kind elf_kind (Elf *__elf) __attribute__ ((__pure__));
    448  
    449  /* Get the base offset for an object file.  */
    450 +/* ANDROID_CHANGE_BEGIN */
    451 +#if 0
    452  extern loff_t elf_getbase (Elf *__elf);
    453 +#else
    454 +extern off_t elf_getbase (Elf *__elf);
    455 +#endif
    456 +/* ANDROID_CHANGE_END */
    457  
    458  
    459  /* Retrieve file identification data.  */
    460 @@ -305,9 +329,17 @@
    461  /* Get data translated from a chunk of the file contents as section data
    462     would be for TYPE.  The resulting Elf_Data pointer is valid until
    463     elf_end (ELF) is called.  */
    464 +/* ANDROID_CHANGE_BEGIN */
    465 +#if 0
    466  extern Elf_Data *elf_getdata_rawchunk (Elf *__elf,
    467  				       loff_t __offset, size_t __size,
    468  				       Elf_Type __type);
    469 +#else
    470 +extern Elf_Data *elf_getdata_rawchunk (Elf *__elf,
    471 +				       off_t __offset, size_t __size,
    472 +				       Elf_Type __type);
    473 +#endif
    474 +/* ANDROID_CHANGE_END */
    475  
    476  
    477  /* Return pointer to string at OFFSET in section INDEX.  */
    478 @@ -318,7 +350,13 @@
    479  extern Elf_Arhdr *elf_getarhdr (Elf *__elf);
    480  
    481  /* Return offset in archive for current file ELF.  */
    482 +/* ANDROID_CHANGE_BEGIN */
    483 +#if 0
    484  extern loff_t elf_getaroff (Elf *__elf);
    485 +#else
    486 +extern off_t elf_getaroff (Elf *__elf);
    487 +#endif
    488 +/* ANDROID_CHANGE_END */
    489  
    490  /* Select archive element at OFFSET.  */
    491  extern size_t elf_rand (Elf *__elf, size_t __offset);
    492