RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Robert Scheck
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 06-Apr-2008 22:32:16
Branch: rpm-4_5 Handle: 2008040620321500
Modified files: (Branch: rpm-4_5)
rpm CHANGES
rpm/tools debugedit.c
Log:
Backport debugedit.c from 5.0 to get it build with latest gcc
Summary:
Revision Changes Path
1.1360.2.63 +1 -0 rpm/CHANGES
2.9.2.2 +47 -48 rpm/tools/debugedit.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1360.2.62 -r1.1360.2.63 CHANGES
--- rpm/CHANGES 19 Mar 2008 04:07:35 -0000 1.1360.2.62
+++ rpm/CHANGES 6 Apr 2008 20:32:15 -0000 1.1360.2.63
@@ -1,4 +1,5 @@
4.4.9 -> 4.5:
+ - robert: backport debugedit.c from 5.0 to get it build with latest gcc
- glen: backport from 5.0: --rollback PSM_INIT changes added fstates
before initialize.
- proyvind: add back SOURCEPACKAGE tag for Mandriva to allow packages to
be rebuilt on older releases
- proyvind: add back rpm v3 format support for Mandriva
@@ .
patch -p0 <<'@@ .'
Index: rpm/tools/debugedit.c
============================================================================
$ cvs diff -u -r2.9.2.1 -r2.9.2.2 debugedit.c
--- rpm/tools/debugedit.c 28 Aug 2007 16:10:19 -0000 2.9.2.1
+++ rpm/tools/debugedit.c 6 Apr 2008 20:32:15 -0000 2.9.2.2
@@ -35,9 +35,6 @@
#include <gelf.h>
-#if 1 /* XXX compile without dwarf.h */
-#include <dwarf.h>
-#else
/* some defines taken from the dwarf standard */
#define DW_TAG_compile_unit 0x11
@@ -67,9 +64,9 @@
#define DW_FORM_ref8 0x14
#define DW_FORM_ref_udata 0x15
#define DW_FORM_indirect 0x16
-#endif
-#include "beecrypt.h"
+#include <beecrypt/beecrypt.h>
+
#include "hashtab.h"
#define DW_TAG_partial_unit 0x3c
@@ -539,18 +536,18 @@
value = 1;
while (*ptr != 0)
{
- ptr = strchr (ptr, 0) + 1;
+ ptr = (unsigned char *) strchr ((char *)ptr, 0) + 1;
++value;
}
dirt = (unsigned char **) alloca (value * sizeof (unsigned char *));
- dirt[0] = ".";
+ dirt[0] = (unsigned char *) ".";
dirt_cnt = 1;
ptr = dir;
while (*ptr != 0)
{
dirt[dirt_cnt++] = ptr;
- ptr = strchr (ptr, 0) + 1;
+ ptr = (unsigned char *) strchr ((char *)ptr, 0) + 1;
}
ptr++;
@@ -560,8 +557,8 @@
char *s, *file;
size_t file_len, dir_len;
- file = ptr;
- ptr = strchr (ptr, 0) + 1;
+ file = (char *) ptr;
+ ptr = (unsigned char *) strchr ((char *)ptr, 0) + 1;
value = read_uleb128 (ptr);
if (value >= dirt_cnt)
@@ -571,7 +568,7 @@
return 1;
}
file_len = strlen (file);
- dir_len = strlen (dirt[value]);
+ dir_len = strlen ((char *)dirt[value]);
s = malloc (comp_dir_len + 1 + file_len + 1 + dir_len + 1);
if (s == NULL)
{
@@ -592,30 +589,34 @@
}
else
{
- memcpy (s, comp_dir, comp_dir_len);
- s[comp_dir_len] = '/';
- memcpy (s + comp_dir_len + 1, dirt[value], dir_len);
- s[comp_dir_len + 1 + dir_len] = '/';
- memcpy (s + comp_dir_len + 1 + dir_len + 1, file, file_len + 1);
+ char *p = s;
+ if (comp_dir_len != 0)
+ {
+ memcpy (s, comp_dir, comp_dir_len);
+ s[comp_dir_len] = '/';
+ p += comp_dir_len + 1;
+ }
+ memcpy (p, dirt[value], dir_len);
+ p[dir_len] = '/';
+ memcpy (p + dir_len + 1, file, file_len + 1);
}
canonicalize_path (s, s);
- if (base_dir == NULL ||
- has_prefix (s, base_dir))
+ if (list_file_fd != -1)
{
- char *p;
- size_t size;
- ssize_t ret;
- if (base_dir)
- p = s + strlen (base_dir);
- else
+ char *p = NULL;
+ if (base_dir == NULL)
p = s;
-
- if (list_file_fd != -1)
+ else if (has_prefix (s, base_dir))
+ p = s + strlen (base_dir);
+ else if (has_prefix (s, dest_dir))
+ p = s + strlen (dest_dir);
+
+ if (p)
{
- size = strlen (p) + 1;
+ size_t size = strlen (p) + 1;
while (size > 0)
{
- ret = write (list_file_fd, p, size);
+ ssize_t ret = write (list_file_fd, p, size);
if (ret == -1)
break;
size -= ret;
@@ -648,13 +649,12 @@
}
else
ptr = srcptr = dir;
- unsigned char *srcstart=srcptr;
while (*srcptr != 0)
{
- size_t len = strlen (srcptr) + 1;
+ size_t len = strlen ((char *)srcptr) + 1;
const unsigned char *readptr = srcptr;
- if (*srcptr == '/' && has_prefix (srcptr, base_dir))
+ if (*srcptr == '/' && has_prefix ((char *)srcptr, base_dir))
{
if (dest_len < base_len)
++abs_dir_cnt;
@@ -665,8 +665,8 @@
srcptr += len;
shrank += srcptr - readptr;
- canonicalize_path (readptr, ptr);
- len = strlen (ptr) + 1;
+ canonicalize_path ((char *)readptr, (char *)ptr);
+ len = strlen ((char *)ptr) + 1;
shrank -= len;
ptr += len;
@@ -699,9 +699,9 @@
while (*srcptr != 0)
{
- size_t len = strlen (srcptr) + 1;
+ size_t len = strlen ((char *)srcptr) + 1;
- if (*srcptr == '/' && has_prefix (srcptr, base_dir))
+ if (*srcptr == '/' && has_prefix ((char *)srcptr, base_dir))
{
memcpy (ptr, dest_dir, dest_len);
if (dest_len < base_len)
@@ -739,7 +739,7 @@
int i;
uint_32 list_offs;
int found_list_offs;
- unsigned char *comp_dir;
+ char *comp_dir;
comp_dir = NULL;
list_offs = 0;
@@ -767,9 +767,9 @@
if ( form == DW_FORM_string )
{
free (comp_dir);
- comp_dir = strdup (ptr);
+ comp_dir = strdup ((char *)ptr);
- if (phase == 1 && dest_dir && has_prefix (ptr, base_dir))
+ if (phase == 1 && dest_dir && has_prefix ((char *)ptr,
base_dir))
{
base_len = strlen (base_dir);
dest_len = strlen (dest_dir);
@@ -791,7 +791,7 @@
{
char *dir;
- dir = debug_sections[DEBUG_STR].data
+ dir = (char *)debug_sections[DEBUG_STR].data
+ do_read_32_relocated (ptr);
free (comp_dir);
@@ -821,7 +821,7 @@
{
char *name;
- name = debug_sections[DEBUG_STR].data
+ name = (char *)debug_sections[DEBUG_STR].data
+ do_read_32_relocated (ptr);
if (*name == '/' && comp_dir == NULL)
{
@@ -855,6 +855,7 @@
switch (form)
{
+ case DW_FORM_ref_addr: /* ptr_size in DWARF 2, offset in DWARF 3 */
case DW_FORM_addr:
ptr += ptr_size;
break;
@@ -880,12 +881,11 @@
case DW_FORM_udata:
read_uleb128 (ptr);
break;
- case DW_FORM_ref_addr:
case DW_FORM_strp:
ptr += 4;
break;
case DW_FORM_string:
- ptr = strchr (ptr, '\0') + 1;
+ ptr = (unsigned char *) strchr ((char *)ptr, '\0') + 1;
break;
case DW_FORM_indirect:
form = read_uleb128 (ptr);
@@ -1374,7 +1374,6 @@
or Elf64 object, only that we are consistent in what bits feed the
hash so it comes out the same for the same file contents. */
{
- inline void process (const void *data, size_t size);
inline void process (const void *data, size_t size)
{
memchunk chunk = { .data = (void *) data, .size = size };
@@ -1440,7 +1439,7 @@
/* Now format the build ID bits in hex to print out. */
{
- const unsigned char * id = build_id->d_buf + build_id_offset;
+ const unsigned char * id = (unsigned char *) build_id->d_buf +
build_id_offset;
char hex[build_id_size * 2 + 1];
int n = snprintf (hex, 3, "%02" PRIx8, id[0]);
assert (n == 2);
@@ -1586,24 +1585,24 @@
Elf_Data src = dst;
src.d_buf = data->d_buf;
assert (sizeof (Elf32_Nhdr) == sizeof (Elf64_Nhdr));
- while (data->d_buf + data->d_size - src.d_buf > (int) sizeof nh
+ while ((char *) data->d_buf + data->d_size - (char *) src.d_buf >
(int) sizeof nh
&& elf32_xlatetom (&dst, &src, dso->ehdr.e_ident[EI_DATA]))
{
Elf32_Word len = sizeof nh + nh.n_namesz;
len = (len + 3) & ~3;
if (nh.n_namesz == sizeof "GNU" && nh.n_type == 3
- && !memcmp (src.d_buf + sizeof nh, "GNU", sizeof "GNU"))
+ && !memcmp ((char *) src.d_buf + sizeof nh, "GNU", sizeof
"GNU"))
{
build_id = data;
- build_id_offset = src.d_buf + len - data->d_buf;
+ build_id_offset = (char *) src.d_buf + len - (char *)
data->d_buf;
build_id_size = nh.n_descsz;
break;
}
len += nh.n_descsz;
len = (len + 3) & ~3;
- src.d_buf += len;
+ src.d_buf = (char *) src.d_buf + len;
}
}
break;
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]