packages (rpm-4_5): rpm/rpm.spec, rpm/rpm-debugedit-dwarf4.patch (NEW)=?UTF-8?Q?=20?=- ad...

pluto pluto at pld-linux.org
Sat Jun 23 21:05:37 CEST 2012


Author: pluto                        Date: Sat Jun 23 19:05:37 2012 GMT
Module: packages                      Tag: rpm-4_5
---- Log message:
- add dwarf-4 support for debugedit, release 68.
  https://bugzilla.redhat.com/show_bug.cgi?id=707677

---- Files affected:
packages/rpm:
   rpm.spec (1.837.2.42.2.49.2.124 -> 1.837.2.42.2.49.2.125) , rpm-debugedit-dwarf4.patch (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: packages/rpm/rpm.spec
diff -u packages/rpm/rpm.spec:1.837.2.42.2.49.2.124 packages/rpm/rpm.spec:1.837.2.42.2.49.2.125
--- packages/rpm/rpm.spec:1.837.2.42.2.49.2.124	Sat Jun 23 13:48:24 2012
+++ packages/rpm/rpm.spec	Sat Jun 23 21:05:32 2012
@@ -58,7 +58,7 @@
 Summary(uk.UTF-8):	Менеджер пакетів від RPM
 Name:		rpm
 Version:	4.5
-Release:	67
+Release:	68
 License:	LGPL
 Group:		Base
 Source0:	%{name}-%{version}.tar.gz
@@ -188,6 +188,7 @@
 Patch104:	%{name}-glob.patch
 Patch105:	%{name}-am.patch
 Patch106:	%{name}-automake_1.12.patch
+Patch107:	%{name}-debugedit-dwarf4.patch
 URL:		http://rpm5.org/
 BuildRequires:	autoconf >= 2.57
 BuildRequires:	automake >= 1.4
@@ -822,6 +823,7 @@
 %patch104 -p1
 %patch105 -p1
 %patch106 -p1
+%patch107 -p1
 
 mv -f po/{sr,sr at Latn}.po
 rm -rf sqlite zlib popt
@@ -1497,6 +1499,10 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.837.2.42.2.49.2.125  2012/06/23 19:05:32  pluto
+- add dwarf-4 support for debugedit, release 68.
+  https://bugzilla.redhat.com/show_bug.cgi?id=707677
+
 Revision 1.837.2.42.2.49.2.124  2012/06/23 11:48:24  pluto
 - release 67 (switch to dwarf-4 debuginfo format, gcc-4.7 required).
 

================================================================
Index: packages/rpm/rpm-debugedit-dwarf4.patch
diff -u /dev/null packages/rpm/rpm-debugedit-dwarf4.patch:1.1.2.1
--- /dev/null	Sat Jun 23 21:05:38 2012
+++ packages/rpm/rpm-debugedit-dwarf4.patch	Sat Jun 23 21:05:32 2012
@@ -0,0 +1,124 @@
+--- rpm-4.5/tools/debugedit.c.orig	2012-06-23 20:54:51.748542754 +0200
++++ rpm-4.5/tools/debugedit.c	2012-06-23 20:56:12.045612104 +0200
+@@ -70,6 +70,10 @@
+ #include "hashtab.h"
+ 
+ #define DW_TAG_partial_unit 0x3c
++#define DW_FORM_sec_offset 0x17
++#define DW_FORM_exprloc 0x18
++#define DW_FORM_flag_present 0x19
++#define DW_FORM_ref_sig8 0x20
+ 
+ char *base_dir = NULL;
+ char *dest_dir = NULL;
+@@ -250,6 +254,7 @@ static struct
+ #define DEBUG_STR	8
+ #define DEBUG_FRAME	9
+ #define DEBUG_RANGES	10
++#define DEBUG_TYPES	11
+     { ".debug_info", NULL, NULL, 0, 0, 0 },
+     { ".debug_abbrev", NULL, NULL, 0, 0, 0 },
+     { ".debug_line", NULL, NULL, 0, 0, 0 },
+@@ -261,6 +266,7 @@ static struct
+     { ".debug_str", NULL, NULL, 0, 0, 0 },
+     { ".debug_frame", NULL, NULL, 0, 0, 0 },
+     { ".debug_ranges", NULL, NULL, 0, 0, 0 },
++    { ".debug_types", NULL, NULL, 0, 0, 0 },
+     { NULL, NULL, NULL, 0, 0, 0 }
+   };
+ 
+@@ -353,7 +359,8 @@ no_memory:
+ 		goto no_memory;
+ 	    }
+ 	  form = read_uleb128 (ptr);
+-	  if (form == 2 || form > DW_FORM_indirect)
++	  if (form == 2
++	      || (form > DW_FORM_flag_present && form != DW_FORM_ref_sig8))
+ 	    {
+ 	      error (0, 0, "%s: Unknown DWARF DW_FORM_%d", dso->filename, form);
+ 	      htab_delete (h);
+@@ -382,7 +389,6 @@ static char *
+ canonicalize_path (const char *s, char *d)
+ {
+   char *rv = d;
+-  const char *sroot;
+   char *droot;
+ 
+   if (IS_DIR_SEPARATOR (*s))
+@@ -398,7 +404,6 @@ canonicalize_path (const char *s, char *
+ 	s++;
+     }
+   droot = d;
+-  sroot = s;
+ 
+   while (*s)
+     {
+@@ -517,7 +522,7 @@ edit_dwarf2_line (DSO *dso, rpmuint32_t
+     }
+ 
+   value = read_16 (ptr);
+-  if (value != 2 && value != 3)
++  if (value != 2 && value != 3 && value != 4)
+     {
+       error (0, 0, "%s: DWARF version %d unhandled", dso->filename,
+ 	     value);
+@@ -533,8 +538,8 @@ edit_dwarf2_line (DSO *dso, rpmuint32_t
+       return 1;
+     }
+   
+-  opcode_base = ptr[4];
+-  ptr = dir = ptr + 4 + opcode_base;
++  opcode_base = ptr[4 + (value >= 4)];
++  ptr = dir = ptr + 4 + (value >= 4) + opcode_base;
+   
+   /* dir table: */
+   value = 1;
+@@ -762,7 +767,8 @@ edit_attributes (DSO *dso, unsigned char
+ 	{
+ 	  if (t->attr[i].attr == DW_AT_stmt_list)
+ 	    {
+-	      if (form == DW_FORM_data4)
++	      if (form == DW_FORM_data4
++		  || form == DW_FORM_sec_offset)
+ 		{
+ 		  list_offs = do_read_32_relocated (ptr);
+ 		  found_list_offs = 1;
+@@ -868,6 +874,8 @@ edit_attributes (DSO *dso, unsigned char
+ 	      else
+ 		ptr += 4;
+ 	      break;
++	    case DW_FORM_flag_present:
++	      break;
+ 	    case DW_FORM_addr:
+ 	      ptr += ptr_size;
+ 	      break;
+@@ -882,10 +890,12 @@ edit_attributes (DSO *dso, unsigned char
+ 	      break;
+ 	    case DW_FORM_ref4:
+ 	    case DW_FORM_data4:
++	    case DW_FORM_sec_offset:
+ 	      ptr += 4;
+ 	      break;
+ 	    case DW_FORM_ref8:
+ 	    case DW_FORM_data8:
++	    case DW_FORM_ref_sig8:
+ 	      ptr += 8;
+ 	      break;
+ 	    case DW_FORM_sdata:
+@@ -914,6 +924,7 @@ edit_attributes (DSO *dso, unsigned char
+ 	      form = DW_FORM_block1;
+ 	      break;
+ 	    case DW_FORM_block:
++	    case DW_FORM_exprloc:
+ 	      len = read_uleb128 (ptr);
+ 	      form = DW_FORM_block1;
+ 	      assert (len < UINT_MAX);
+@@ -1217,7 +1228,7 @@ edit_dwarf2 (DSO *dso)
+ 		}
+ 	      
+ 	      cu_version = read_16 (ptr);
+-	      if (cu_version != 2 && cu_version != 3)
++	      if (cu_version != 2 && cu_version != 3 && cu_version != 4)
+ 		{
+ 		  error (0, 0, "%s: DWARF version %d unhandled", dso->filename,
+ 			 cu_version);
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/packages/rpm/rpm.spec?r1=1.837.2.42.2.49.2.124&r2=1.837.2.42.2.49.2.125



More information about the pld-cvs-commit mailing list