Accepting request 724550 from devel:tools:compiler
OBS-URL: https://build.opensuse.org/request/show/724550 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/dwz?expand=0&rev=7
This commit is contained in:
commit
52d77bd1f9
3
_multibuild
Normal file
3
_multibuild
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<multibuild>
|
||||||
|
<package>testsuite</package>
|
||||||
|
</multibuild>
|
@ -1,35 +0,0 @@
|
|||||||
diff --git a/dwarf2.def b/dwarf2.def
|
|
||||||
index e9a8bca..17311fa 100644
|
|
||||||
--- a/dwarf2.def
|
|
||||||
+++ b/dwarf2.def
|
|
||||||
@@ -588,6 +588,9 @@ DW_OP (DW_OP_GNU_reinterpret, 0xf9)
|
|
||||||
DW_OP (DW_OP_GNU_parameter_ref, 0xfa)
|
|
||||||
/* Extension for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
|
|
||||||
DW_OP (DW_OP_GNU_addr_index, 0xfb)
|
|
||||||
+/* The GNU variable value extension.
|
|
||||||
+ See http://dwarfstd.org/ShowIssue.php?issue=161109.2 . */
|
|
||||||
+DW_OP (DW_OP_GNU_variable_value, 0xfd)
|
|
||||||
/* HP extensions. */
|
|
||||||
DW_OP_DUP (DW_OP_HP_unknown, 0xe0) /* Ouch, the same as GNU_push_tls_address. */
|
|
||||||
DW_OP (DW_OP_HP_is_value, 0xe1)
|
|
||||||
diff --git a/dwz.c b/dwz.c
|
|
||||||
index b3b779d..b387ebc 100644
|
|
||||||
--- a/dwz.c
|
|
||||||
+++ b/dwz.c
|
|
||||||
@@ -1522,6 +1522,7 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len,
|
|
||||||
ptr += 4;
|
|
||||||
break;
|
|
||||||
case DW_OP_call_ref:
|
|
||||||
+ case DW_OP_GNU_variable_value:
|
|
||||||
case DW_OP_GNU_implicit_pointer:
|
|
||||||
cu = die_cu (die);
|
|
||||||
addr = read_size (ptr, cu->cu_version == 2 ? ptr_size : 4);
|
|
||||||
@@ -8576,6 +8577,7 @@ adjust_exprloc (dw_cu_ref cu, dw_die_ref die, dw_cu_ref refcu,
|
|
||||||
ptr += 4;
|
|
||||||
break;
|
|
||||||
case DW_OP_call_ref:
|
|
||||||
+ case DW_OP_GNU_variable_value:
|
|
||||||
case DW_OP_GNU_implicit_pointer:
|
|
||||||
addr = read_size (ptr, refcu->cu_version == 2 ? ptr_size : 4);
|
|
||||||
assert (cu->cu_version == refcu->cu_version);
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
diff --git a/dwz.c b/dwz.c
|
|
||||||
index b3b779d..5ab45a2 100644
|
|
||||||
--- a/dwz.c
|
|
||||||
+++ b/dwz.c
|
|
||||||
@@ -10016,6 +10016,26 @@ error_out:
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Sort shdr indices after sh_offset. */
|
|
||||||
+static DSO *shdr_sort_compar_dso;
|
|
||||||
+static int
|
|
||||||
+shdr_sort_compar (const void *p1, const void *p2)
|
|
||||||
+{
|
|
||||||
+ const int *idx1 = (const int *)p1;
|
|
||||||
+ const int *idx2 = (const int *)p2;
|
|
||||||
+ if (shdr_sort_compar_dso->shdr[*idx1].sh_offset
|
|
||||||
+ < shdr_sort_compar_dso->shdr[*idx2].sh_offset)
|
|
||||||
+ return -1;
|
|
||||||
+ else if (shdr_sort_compar_dso->shdr[*idx1].sh_offset
|
|
||||||
+ > shdr_sort_compar_dso->shdr[*idx2].sh_offset)
|
|
||||||
+ return 1;
|
|
||||||
+ if (*idx1 < *idx2)
|
|
||||||
+ return -1;
|
|
||||||
+ else if (*idx1 > *idx2)
|
|
||||||
+ return 1;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Store new ELF into FILE. debug_sections array contains
|
|
||||||
new_data/new_size pairs where needed. */
|
|
||||||
static int
|
|
||||||
@@ -10090,7 +10110,14 @@ write_dso (DSO *dso, const char *file, struct stat *st)
|
|
||||||
if (off < min_shoff)
|
|
||||||
min_shoff = off;
|
|
||||||
for (j = 1; j < dso->ehdr.e_shnum; ++j)
|
|
||||||
- if (dso->shdr[j].sh_offset > off)
|
|
||||||
+ if (dso->shdr[j].sh_offset > off
|
|
||||||
+ /* Do not adjust SHT_NOBITS sh_offset here, the kernel
|
|
||||||
+ for example lays out those in the middle of some
|
|
||||||
+ other sections which may cause their offset to wrap
|
|
||||||
+ around zero.
|
|
||||||
+ ??? Now in theory not adjusting means we might end up
|
|
||||||
+ with those having a higher offset than any other section. */
|
|
||||||
+ && dso->shdr[j].sh_type != SHT_NOBITS)
|
|
||||||
dso->shdr[j].sh_offset += diff;
|
|
||||||
if (ehdr.e_shoff > off)
|
|
||||||
ehdr.e_shoff += diff;
|
|
||||||
@@ -10123,6 +10150,7 @@ write_dso (DSO *dso, const char *file, struct stat *st)
|
|
||||||
|
|
||||||
if (min_shoff != ~(GElf_Off) 0)
|
|
||||||
{
|
|
||||||
+ /* Any section needs sh_offset adjustment to meet sh_addralign? */
|
|
||||||
for (j = 1; j < dso->ehdr.e_shnum; ++j)
|
|
||||||
if (dso->shdr[j].sh_offset >= min_shoff
|
|
||||||
&& dso->shdr[j].sh_addralign > 1
|
|
||||||
@@ -10133,21 +10161,34 @@ write_dso (DSO *dso, const char *file, struct stat *st)
|
|
||||||
&& (ehdr.e_shoff & (ehdr.e_ident[EI_CLASS] == ELFCLASS64
|
|
||||||
? 7 : 3)) != 0))
|
|
||||||
{
|
|
||||||
+ /* Compute a section index list sorted after sh_offset. */
|
|
||||||
+ int *shdrmap = alloca (dso->ehdr.e_shnum * sizeof (int));
|
|
||||||
+ for (j = 0; j < dso->ehdr.e_shnum; ++j)
|
|
||||||
+ shdrmap[j] = j;
|
|
||||||
+ shdr_sort_compar_dso = dso;
|
|
||||||
+ qsort (shdrmap, dso->ehdr.e_shnum, sizeof (int),
|
|
||||||
+ shdr_sort_compar);
|
|
||||||
+ shdr_sort_compar_dso = NULL;
|
|
||||||
+
|
|
||||||
/* Need to fix up sh_offset/e_shoff. Punt if all the sections
|
|
||||||
>= min_shoff aren't non-ALLOC. */
|
|
||||||
GElf_Off last_shoff = 0;
|
|
||||||
int k = -1;
|
|
||||||
bool shdr_placed = false;
|
|
||||||
for (j = 1; j < dso->ehdr.e_shnum; ++j)
|
|
||||||
- if (dso->shdr[j].sh_offset < min_shoff && !last_shoff)
|
|
||||||
+ if (dso->shdr[shdrmap[j]].sh_offset < min_shoff && !last_shoff)
|
|
||||||
+ continue;
|
|
||||||
+ else if (dso->shdr[shdrmap[j]].sh_type == SHT_NOBITS)
|
|
||||||
+ /* NOBITS are just left in place where they are and their
|
|
||||||
+ sh_size does not matter. */
|
|
||||||
continue;
|
|
||||||
- else if ((dso->shdr[j].sh_flags & SHF_ALLOC) != 0)
|
|
||||||
+ else if ((dso->shdr[shdrmap[j]].sh_flags & SHF_ALLOC) != 0)
|
|
||||||
{
|
|
||||||
error (0, 0, "Allocatable section in %s after non-allocatable "
|
|
||||||
"ones", dso->filename);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
- else if (dso->shdr[j].sh_offset < last_shoff)
|
|
||||||
+ else if (dso->shdr[shdrmap[j]].sh_offset < last_shoff)
|
|
||||||
{
|
|
||||||
error (0, 0, "Section offsets in %s not monotonically "
|
|
||||||
"increasing", dso->filename);
|
|
||||||
@@ -10157,7 +10198,8 @@ write_dso (DSO *dso, const char *file, struct stat *st)
|
|
||||||
{
|
|
||||||
if (k == -1)
|
|
||||||
k = j;
|
|
||||||
- last_shoff = dso->shdr[j].sh_offset + dso->shdr[j].sh_size;
|
|
||||||
+ last_shoff = (dso->shdr[shdrmap[j]].sh_offset
|
|
||||||
+ + dso->shdr[shdrmap[j]].sh_size);
|
|
||||||
}
|
|
||||||
last_shoff = min_shoff;
|
|
||||||
for (j = k; j <= dso->ehdr.e_shnum; ++j)
|
|
||||||
@@ -10165,7 +10207,7 @@ write_dso (DSO *dso, const char *file, struct stat *st)
|
|
||||||
if (!shdr_placed
|
|
||||||
&& ehdr.e_shoff >= min_shoff
|
|
||||||
&& (j == dso->ehdr.e_shnum
|
|
||||||
- || ehdr.e_shoff < dso->shdr[j].sh_offset))
|
|
||||||
+ || ehdr.e_shoff < dso->shdr[shdrmap[j]].sh_offset))
|
|
||||||
{
|
|
||||||
if (ehdr.e_ident[EI_CLASS] == ELFCLASS64)
|
|
||||||
ehdr.e_shoff = (last_shoff + 7) & -8;
|
|
||||||
@@ -10176,13 +10218,18 @@ write_dso (DSO *dso, const char *file, struct stat *st)
|
|
||||||
}
|
|
||||||
if (j == dso->ehdr.e_shnum)
|
|
||||||
break;
|
|
||||||
- dso->shdr[j].sh_offset = last_shoff;
|
|
||||||
- if (dso->shdr[j].sh_addralign > 1)
|
|
||||||
- dso->shdr[j].sh_offset
|
|
||||||
- = (last_shoff + dso->shdr[j].sh_addralign - 1)
|
|
||||||
- & ~(dso->shdr[j].sh_addralign - (GElf_Off) 1);
|
|
||||||
- last_shoff = dso->shdr[j].sh_offset + dso->shdr[j].sh_size;
|
|
||||||
- if (addsec != -1 && j == addsec)
|
|
||||||
+ /* Do not touch SHT_NOBITS section offsets and more importantly
|
|
||||||
+ do not account for their size. */
|
|
||||||
+ if (dso->shdr[shdrmap[j]].sh_type == SHT_NOBITS)
|
|
||||||
+ continue;
|
|
||||||
+ dso->shdr[shdrmap[j]].sh_offset = last_shoff;
|
|
||||||
+ if (dso->shdr[shdrmap[j]].sh_addralign > 1)
|
|
||||||
+ dso->shdr[shdrmap[j]].sh_offset
|
|
||||||
+ = (last_shoff + dso->shdr[shdrmap[j]].sh_addralign - 1)
|
|
||||||
+ & ~(dso->shdr[shdrmap[j]].sh_addralign - (GElf_Off) 1);
|
|
||||||
+ last_shoff = (dso->shdr[shdrmap[j]].sh_offset
|
|
||||||
+ + dso->shdr[shdrmap[j]].sh_size);
|
|
||||||
+ if (addsec != -1 && shdrmap[j] == addsec)
|
|
||||||
last_shoff += addsize;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:94fb5acf0650428eb153b3638974ccbb2f3fedecc372be53d21d6b328263de32
|
|
||||||
size 91116
|
|
3
dwz-0.13.tar.xz
Normal file
3
dwz-0.13.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:8da2495d666ba94c1d9b0eca0799e32fc4553d5cbcc8eadfe90d7ca48cf4f5b0
|
||||||
|
size 113616
|
@ -1,57 +0,0 @@
|
|||||||
[low-mem] Fix DW_OP_GNU_parameter_ref handling in read_exprloc
|
|
||||||
|
|
||||||
Function read_exprloc contains a loop that marks all parents of a
|
|
||||||
DW_OP_GNU_parameter_ref reference with CK_BAD. The loop however has no
|
|
||||||
private loop variable, so the ref variable, initially pointing to the
|
|
||||||
referenced DIE, ends up after the loop pointing to the root parent of the
|
|
||||||
reference instead. Consequently, the code after the loop, intended to be
|
|
||||||
executed for the referenced DIE, is instead executed for the root parent of
|
|
||||||
the referenced DIE.
|
|
||||||
|
|
||||||
Fix this by moving the loop alap.
|
|
||||||
|
|
||||||
2019-02-14 Tom de Vries <tdevries@suse.de>
|
|
||||||
|
|
||||||
PR dwz/24195
|
|
||||||
* dwz.c (read_exprloc): Move loop marking parents with CK_BAD alap.
|
|
||||||
|
|
||||||
---
|
|
||||||
dwz.c | 18 +++++++++---------
|
|
||||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dwz.c b/dwz.c
|
|
||||||
index d348418..6e6b6fb 100644
|
|
||||||
--- a/dwz.c
|
|
||||||
+++ b/dwz.c
|
|
||||||
@@ -1492,6 +1492,15 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len,
|
|
||||||
}
|
|
||||||
if (op == DW_OP_call2)
|
|
||||||
ref->die_op_call2_referenced = 1;
|
|
||||||
+ if (unlikely (low_mem))
|
|
||||||
+ {
|
|
||||||
+ ref->die_referenced = 1;
|
|
||||||
+ /* As .debug_loc adjustment is done after
|
|
||||||
+ write_info finishes, we need to keep the referenced
|
|
||||||
+ DIEs around uncollapsed. */
|
|
||||||
+ if (need_adjust)
|
|
||||||
+ ref->die_intercu_referenced = 1;
|
|
||||||
+ }
|
|
||||||
if (ref->die_ck_state == CK_KNOWN)
|
|
||||||
{
|
|
||||||
ref->die_ck_state = CK_BAD;
|
|
||||||
@@ -1504,15 +1513,6 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len,
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ref->die_ck_state = CK_BAD;
|
|
||||||
- if (unlikely (low_mem))
|
|
||||||
- {
|
|
||||||
- ref->die_referenced = 1;
|
|
||||||
- /* As .debug_loc adjustment is done after
|
|
||||||
- write_info finishes, we need to keep the referenced
|
|
||||||
- DIEs around uncollapsed. */
|
|
||||||
- if (need_adjust)
|
|
||||||
- ref->die_intercu_referenced = 1;
|
|
||||||
- }
|
|
||||||
die->die_ck_state = CK_BAD;
|
|
||||||
if (need_adjust)
|
|
||||||
*need_adjust = true;
|
|
294
dwz-update-version-copyright-message.patch
Normal file
294
dwz-update-version-copyright-message.patch
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
Update --version copyright message
|
||||||
|
|
||||||
|
[ This is a backport of master commit dda7184. Output of
|
||||||
|
contrib/gen-copyright-years.sh and dwz --version in this log message have been
|
||||||
|
updated accordingly. ]
|
||||||
|
|
||||||
|
In commit 9a663b4 "Update copyright" we've updated copyright in the sources,
|
||||||
|
but not in the --version copyright message.
|
||||||
|
|
||||||
|
Update the --version copyright message, using new script
|
||||||
|
contrib/gen-copyright-years.sh that extracts the copyright years from the
|
||||||
|
source files, and generates a file COPYRIGHT_YEARS containing define flags:
|
||||||
|
...
|
||||||
|
-DFSF_YEARS='"1992-2017"'
|
||||||
|
-DRH_YEARS='"2001-2018"'
|
||||||
|
-DSUSE_YEARS='"2019"'
|
||||||
|
...
|
||||||
|
resulting in:
|
||||||
|
...
|
||||||
|
$ dwz --version
|
||||||
|
dwz version 0.13
|
||||||
|
Copyright (C) 2001-2018 Red Hat, Inc.
|
||||||
|
Copyright (C) 1992-2017 Free Software Foundation, Inc.
|
||||||
|
Copyright (C) 2019 SUSE LLC.
|
||||||
|
...
|
||||||
|
|
||||||
|
2019-08-15 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
* contrib/copyright-lines.awk: New file.
|
||||||
|
* contrib/gen-copyright-years.sh: New file.
|
||||||
|
* COPYRIGHT_YEARS: Generate.
|
||||||
|
* Makefile (override CFLAGS +=, dwz-for-test): Add COPYRIGHT_YEARS
|
||||||
|
defines.
|
||||||
|
* dwz.c (version): Update copyright message using COPYRIGHT_YEARS
|
||||||
|
defines.
|
||||||
|
|
||||||
|
---
|
||||||
|
COPYRIGHT_YEARS | 3 +
|
||||||
|
Makefile | 6 +-
|
||||||
|
contrib/copyright-lines.awk | 27 +++++++
|
||||||
|
contrib/gen-copyright-years.sh | 162 +++++++++++++++++++++++++++++++++++++++++
|
||||||
|
dwz.c | 5 +-
|
||||||
|
5 files changed, 199 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/COPYRIGHT_YEARS b/COPYRIGHT_YEARS
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..1dc95a5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/COPYRIGHT_YEARS
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+-DFSF_YEARS='"1992-2017"'
|
||||||
|
+-DRH_YEARS='"2001-2018"'
|
||||||
|
+-DSUSE_YEARS='"2019"'
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 7e281e5..c945c9d 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -5,7 +5,8 @@ srcdir=$(shell pwd)
|
||||||
|
endif
|
||||||
|
CFLAGS = -O2 -g
|
||||||
|
DWZ_VERSION := $(shell cat $(srcdir)/VERSION)
|
||||||
|
-override CFLAGS += -Wall -W -D_FILE_OFFSET_BITS=64 -DDWZ_VERSION='"$(DWZ_VERSION)"'
|
||||||
|
+override CFLAGS += -Wall -W -D_FILE_OFFSET_BITS=64 \
|
||||||
|
+ -DDWZ_VERSION='"$(DWZ_VERSION)"' $(shell cat $(srcdir)/COPYRIGHT_YEARS)
|
||||||
|
prefix = /usr
|
||||||
|
exec_prefix = $(prefix)
|
||||||
|
bindir = $(exec_prefix)/bin
|
||||||
|
@@ -52,7 +53,8 @@ DWZ_TEST_SOURCES := $(patsubst %.o,%-for-test.c,$(OBJECTS))
|
||||||
|
|
||||||
|
dwz-for-test: $(DWZ_TEST_SOURCES)
|
||||||
|
$(CC) $(DWZ_TEST_SOURCES) -O2 -g -lelf -o $@ -Wall -W -DDEVEL \
|
||||||
|
- -D_FILE_OFFSET_BITS=64 -DDWZ_VERSION='"for-test"' -I$(srcdir)
|
||||||
|
+ -D_FILE_OFFSET_BITS=64 -DDWZ_VERSION='"for-test"' -I$(srcdir) \
|
||||||
|
+ $(shell cat $(srcdir)/COPYRIGHT_YEARS)
|
||||||
|
|
||||||
|
min:
|
||||||
|
$(CC) $(TEST_SRC)/min.c $(TEST_SRC)/min-2.c -o $@ -g
|
||||||
|
diff --git a/contrib/copyright-lines.awk b/contrib/copyright-lines.awk
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..b031c50
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/contrib/copyright-lines.awk
|
||||||
|
@@ -0,0 +1,27 @@
|
||||||
|
+BEGIN {
|
||||||
|
+ start=0
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/Copyright \(C\).*[.]/ {
|
||||||
|
+ print
|
||||||
|
+ next
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/Copyright \(C\)/ {
|
||||||
|
+ start=1
|
||||||
|
+ printf $0
|
||||||
|
+ next
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/[.]/ {
|
||||||
|
+ if (start == 0)
|
||||||
|
+ next
|
||||||
|
+ print
|
||||||
|
+ start=0
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// {
|
||||||
|
+ if (start == 0)
|
||||||
|
+ next
|
||||||
|
+ printf $0
|
||||||
|
+}
|
||||||
|
diff --git a/contrib/gen-copyright-years.sh b/contrib/gen-copyright-years.sh
|
||||||
|
new file mode 100755
|
||||||
|
index 0000000..1ef6f3f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/contrib/gen-copyright-years.sh
|
||||||
|
@@ -0,0 +1,162 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+this=$(basename $0)
|
||||||
|
+
|
||||||
|
+max ()
|
||||||
|
+{
|
||||||
|
+ local a
|
||||||
|
+ a=$1
|
||||||
|
+ local b
|
||||||
|
+ b=$2
|
||||||
|
+
|
||||||
|
+ if [ "$a" = "" ]; then
|
||||||
|
+ echo "$b"
|
||||||
|
+ return
|
||||||
|
+ elif [ "$b" = "" ]; then
|
||||||
|
+ echo "$a"
|
||||||
|
+ return
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ if [ $a -gt $b ]; then
|
||||||
|
+ echo "$a"
|
||||||
|
+ else
|
||||||
|
+ echo "$b"
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+min ()
|
||||||
|
+{
|
||||||
|
+ local a
|
||||||
|
+ a="$1"
|
||||||
|
+ local b
|
||||||
|
+ b="$2"
|
||||||
|
+
|
||||||
|
+ if [ "$a" = "" ]; then
|
||||||
|
+ echo "$b"
|
||||||
|
+ return
|
||||||
|
+ elif [ "$b" = "" ]; then
|
||||||
|
+ echo "$a"
|
||||||
|
+ return
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ if [ $a -lt $b ]; then
|
||||||
|
+ echo "$a"
|
||||||
|
+ else
|
||||||
|
+ echo "$b"
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+print_range () {
|
||||||
|
+ local a
|
||||||
|
+ a="$1"
|
||||||
|
+ local b
|
||||||
|
+ b="$2"
|
||||||
|
+
|
||||||
|
+ if [ "$a" = "$b" ]; then
|
||||||
|
+ echo "$a"
|
||||||
|
+ return
|
||||||
|
+ fi
|
||||||
|
+ echo "$a-$b"
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+process_line ()
|
||||||
|
+{
|
||||||
|
+ local line
|
||||||
|
+ line="$1"
|
||||||
|
+
|
||||||
|
+ fsf=false
|
||||||
|
+ rh=false
|
||||||
|
+ suse=false;
|
||||||
|
+
|
||||||
|
+ if echo "$line" \
|
||||||
|
+ | grep -q "Free Software Foundation, Inc\."; then
|
||||||
|
+ fsf=true
|
||||||
|
+ who=fsf
|
||||||
|
+ line=$(echo "$line" \
|
||||||
|
+ | sed 's/Free Software Foundation, Inc\.//')
|
||||||
|
+ elif echo "$line" \
|
||||||
|
+ | grep -q "Red Hat, Inc\."; then
|
||||||
|
+ rh=true
|
||||||
|
+ who=rh
|
||||||
|
+ line=$(echo "$line" \
|
||||||
|
+ | sed 's/Red Hat, Inc\.//')
|
||||||
|
+ elif echo "$line" \
|
||||||
|
+ | grep -q "SUSE LLC\."; then
|
||||||
|
+ suse=true
|
||||||
|
+ who=suse
|
||||||
|
+ line=$(echo "$line" \
|
||||||
|
+ | sed 's/SUSE LLC\.//')
|
||||||
|
+ else
|
||||||
|
+ echo "error: unknown copyright: $line"
|
||||||
|
+ exit 1
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ line=$(echo "$line" \
|
||||||
|
+ | sed 's/[,-]/ /g')
|
||||||
|
+ max_year=$(echo "$line" \
|
||||||
|
+ | sed 's/ /\n/g' \
|
||||||
|
+ | grep -v '^$' \
|
||||||
|
+ | sort -n -r \
|
||||||
|
+ | head -n 1)
|
||||||
|
+ min_year=$(echo "$line" \
|
||||||
|
+ | sed 's/ /\n/g' \
|
||||||
|
+ | grep -v '^$' \
|
||||||
|
+ | sort -n \
|
||||||
|
+ | head -n 1)
|
||||||
|
+
|
||||||
|
+ if $fsf; then
|
||||||
|
+ fsf_max=$(max "$fsf_max" "$max_year")
|
||||||
|
+ fsf_min=$(min "$fsf_min" "$min_year")
|
||||||
|
+ elif $rh; then
|
||||||
|
+ rh_max=$(max "$rh_max" "$max_year")
|
||||||
|
+ rh_min=$(min "$rh_min" "$min_year")
|
||||||
|
+ elif $suse; then
|
||||||
|
+ suse_max=$(max "$suse_max" "$max_year")
|
||||||
|
+ suse_min=$(min "$suse_min" "$min_year")
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+main ()
|
||||||
|
+{
|
||||||
|
+ if ! git status --ignored 2>&1 \
|
||||||
|
+ | grep -q "nothing to commit, working tree clean"; then
|
||||||
|
+ echo "Git tree not clean"
|
||||||
|
+ exit 1
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ local tmp
|
||||||
|
+ tmp=$(mktemp)
|
||||||
|
+
|
||||||
|
+ for f in *.c *.h *.def; do
|
||||||
|
+ if ! grep -q "Copyright (C)" $f; then
|
||||||
|
+ echo "error: found file without copyright marker: $f"
|
||||||
|
+ exit 1
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ echo processing file: $f
|
||||||
|
+
|
||||||
|
+ grep -v '"' $f \
|
||||||
|
+ | awk -f contrib/copyright-lines.awk \
|
||||||
|
+ > $tmp
|
||||||
|
+
|
||||||
|
+ while read line; do
|
||||||
|
+ line=$(echo "$line" \
|
||||||
|
+ | sed 's/ */ /g')
|
||||||
|
+ line=$(echo "$line" \
|
||||||
|
+ | sed 's/.*Copyright (C) *//')
|
||||||
|
+ echo "Processing line: $line"
|
||||||
|
+ process_line "$line"
|
||||||
|
+ done < $tmp
|
||||||
|
+ done
|
||||||
|
+
|
||||||
|
+ rm -f $tmp
|
||||||
|
+
|
||||||
|
+ echo "-DFSF_YEARS='\"$(print_range $fsf_min $fsf_max)\"'" \
|
||||||
|
+ > COPYRIGHT_YEARS
|
||||||
|
+ echo "-DRH_YEARS='\"$(print_range $rh_min $rh_max)\"'" \
|
||||||
|
+ >> COPYRIGHT_YEARS
|
||||||
|
+ echo "-DSUSE_YEARS='\"$(print_range $suse_min $suse_max)\"'" \
|
||||||
|
+ >> COPYRIGHT_YEARS
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+main "$@"
|
||||||
|
diff --git a/dwz.c b/dwz.c
|
||||||
|
index 266f56d..727314f 100644
|
||||||
|
--- a/dwz.c
|
||||||
|
+++ b/dwz.c
|
||||||
|
@@ -12395,8 +12395,9 @@ version (void)
|
||||||
|
{
|
||||||
|
fprintf (stderr,
|
||||||
|
"dwz version " DWZ_VERSION "\n"
|
||||||
|
- "Copyright (C) 2001-2012 Red Hat, Inc.\n"
|
||||||
|
- "Copyright (C) 2003 Free Software Foundation, Inc.\n"
|
||||||
|
+ "Copyright (C) " RH_YEARS " Red Hat, Inc.\n"
|
||||||
|
+ "Copyright (C) " FSF_YEARS " Free Software Foundation, Inc.\n"
|
||||||
|
+ "Copyright (C) " SUSE_YEARS " SUSE LLC.\n"
|
||||||
|
"This program is free software; you may redistribute it under the terms of\n"
|
||||||
|
"the GNU General Public License version 3 or (at your option) any later version.\n"
|
||||||
|
"This program has absolutely no warranty.\n");
|
25
dwz.changes
25
dwz.changes
@ -1,3 +1,28 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 16 11:26:06 UTC 2019 - Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
- Fix copyright years in --version message:
|
||||||
|
* dwz-update-version-copyright-message.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 13 09:29:02 UTC 2019 - Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
- Split off dwz-testsuite package using multibuild, to remove build
|
||||||
|
cycle
|
||||||
|
- Don't require binutils-gold for riscv64
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 2 10:43:02 UTC 2019 - Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
- DWZ 0.13 update:
|
||||||
|
* Dropped patches:
|
||||||
|
- dwz-0.12-ignore-nobits.patch
|
||||||
|
- dwz-0.12-DW_OP_GNU_variable_value.patch
|
||||||
|
- dwz-low-mem-Fix-DW_OP_GNU_parameter_ref-handling-in-read_exprloc.patch
|
||||||
|
* Added BuildRequires for dejagnu, elfutils, gdb and binutils-gold.
|
||||||
|
* Add %check
|
||||||
|
- Add URL tag
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Feb 18 14:31:42 UTC 2019 - tdevries@suse.com
|
Mon Feb 18 14:31:42 UTC 2019 - tdevries@suse.com
|
||||||
|
|
||||||
|
88
dwz.spec
88
dwz.spec
@ -12,25 +12,65 @@
|
|||||||
# license that conforms to the Open Source Definition (Version 1.9)
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
# published by the Open Source Initiative.
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
Name: dwz
|
%define flavor @BUILD_FLAVOR@%{nil}
|
||||||
Version: 0.12
|
|
||||||
|
%if "%flavor" == "testsuite"
|
||||||
|
%define build_main 0
|
||||||
|
%define build_testsuite 1
|
||||||
|
%else
|
||||||
|
%define build_main 1
|
||||||
|
%define build_testsuite 0
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_testsuite}
|
||||||
|
%define debug_package %{nil}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_main}
|
||||||
|
%define name_suffix %{nil}
|
||||||
|
%else
|
||||||
|
%define name_suffix -%{flavor}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Name: dwz%{name_suffix}
|
||||||
|
Version: 0.13
|
||||||
Release: 0
|
Release: 0
|
||||||
|
%if %{build_main}
|
||||||
Summary: DWARF optimization and duplicate removal tool
|
Summary: DWARF optimization and duplicate removal tool
|
||||||
#Git-Clone: git://sourceware.org/git/dwz
|
|
||||||
#Git-Web: https://sourceware.org/git/?p=dwz.git;a=summary
|
|
||||||
License: GPL-2.0-or-later AND LGPL-2.0-or-later
|
License: GPL-2.0-or-later AND LGPL-2.0-or-later
|
||||||
Group: Development/Tools/Building
|
Group: Development/Tools/Building
|
||||||
Source: %{name}-%{version}.tar.xz
|
%endif
|
||||||
Patch0: dwz-0.12-ignore-nobits.patch
|
%if %{build_testsuite}
|
||||||
Patch1: dwz-0.12-DW_OP_GNU_variable_value.patch
|
Summary: Testsuite results from DWZ
|
||||||
Patch2: dwz-low-mem-Fix-DW_OP_GNU_parameter_ref-handling-in-read_exprloc.patch
|
License: GPL-2.0-or-later AND LGPL-2.0-or-later
|
||||||
|
Group: Development/Tools/Building
|
||||||
|
%endif
|
||||||
|
#Git-Clone: git://sourceware.org/git/dwz
|
||||||
|
#Git-Web: https://sourceware.org/git/?p=dwz.git;a=summary
|
||||||
|
Source: dwz-%{version}.tar.xz
|
||||||
|
Url: https://sourceware.org/dwz/
|
||||||
BuildRequires: libelf-devel
|
BuildRequires: libelf-devel
|
||||||
BuildRequires: xz
|
BuildRequires: xz
|
||||||
|
%if %{build_testsuite}
|
||||||
|
BuildRequires: dejagnu
|
||||||
|
BuildRequires: elfutils
|
||||||
|
BuildRequires: gdb
|
||||||
|
%ifnarch riscv64
|
||||||
|
BuildRequires: binutils-gold
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if !%{build_main}
|
||||||
|
NoSource: 0
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Patch1: dwz-update-version-copyright-message.patch
|
||||||
|
|
||||||
|
%if %{build_main}
|
||||||
%description
|
%description
|
||||||
dwz optimizes DWARF debugging information contained in ELF shared
|
dwz optimizes DWARF debugging information contained in ELF shared
|
||||||
libraries and executables for size, by replacing DWARF information
|
libraries and executables for size, by replacing DWARF information
|
||||||
@ -48,22 +88,42 @@ When not using the -m option (multifile mode), GDB CVS snapshot (soon to be
|
|||||||
7.5) is sufficient, when using -m option, GDB from a git branch
|
7.5) is sufficient, when using -m option, GDB from a git branch
|
||||||
http://sources.redhat.com/git/?p=archer.git;a=shortlog;h=refs/heads/archer-tromey-dwz-multifile
|
http://sources.redhat.com/git/?p=archer.git;a=shortlog;h=refs/heads/archer-tromey-dwz-multifile
|
||||||
is needed.
|
is needed.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_testsuite}
|
||||||
|
%description
|
||||||
|
This package contains the testsuite results from DWZ.
|
||||||
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}
|
%setup -q -n dwz
|
||||||
%patch0 -p1
|
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make %{?_smp_mflags} CFLAGS="%{optflags}"
|
make %{?_smp_mflags} CFLAGS="%{optflags}"
|
||||||
|
|
||||||
%install
|
%check
|
||||||
%make_install
|
%if %{build_testsuite}
|
||||||
|
make -k check
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%install
|
||||||
|
%if %{build_main}
|
||||||
|
%make_install
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_main}
|
||||||
%files
|
%files
|
||||||
%license COPYING
|
%license COPYING
|
||||||
%{_bindir}/dwz
|
%{_bindir}/dwz
|
||||||
%{_mandir}/man1/dwz.1%{?ext_man}
|
%{_mandir}/man1/dwz.1%{?ext_man}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{build_testsuite}
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%doc dwz.sum
|
||||||
|
%doc dwz.log
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
Reference in New Issue
Block a user