Compare commits
13 Commits
Author | SHA1 | Date |
---|---|---|
Mark Wielaard | b0a29fcfc1 | |
Mark Wielaard | 37e2788c35 | |
Mark Wielaard | 01c62d704a | |
Mark Wielaard | e6d932bdf2 | |
Mark Wielaard | 2bd5f200c4 | |
Mark Wielaard | 6145bf3424 | |
Mark Wielaard | 44fd5749a1 | |
Mark Wielaard | 7f0cb213da | |
Igor Gnatenko | 70ff70b211 | |
Igor Gnatenko | af5a4d619a | |
Mark Wielaard | e596ca1fed | |
Mark Wielaard | 659b8f85c1 | |
Mark Wielaard | db9bbf34bd |
|
@ -0,0 +1,46 @@
|
||||||
|
commit e23c71330c3b332d19fdf9e48ca8b03680d9ad34
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Thu Nov 2 16:23:24 2017 +0100
|
||||||
|
|
||||||
|
readelf: Handle DW_OP_GNU_variable_value.
|
||||||
|
|
||||||
|
Also format both DW_OP_call_ref and DW_OP_GNU_variable_value argument
|
||||||
|
as a normal DIE reference.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/libdw/dwarf.h b/libdw/dwarf.h
|
||||||
|
index 902d261..8edf719 100644
|
||||||
|
--- a/libdw/dwarf.h
|
||||||
|
+++ b/libdw/dwarf.h
|
||||||
|
@@ -545,6 +545,7 @@ enum
|
||||||
|
DW_OP_GNU_convert = 0xf7,
|
||||||
|
DW_OP_GNU_reinterpret = 0xf9,
|
||||||
|
DW_OP_GNU_parameter_ref = 0xfa,
|
||||||
|
+ DW_OP_GNU_variable_value = 0xfd,
|
||||||
|
|
||||||
|
DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */
|
||||||
|
DW_OP_hi_user = 0xff /* Implementation-defined range end. */
|
||||||
|
diff --git a/src/readelf.c b/src/readelf.c
|
||||||
|
index 5e2f3fc..833884b 100644
|
||||||
|
--- a/src/readelf.c
|
||||||
|
+++ b/src/readelf.c
|
||||||
|
@@ -4160,6 +4160,7 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DW_OP_call_ref:
|
||||||
|
+ case DW_OP_GNU_variable_value:
|
||||||
|
/* Offset operand. */
|
||||||
|
if (ref_size != 4 && ref_size != 8)
|
||||||
|
goto invalid; /* Cannot be used in CFA. */
|
||||||
|
@@ -4170,8 +4171,8 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
|
||||||
|
addr = read_8ubyte_unaligned (dbg, data);
|
||||||
|
data += ref_size;
|
||||||
|
CONSUME (ref_size);
|
||||||
|
-
|
||||||
|
- printf ("%*s[%4" PRIuMAX "] %s %#" PRIxMAX "\n",
|
||||||
|
+ /* addr is a DIE offset, so format it as one. */
|
||||||
|
+ printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "]\n",
|
||||||
|
indent, "", (uintmax_t) offset,
|
||||||
|
op_name, (uintmax_t) addr);
|
||||||
|
offset += 1 + ref_size;
|
|
@ -0,0 +1,120 @@
|
||||||
|
commit 699a741b488010d56cc358a5f7b4d8a8f4886347
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Sat Dec 23 23:16:24 2017 +0100
|
||||||
|
|
||||||
|
tests: Try to use coredumpctl to extract core files.
|
||||||
|
|
||||||
|
If systemd-coredump is installed we have to use coredumpctl to extract
|
||||||
|
the core file to test. Unfortunately systemd-coredump/coredumpctl seem
|
||||||
|
to be somewhat fragile if multiple core dumps are generated/extracted
|
||||||
|
at the same time. So use a lock file to only run one core dump test at
|
||||||
|
a time (under make -j).
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||||
|
index fca0072..64cb5bd 100644
|
||||||
|
--- a/tests/Makefile.am
|
||||||
|
+++ b/tests/Makefile.am
|
||||||
|
@@ -515,6 +515,9 @@ dwarf_default_lower_bound_LDADD = $(libdw)
|
||||||
|
system_elf_libelf_test_CPPFLAGS =
|
||||||
|
system_elf_libelf_test_LDADD = $(libelf)
|
||||||
|
|
||||||
|
+# A lock file used to make sure only one test dumps core at a time
|
||||||
|
+CLEANFILES += core-dump-backtrace.lock
|
||||||
|
+
|
||||||
|
if GCOV
|
||||||
|
check: check-am coverage
|
||||||
|
.PHONY: coverage
|
||||||
|
diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
|
||||||
|
index c1f3156..e04a7ea 100644
|
||||||
|
--- a/tests/backtrace-subr.sh
|
||||||
|
+++ b/tests/backtrace-subr.sh
|
||||||
|
@@ -137,19 +137,46 @@ check_native()
|
||||||
|
# Backtrace core file.
|
||||||
|
check_native_core()
|
||||||
|
{
|
||||||
|
+# systemd-coredump/coredumpctl doesn't seem to like concurrent core dumps
|
||||||
|
+# use a lock file (fd 200) tests/core-dump-backtrace.lock
|
||||||
|
+(
|
||||||
|
child=$1
|
||||||
|
|
||||||
|
# Disable valgrind while dumping core.
|
||||||
|
SAVED_VALGRIND_CMD="$VALGRIND_CMD"
|
||||||
|
unset VALGRIND_CMD
|
||||||
|
|
||||||
|
+ # Wait for lock for 10 seconds or skip.
|
||||||
|
+ flock -x -w 10 200 || exit 77;
|
||||||
|
+
|
||||||
|
# Skip the test if we cannot adjust core ulimit.
|
||||||
|
- core="core.`ulimit -c unlimited || exit 77; set +ex; testrun ${abs_builddir}/$child --gencore; true`"
|
||||||
|
+ pid="`ulimit -c unlimited || exit 77; set +ex; testrun ${abs_builddir}/$child --gencore; true`"
|
||||||
|
+ core="core.$pid"
|
||||||
|
# see if /proc/sys/kernel/core_uses_pid is set to 0
|
||||||
|
if [ -f core ]; then
|
||||||
|
mv core "$core"
|
||||||
|
fi
|
||||||
|
- if [ ! -f "$core" ]; then echo "No $core file generated"; exit 77; fi
|
||||||
|
+ type -P coredumpctl && have_coredumpctl=1 || have_coredumpctl=0
|
||||||
|
+ if [ ! -f "$core" -a $have_coredumpctl -eq 1 ]; then
|
||||||
|
+ # Maybe systemd-coredump took it. But give it some time to dump first...
|
||||||
|
+ sleep 1
|
||||||
|
+ coredumpctl --output="$core" dump $pid || rm -f $core
|
||||||
|
+
|
||||||
|
+ # Try a couple of times after waiting some more if something went wrong...
|
||||||
|
+ if [ ! -f "$core" ]; then
|
||||||
|
+ sleep 2
|
||||||
|
+ coredumpctl --output="$core" dump $pid || rm -f $core
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ if [ ! -f "$core" ]; then
|
||||||
|
+ sleep 3
|
||||||
|
+ coredumpctl --output="$core" dump $pid || rm -f $core
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+ if [ ! -f "$core" ]; then
|
||||||
|
+ echo "No $core file generated";
|
||||||
|
+ exit 77;
|
||||||
|
+ fi
|
||||||
|
|
||||||
|
if [ "x$SAVED_VALGRIND_CMD" != "x" ]; then
|
||||||
|
VALGRIND_CMD="$SAVED_VALGRIND_CMD"
|
||||||
|
@@ -163,4 +190,6 @@ check_native_core()
|
||||||
|
cat $core.{bt,err}
|
||||||
|
check_native_unsupported $core.err $child-$core
|
||||||
|
check_all $core.{bt,err} $child-$core
|
||||||
|
+ rm $core{,.{bt,err}}
|
||||||
|
+) 200>${abs_builddir}/core-dump-backtrace.lock
|
||||||
|
}
|
||||||
|
|
||||||
|
commit 61e33d72788c58467668b2f2ad44d5b95ebbee80
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Fri Feb 16 20:34:25 2018 +0100
|
||||||
|
|
||||||
|
tests: Accept any core if no core with the "correct" pid can be found.
|
||||||
|
|
||||||
|
In some containers our view of pids is confused. We see the container
|
||||||
|
pid namespace, but the core is generated using the host pid namespace.
|
||||||
|
Since tests are run in a new fresh directory any core here is most like
|
||||||
|
is ours.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
|
||||||
|
index e04a7ea..ff42c6f 100644
|
||||||
|
--- a/tests/backtrace-subr.sh
|
||||||
|
+++ b/tests/backtrace-subr.sh
|
||||||
|
@@ -174,6 +174,13 @@ check_native_core()
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ ! -f "$core" ]; then
|
||||||
|
+ # In some containers our view of pids is confused. Since tests are
|
||||||
|
+ # run in a new fresh directory any core here is most like is ours.
|
||||||
|
+ if ls core.[0-9]* 1> /dev/null 2>&1; then
|
||||||
|
+ mv core.[0-9]* "$core"
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+ if [ ! -f "$core" ]; then
|
||||||
|
echo "No $core file generated";
|
||||||
|
exit 77;
|
||||||
|
fi
|
|
@ -0,0 +1,170 @@
|
||||||
|
From a2246aaad96e062eb3bab55af9526aaa70adcfd0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dima Kogan <dkogan@debian.org>
|
||||||
|
Date: Fri, 8 Dec 2017 01:45:10 -0800
|
||||||
|
Subject: [PATCH 1/2] libdw: dwarf_aggregate_size() works with
|
||||||
|
multi-dimensional arrays
|
||||||
|
|
||||||
|
If we have a multidimensional array of dimensions (a,b,c) the number of elements
|
||||||
|
should be a*b*c, but prior to this patch dwarf_aggregate_size() would report
|
||||||
|
a+b+c instead.
|
||||||
|
|
||||||
|
This patch fixes the bug and adds a test that demonstrates the bug (the test
|
||||||
|
fails without the functional part of this patch).
|
||||||
|
|
||||||
|
Fixes: https://sourceware.org/bugzilla/show_bug.cgi?id=22546
|
||||||
|
|
||||||
|
Signed-off-by: Dima Kogan <dima@secretsauce.net>
|
||||||
|
---
|
||||||
|
libdw/ChangeLog | 5 +++++
|
||||||
|
libdw/dwarf_aggregate_size.c | 43 ++++++++++++++++++++++---------------------
|
||||||
|
tests/ChangeLog | 6 ++++++
|
||||||
|
tests/run-aggregate-size.sh | 2 ++
|
||||||
|
tests/run-peel-type.sh | 1 +
|
||||||
|
tests/testfile-sizes3.o.bz2 | Bin 1147 -> 1208 bytes
|
||||||
|
6 files changed, 36 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libdw/dwarf_aggregate_size.c b/libdw/dwarf_aggregate_size.c
|
||||||
|
index 838468d..3010c0a 100644
|
||||||
|
--- a/libdw/dwarf_aggregate_size.c
|
||||||
|
+++ b/libdw/dwarf_aggregate_size.c
|
||||||
|
@@ -63,7 +63,7 @@ array_size (Dwarf_Die *die, Dwarf_Word *size,
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
bool any = false;
|
||||||
|
- Dwarf_Word total = 0;
|
||||||
|
+ Dwarf_Word count_total = 1;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Dwarf_Word count;
|
||||||
|
@@ -134,34 +134,35 @@ array_size (Dwarf_Die *die, Dwarf_Word *size,
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* This is a subrange_type or enumeration_type and we've set COUNT.
|
||||||
|
- Now determine the stride for this array dimension. */
|
||||||
|
- Dwarf_Word stride = eltsize;
|
||||||
|
- if (INTUSE(dwarf_attr_integrate) (&child, DW_AT_byte_stride,
|
||||||
|
- attr_mem) != NULL)
|
||||||
|
- {
|
||||||
|
- if (INTUSE(dwarf_formudata) (attr_mem, &stride) != 0)
|
||||||
|
- return -1;
|
||||||
|
- }
|
||||||
|
- else if (INTUSE(dwarf_attr_integrate) (&child, DW_AT_bit_stride,
|
||||||
|
- attr_mem) != NULL)
|
||||||
|
- {
|
||||||
|
- if (INTUSE(dwarf_formudata) (attr_mem, &stride) != 0)
|
||||||
|
- return -1;
|
||||||
|
- if (stride % 8) /* XXX maybe compute in bits? */
|
||||||
|
- return -1;
|
||||||
|
- stride /= 8;
|
||||||
|
- }
|
||||||
|
+ count_total *= count;
|
||||||
|
|
||||||
|
any = true;
|
||||||
|
- total += stride * count;
|
||||||
|
}
|
||||||
|
while (INTUSE(dwarf_siblingof) (&child, &child) == 0);
|
||||||
|
|
||||||
|
if (!any)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
- *size = total;
|
||||||
|
+ /* This is a subrange_type or enumeration_type and we've set COUNT.
|
||||||
|
+ Now determine the stride for this array. */
|
||||||
|
+ Dwarf_Word stride = eltsize;
|
||||||
|
+ if (INTUSE(dwarf_attr_integrate) (die, DW_AT_byte_stride,
|
||||||
|
+ attr_mem) != NULL)
|
||||||
|
+ {
|
||||||
|
+ if (INTUSE(dwarf_formudata) (attr_mem, &stride) != 0)
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ else if (INTUSE(dwarf_attr_integrate) (die, DW_AT_bit_stride,
|
||||||
|
+ attr_mem) != NULL)
|
||||||
|
+ {
|
||||||
|
+ if (INTUSE(dwarf_formudata) (attr_mem, &stride) != 0)
|
||||||
|
+ return -1;
|
||||||
|
+ if (stride % 8) /* XXX maybe compute in bits? */
|
||||||
|
+ return -1;
|
||||||
|
+ stride /= 8;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ *size = count_total * stride;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/tests/run-aggregate-size.sh b/tests/run-aggregate-size.sh
|
||||||
|
index 42b0742..6d8aa24 100755
|
||||||
|
--- a/tests/run-aggregate-size.sh
|
||||||
|
+++ b/tests/run-aggregate-size.sh
|
||||||
|
@@ -54,6 +54,7 @@
|
||||||
|
# volatile int ia[32];
|
||||||
|
# const volatile void * const volatile restrict va[64];
|
||||||
|
# struct s sa[8];
|
||||||
|
+# double d3d[3][4][5];
|
||||||
|
#
|
||||||
|
# typedef const int foo;
|
||||||
|
# typedef volatile foo bar;
|
||||||
|
@@ -98,6 +99,7 @@ ca size 16
|
||||||
|
ia size 128
|
||||||
|
va size 512
|
||||||
|
sa size 128
|
||||||
|
+d3d size 480
|
||||||
|
f size 4
|
||||||
|
b size 4
|
||||||
|
EOF
|
||||||
|
diff --git a/tests/run-peel-type.sh b/tests/run-peel-type.sh
|
||||||
|
index 7fd96e8..668e316 100755
|
||||||
|
--- a/tests/run-peel-type.sh
|
||||||
|
+++ b/tests/run-peel-type.sh
|
||||||
|
@@ -55,6 +55,7 @@ ca raw type array_type
|
||||||
|
ia raw type array_type
|
||||||
|
va raw type array_type
|
||||||
|
sa raw type array_type
|
||||||
|
+d3d raw type array_type
|
||||||
|
f raw type base_type
|
||||||
|
b raw type base_type
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
|
From c25dc62e59dc42378370602b0d05415a42b051d6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Mon, 11 Dec 2017 23:58:34 +0100
|
||||||
|
Subject: [PATCH 2/2] libdw: dwarf_aggregate_size should not peel the given
|
||||||
|
DIE.
|
||||||
|
|
||||||
|
Reserve memory for a new DIE first. The caller might not care, but it
|
||||||
|
isn't really nice to change the DIE the caller gave us.
|
||||||
|
|
||||||
|
See also https://sourceware.org/bugzilla/show_bug.cgi?id=22546#c5
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
---
|
||||||
|
libdw/ChangeLog | 5 +++++
|
||||||
|
libdw/dwarf_aggregate_size.c | 6 +++---
|
||||||
|
2 files changed, 8 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libdw/dwarf_aggregate_size.c b/libdw/dwarf_aggregate_size.c
|
||||||
|
index 3010c0a..6e50185 100644
|
||||||
|
--- a/libdw/dwarf_aggregate_size.c
|
||||||
|
+++ b/libdw/dwarf_aggregate_size.c
|
||||||
|
@@ -199,12 +199,12 @@ aggregate_size (Dwarf_Die *die, Dwarf_Word *size, Dwarf_Die *type_mem)
|
||||||
|
int
|
||||||
|
dwarf_aggregate_size (Dwarf_Die *die, Dwarf_Word *size)
|
||||||
|
{
|
||||||
|
- Dwarf_Die type_mem;
|
||||||
|
+ Dwarf_Die die_mem, type_mem;
|
||||||
|
|
||||||
|
- if (INTUSE (dwarf_peel_type) (die, die) != 0)
|
||||||
|
+ if (INTUSE (dwarf_peel_type) (die, &die_mem) != 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
- return aggregate_size (die, size, &type_mem);
|
||||||
|
+ return aggregate_size (&die_mem, size, &type_mem);
|
||||||
|
}
|
||||||
|
INTDEF (dwarf_aggregate_size)
|
||||||
|
OLD_VERSION (dwarf_aggregate_size, ELFUTILS_0.144)
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
|
@ -0,0 +1,306 @@
|
||||||
|
commit 6d2e7e7100429df3d548251e9685a1eb7bb434cb
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Tue Aug 15 22:43:01 2017 +0200
|
||||||
|
|
||||||
|
libelf: Sync elf.h from glibc.
|
||||||
|
|
||||||
|
Add new powerpc note descriptors.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/libelf/elf.h b/libelf/elf.h
|
||||||
|
index fa35203..84a7126 100644
|
||||||
|
--- a/libelf/elf.h
|
||||||
|
+++ b/libelf/elf.h
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/* This file defines standard ELF types, structures, and macros.
|
||||||
|
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
|
||||||
|
+ Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@@ -762,8 +762,23 @@ typedef struct
|
||||||
|
#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */
|
||||||
|
#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
|
||||||
|
#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
|
||||||
|
+#define NT_PPC_TAR 0x103 /* Target Address Register */
|
||||||
|
+#define NT_PPC_PPR 0x104 /* Program Priority Register */
|
||||||
|
+#define NT_PPC_DSCR 0x105 /* Data Stream Control Register */
|
||||||
|
+#define NT_PPC_EBB 0x106 /* Event Based Branch Registers */
|
||||||
|
+#define NT_PPC_PMU 0x107 /* Performance Monitor Registers */
|
||||||
|
+#define NT_PPC_TM_CGPR 0x108 /* TM checkpointed GPR Registers */
|
||||||
|
+#define NT_PPC_TM_CFPR 0x109 /* TM checkpointed FPR Registers */
|
||||||
|
+#define NT_PPC_TM_CVMX 0x10a /* TM checkpointed VMX Registers */
|
||||||
|
+#define NT_PPC_TM_CVSX 0x10b /* TM checkpointed VSX Registers */
|
||||||
|
+#define NT_PPC_TM_SPR 0x10c /* TM Special Purpose Registers */
|
||||||
|
+#define NT_PPC_TM_CTAR 0x10d /* TM checkpointed Target Address
|
||||||
|
+ Register */
|
||||||
|
+#define NT_PPC_TM_CPPR 0x10e /* TM checkpointed Program Priority
|
||||||
|
+ Register */
|
||||||
|
+#define NT_PPC_TM_CDSCR 0x10f /* TM checkpointed Data Stream Control
|
||||||
|
+ Register */
|
||||||
|
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
|
||||||
|
-#define NT_PPC_TM_SPR 0x10c /* PowerPC HW Transactional Memory SPRs */
|
||||||
|
#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
|
||||||
|
#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
|
||||||
|
#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
|
||||||
|
@@ -1171,6 +1186,18 @@ typedef struct
|
||||||
|
#define AT_L2_CACHESHAPE 36
|
||||||
|
#define AT_L3_CACHESHAPE 37
|
||||||
|
|
||||||
|
+/* Shapes of the caches, with more room to describe them.
|
||||||
|
+ *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits
|
||||||
|
+ and the cache associativity in the next 16 bits. */
|
||||||
|
+#define AT_L1I_CACHESIZE 40
|
||||||
|
+#define AT_L1I_CACHEGEOMETRY 41
|
||||||
|
+#define AT_L1D_CACHESIZE 42
|
||||||
|
+#define AT_L1D_CACHEGEOMETRY 43
|
||||||
|
+#define AT_L2_CACHESIZE 44
|
||||||
|
+#define AT_L2_CACHEGEOMETRY 45
|
||||||
|
+#define AT_L3_CACHESIZE 46
|
||||||
|
+#define AT_L3_CACHEGEOMETRY 47
|
||||||
|
+
|
||||||
|
/* Note section contents. Each entry in the note section begins with
|
||||||
|
a header of a fixed form. */
|
||||||
|
|
||||||
|
@@ -2533,9 +2560,10 @@ enum
|
||||||
|
#define DT_PPC64_OPT (DT_LOPROC + 3)
|
||||||
|
#define DT_PPC64_NUM 4
|
||||||
|
|
||||||
|
-/* PowerPC64 specific values for the DT_PPC64_OPT Dyn entry. */
|
||||||
|
+/* PowerPC64 specific bits in the DT_PPC64_OPT Dyn entry. */
|
||||||
|
#define PPC64_OPT_TLS 1
|
||||||
|
#define PPC64_OPT_MULTI_TOC 2
|
||||||
|
+#define PPC64_OPT_LOCALENTRY 4
|
||||||
|
|
||||||
|
/* PowerPC64 specific values for the Elf64_Sym st_other field. */
|
||||||
|
#define STO_PPC64_LOCAL_BIT 5
|
||||||
|
@@ -3683,6 +3711,68 @@ enum
|
||||||
|
#define R_BPF_NONE 0 /* No reloc */
|
||||||
|
#define R_BPF_MAP_FD 1 /* Map fd to pointer */
|
||||||
|
|
||||||
|
+/* Imagination Meta specific relocations. */
|
||||||
|
+
|
||||||
|
+#define R_METAG_HIADDR16 0
|
||||||
|
+#define R_METAG_LOADDR16 1
|
||||||
|
+#define R_METAG_ADDR32 2 /* 32bit absolute address */
|
||||||
|
+#define R_METAG_NONE 3 /* No reloc */
|
||||||
|
+#define R_METAG_RELBRANCH 4
|
||||||
|
+#define R_METAG_GETSETOFF 5
|
||||||
|
+
|
||||||
|
+/* Backward compatability */
|
||||||
|
+#define R_METAG_REG32OP1 6
|
||||||
|
+#define R_METAG_REG32OP2 7
|
||||||
|
+#define R_METAG_REG32OP3 8
|
||||||
|
+#define R_METAG_REG16OP1 9
|
||||||
|
+#define R_METAG_REG16OP2 10
|
||||||
|
+#define R_METAG_REG16OP3 11
|
||||||
|
+#define R_METAG_REG32OP4 12
|
||||||
|
+
|
||||||
|
+#define R_METAG_HIOG 13
|
||||||
|
+#define R_METAG_LOOG 14
|
||||||
|
+
|
||||||
|
+#define R_METAG_REL8 15
|
||||||
|
+#define R_METAG_REL16 16
|
||||||
|
+
|
||||||
|
+/* GNU */
|
||||||
|
+#define R_METAG_GNU_VTINHERIT 30
|
||||||
|
+#define R_METAG_GNU_VTENTRY 31
|
||||||
|
+
|
||||||
|
+/* PIC relocations */
|
||||||
|
+#define R_METAG_HI16_GOTOFF 32
|
||||||
|
+#define R_METAG_LO16_GOTOFF 33
|
||||||
|
+#define R_METAG_GETSET_GOTOFF 34
|
||||||
|
+#define R_METAG_GETSET_GOT 35
|
||||||
|
+#define R_METAG_HI16_GOTPC 36
|
||||||
|
+#define R_METAG_LO16_GOTPC 37
|
||||||
|
+#define R_METAG_HI16_PLT 38
|
||||||
|
+#define R_METAG_LO16_PLT 39
|
||||||
|
+#define R_METAG_RELBRANCH_PLT 40
|
||||||
|
+#define R_METAG_GOTOFF 41
|
||||||
|
+#define R_METAG_PLT 42
|
||||||
|
+#define R_METAG_COPY 43
|
||||||
|
+#define R_METAG_JMP_SLOT 44
|
||||||
|
+#define R_METAG_RELATIVE 45
|
||||||
|
+#define R_METAG_GLOB_DAT 46
|
||||||
|
+
|
||||||
|
+/* TLS relocations */
|
||||||
|
+#define R_METAG_TLS_GD 47
|
||||||
|
+#define R_METAG_TLS_LDM 48
|
||||||
|
+#define R_METAG_TLS_LDO_HI16 49
|
||||||
|
+#define R_METAG_TLS_LDO_LO16 50
|
||||||
|
+#define R_METAG_TLS_LDO 51
|
||||||
|
+#define R_METAG_TLS_IE 52
|
||||||
|
+#define R_METAG_TLS_IENONPIC 53
|
||||||
|
+#define R_METAG_TLS_IENONPIC_HI16 54
|
||||||
|
+#define R_METAG_TLS_IENONPIC_LO16 55
|
||||||
|
+#define R_METAG_TLS_TPOFF 56
|
||||||
|
+#define R_METAG_TLS_DTPMOD 57
|
||||||
|
+#define R_METAG_TLS_DTPOFF 58
|
||||||
|
+#define R_METAG_TLS_LE 59
|
||||||
|
+#define R_METAG_TLS_LE_HI16 60
|
||||||
|
+#define R_METAG_TLS_LE_LO16 61
|
||||||
|
+
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* elf.h */
|
||||||
|
commit 88f3d2daa107b09fdba376a82bce7ed534c93645
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Sat Feb 17 00:23:19 2018 +0100
|
||||||
|
|
||||||
|
libelf: Sync elf.h from glibc.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/libelf/elf.h b/libelf/elf.h
|
||||||
|
index 84a7126..4f43577 100644
|
||||||
|
--- a/libelf/elf.h
|
||||||
|
+++ b/libelf/elf.h
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/* This file defines standard ELF types, structures, and macros.
|
||||||
|
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
||||||
|
+ Copyright (C) 1995-2018 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@@ -739,6 +739,8 @@ typedef struct
|
||||||
|
/* Legal values for note segment descriptor types for core files. */
|
||||||
|
|
||||||
|
#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */
|
||||||
|
+#define NT_PRFPREG 2 /* Contains copy of fpregset
|
||||||
|
+ struct. */
|
||||||
|
#define NT_FPREGSET 2 /* Contains copy of fpregset struct */
|
||||||
|
#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */
|
||||||
|
#define NT_PRXREG 4 /* Contains copy of prxregset struct */
|
||||||
|
@@ -790,11 +792,20 @@ typedef struct
|
||||||
|
#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */
|
||||||
|
#define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */
|
||||||
|
#define NT_S390_TDB 0x308 /* s390 transaction diagnostic block */
|
||||||
|
+#define NT_S390_VXRS_LOW 0x309 /* s390 vector registers 0-15
|
||||||
|
+ upper half. */
|
||||||
|
+#define NT_S390_VXRS_HIGH 0x30a /* s390 vector registers 16-31. */
|
||||||
|
+#define NT_S390_GS_CB 0x30b /* s390 guarded storage registers. */
|
||||||
|
+#define NT_S390_GS_BC 0x30c /* s390 guarded storage
|
||||||
|
+ broadcast control block. */
|
||||||
|
+#define NT_S390_RI_CB 0x30d /* s390 runtime instrumentation. */
|
||||||
|
#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */
|
||||||
|
#define NT_ARM_TLS 0x401 /* ARM TLS register */
|
||||||
|
#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */
|
||||||
|
#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */
|
||||||
|
#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
|
||||||
|
+#define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension
|
||||||
|
+ registers */
|
||||||
|
|
||||||
|
/* Legal values for the note segment descriptor types for object files. */
|
||||||
|
|
||||||
|
@@ -859,7 +870,8 @@ typedef struct
|
||||||
|
#define DT_ENCODING 32 /* Start of encoded range */
|
||||||
|
#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/
|
||||||
|
#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */
|
||||||
|
-#define DT_NUM 34 /* Number used */
|
||||||
|
+#define DT_SYMTAB_SHNDX 34 /* Address of SYMTAB_SHNDX section */
|
||||||
|
+#define DT_NUM 35 /* Number used */
|
||||||
|
#define DT_LOOS 0x6000000d /* Start of OS-specific */
|
||||||
|
#define DT_HIOS 0x6ffff000 /* End of OS-specific */
|
||||||
|
#define DT_LOPROC 0x70000000 /* Start of processor-specific */
|
||||||
|
@@ -967,6 +979,8 @@ typedef struct
|
||||||
|
#define DF_1_SYMINTPOSE 0x00800000 /* Object has individual interposers. */
|
||||||
|
#define DF_1_GLOBAUDIT 0x01000000 /* Global auditing required. */
|
||||||
|
#define DF_1_SINGLETON 0x02000000 /* Singleton symbols are used. */
|
||||||
|
+#define DF_1_STUB 0x04000000
|
||||||
|
+#define DF_1_PIE 0x08000000
|
||||||
|
|
||||||
|
/* Flags for the feature selection in DT_FEATURE_1. */
|
||||||
|
#define DTF_1_PARINIT 0x00000001
|
||||||
|
@@ -1263,6 +1277,62 @@ typedef struct
|
||||||
|
/* Version note generated by GNU gold containing a version string. */
|
||||||
|
#define NT_GNU_GOLD_VERSION 4
|
||||||
|
|
||||||
|
+/* Program property. */
|
||||||
|
+#define NT_GNU_PROPERTY_TYPE_0 5
|
||||||
|
+
|
||||||
|
+/* Note section name of program property. */
|
||||||
|
+#define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property"
|
||||||
|
+
|
||||||
|
+/* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0). */
|
||||||
|
+
|
||||||
|
+/* Stack size. */
|
||||||
|
+#define GNU_PROPERTY_STACK_SIZE 1
|
||||||
|
+/* No copy relocation on protected data symbol. */
|
||||||
|
+#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
|
||||||
|
+
|
||||||
|
+/* Processor-specific semantics, lo */
|
||||||
|
+#define GNU_PROPERTY_LOPROC 0xc0000000
|
||||||
|
+/* Processor-specific semantics, hi */
|
||||||
|
+#define GNU_PROPERTY_HIPROC 0xdfffffff
|
||||||
|
+/* Application-specific semantics, lo */
|
||||||
|
+#define GNU_PROPERTY_LOUSER 0xe0000000
|
||||||
|
+/* Application-specific semantics, hi */
|
||||||
|
+#define GNU_PROPERTY_HIUSER 0xffffffff
|
||||||
|
+
|
||||||
|
+/* The x86 instruction sets indicated by the corresponding bits are
|
||||||
|
+ used in program. Their support in the hardware is optional. */
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
|
||||||
|
+/* The x86 instruction sets indicated by the corresponding bits are
|
||||||
|
+ used in program and they must be supported by the hardware. */
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001
|
||||||
|
+/* X86 processor-specific features used in program. */
|
||||||
|
+#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002
|
||||||
|
+
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_486 (1U << 0)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_586 (1U << 1)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_686 (1U << 2)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 3)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 4)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 5)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 6)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 7)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 8)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 9)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 10)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 11)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 12)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 13)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 14)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 15)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 16)
|
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 17)
|
||||||
|
+
|
||||||
|
+/* This indicates that all executable sections are compatible with
|
||||||
|
+ IBT. */
|
||||||
|
+#define GNU_PROPERTY_X86_FEATURE_1_IBT (1U << 0)
|
||||||
|
+/* This indicates that all executable sections are compatible with
|
||||||
|
+ SHSTK. */
|
||||||
|
+#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1)
|
||||||
|
|
||||||
|
/* Move records. */
|
||||||
|
typedef struct
|
||||||
|
@@ -3706,6 +3776,28 @@ enum
|
||||||
|
|
||||||
|
#define R_TILEGX_NUM 130
|
||||||
|
|
||||||
|
+/* RISC-V ELF Flags */
|
||||||
|
+#define EF_RISCV_RVC 0x0001
|
||||||
|
+#define EF_RISCV_FLOAT_ABI 0x0006
|
||||||
|
+#define EF_RISCV_FLOAT_ABI_SOFT 0x0000
|
||||||
|
+#define EF_RISCV_FLOAT_ABI_SINGLE 0x0002
|
||||||
|
+#define EF_RISCV_FLOAT_ABI_DOUBLE 0x0004
|
||||||
|
+#define EF_RISCV_FLOAT_ABI_QUAD 0x0006
|
||||||
|
+
|
||||||
|
+/* RISC-V relocations. */
|
||||||
|
+#define R_RISCV_NONE 0
|
||||||
|
+#define R_RISCV_32 1
|
||||||
|
+#define R_RISCV_64 2
|
||||||
|
+#define R_RISCV_RELATIVE 3
|
||||||
|
+#define R_RISCV_COPY 4
|
||||||
|
+#define R_RISCV_JUMP_SLOT 5
|
||||||
|
+#define R_RISCV_TLS_DTPMOD32 6
|
||||||
|
+#define R_RISCV_TLS_DTPMOD64 7
|
||||||
|
+#define R_RISCV_TLS_DTPREL32 8
|
||||||
|
+#define R_RISCV_TLS_DTPREL64 9
|
||||||
|
+#define R_RISCV_TLS_TPREL32 10
|
||||||
|
+#define R_RISCV_TLS_TPREL64 11
|
||||||
|
+
|
||||||
|
/* BPF specific declarations. */
|
||||||
|
|
||||||
|
#define R_BPF_NONE 0 /* No reloc */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,67 @@
|
||||||
|
commit ab6b37ac32ddf2f2f11f800a770170814f5cbb8b
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Tue Oct 24 14:23:30 2017 +0200
|
||||||
|
|
||||||
|
backends: Ignore GCC8 -Wpacked-not-aligned for m68k_corenote.c.
|
||||||
|
|
||||||
|
The GCC8 -Wpacked-not-aligned warns if a structure field with explicit
|
||||||
|
padding in a packed structure will be misaligned. m68k prstatus core
|
||||||
|
notes are described by a packed structure which has such aligned structure
|
||||||
|
fields.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/backends/Makefile.am b/backends/Makefile.am
|
||||||
|
index 0fde0cb..2c62add 100644
|
||||||
|
--- a/backends/Makefile.am
|
||||||
|
+++ b/backends/Makefile.am
|
||||||
|
@@ -119,6 +119,13 @@ m68k_SRCS = m68k_init.c m68k_symbol.c m68k_regs.c \
|
||||||
|
libebl_m68k_pic_a_SOURCES = $(m68k_SRCS)
|
||||||
|
am_libebl_m68k_pic_a_OBJECTS = $(m68k_SRCS:.c=.os)
|
||||||
|
|
||||||
|
+# m68k prstatus core notes are described by a packed structure
|
||||||
|
+# which has not naturally aligned fields. Since we don't access
|
||||||
|
+# these fields directly, but take their offset to be used later
|
||||||
|
+# to extract the data through elfxx_xlatetom/memmove, this isn't
|
||||||
|
+# an issue.
|
||||||
|
+m68k_corenote_no_Wpacked_not_aligned = yes
|
||||||
|
+
|
||||||
|
bpf_SRCS = bpf_init.c bpf_regs.c
|
||||||
|
cpu_bpf = ../libcpu/libcpu_bpf.a
|
||||||
|
libebl_bpf_pic_a_SOURCES = $(bpf_SRCS)
|
||||||
|
diff --git a/config/eu.am b/config/eu.am
|
||||||
|
index 796f388..05c27f0 100644
|
||||||
|
--- a/config/eu.am
|
||||||
|
+++ b/config/eu.am
|
||||||
|
@@ -74,6 +74,7 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
|
||||||
|
$(if $($(*F)_no_Werror),,-Werror) \
|
||||||
|
$(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
|
||||||
|
$(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
|
||||||
|
+ $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \
|
||||||
|
$($(*F)_CFLAGS)
|
||||||
|
|
||||||
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||||
|
--- elfutils-0.170/backends/Makefile.in.orig 2018-02-15 17:29:58.185213368 +0100
|
||||||
|
+++ elfutils-0.170/backends/Makefile.in 2018-02-15 17:32:30.207695806 +0100
|
||||||
|
@@ -421,6 +421,7 @@
|
||||||
|
$(if $($(*F)_no_Werror),,-Werror) \
|
||||||
|
$(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
|
||||||
|
$(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
|
||||||
|
+ $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \
|
||||||
|
$($(*F)_CFLAGS)
|
||||||
|
|
||||||
|
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||||
|
@@ -515,6 +516,13 @@
|
||||||
|
|
||||||
|
libebl_m68k_pic_a_SOURCES = $(m68k_SRCS)
|
||||||
|
am_libebl_m68k_pic_a_OBJECTS = $(m68k_SRCS:.c=.os)
|
||||||
|
+
|
||||||
|
+# m68k prstatus core notes are described by a packed structure
|
||||||
|
+# which has not naturally aligned fields. Since we don't access
|
||||||
|
+# these fields directly, but take their offset to be used later
|
||||||
|
+# to extract the data through elfxx_xlatetom/memmove, this isn't
|
||||||
|
+# an issue.
|
||||||
|
+m68k_corenote_no_Wpacked_not_aligned = yes
|
||||||
|
bpf_SRCS = bpf_init.c bpf_regs.c
|
||||||
|
cpu_bpf = ../libcpu/libcpu_bpf.a
|
||||||
|
libebl_bpf_pic_a_SOURCES = $(bpf_SRCS)
|
|
@ -0,0 +1,25 @@
|
||||||
|
diff --git a/libebl/eblcheckreloctargettype.c b/libebl/eblcheckreloctargettype.c
|
||||||
|
index e0d57c1..068ad8f 100644
|
||||||
|
--- a/libebl/eblcheckreloctargettype.c
|
||||||
|
+++ b/libebl/eblcheckreloctargettype.c
|
||||||
|
@@ -46,6 +46,7 @@ ebl_check_reloc_target_type (Ebl *ebl, Elf64_Word sh_type)
|
||||||
|
case SHT_INIT_ARRAY:
|
||||||
|
case SHT_FINI_ARRAY:
|
||||||
|
case SHT_PREINIT_ARRAY:
|
||||||
|
+ case SHT_NOTE:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
diff --git a/src/elflint.c b/src/elflint.c
|
||||||
|
index df1b3a0..f4d82d9 100644
|
||||||
|
--- a/src/elflint.c
|
||||||
|
+++ b/src/elflint.c
|
||||||
|
@@ -4329,6 +4329,8 @@ section [%2d] '%s': unknown core file note type %" PRIu32
|
||||||
|
case NT_GNU_HWCAP:
|
||||||
|
case NT_GNU_BUILD_ID:
|
||||||
|
case NT_GNU_GOLD_VERSION:
|
||||||
|
+ case NT_GNU_PROPERTY_TYPE_0:
|
||||||
|
+ case 256:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
|
@ -0,0 +1,113 @@
|
||||||
|
commit 4482d0009a99b1773f2426479b666b08f57af9d5
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Thu Feb 15 14:44:18 2018 +0100
|
||||||
|
|
||||||
|
Include sys/ptrace.h as early as possible.
|
||||||
|
|
||||||
|
On some systems, at least on Fedora 27 ppc64le with glibc 2.26-24 and
|
||||||
|
kernel 4.14.18-300, including sys/ptrace.h late (after signal.h or
|
||||||
|
sys/wait.h for example) will cause issues and produce errors like:
|
||||||
|
|
||||||
|
In file included from /usr/include/asm/sigcontext.h:12:0,
|
||||||
|
from /usr/include/bits/sigcontext.h:30,
|
||||||
|
from /usr/include/signal.h:287,
|
||||||
|
from /usr/include/sys/wait.h:36,
|
||||||
|
from linux-pid-attach.c:38:
|
||||||
|
/usr/include/sys/ptrace.h:73:3: error: expected identifier before numeric constant
|
||||||
|
PTRACE_GETREGS = 12,
|
||||||
|
^
|
||||||
|
|
||||||
|
Swapping the include order fixes these issues.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
|
||||||
|
index 69d623b..3e4432f 100644
|
||||||
|
--- a/backends/ppc_initreg.c
|
||||||
|
+++ b/backends/ppc_initreg.c
|
||||||
|
@@ -30,13 +30,14 @@
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#include "system.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#if defined(__powerpc__) && defined(__linux__)
|
||||||
|
-# include <sys/user.h>
|
||||||
|
# include <sys/ptrace.h>
|
||||||
|
+# include <sys/user.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#include "system.h"
|
||||||
|
+
|
||||||
|
#define BACKEND ppc_
|
||||||
|
#include "libebl_CPU.h"
|
||||||
|
|
||||||
|
diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c
|
||||||
|
index e6a5c41..2ab4109 100644
|
||||||
|
--- a/libdwfl/linux-pid-attach.c
|
||||||
|
+++ b/libdwfl/linux-pid-attach.c
|
||||||
|
@@ -35,7 +35,6 @@
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
-#include <sys/wait.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
@@ -43,6 +42,7 @@
|
||||||
|
|
||||||
|
#include <sys/ptrace.h>
|
||||||
|
#include <sys/syscall.h>
|
||||||
|
+#include <sys/wait.h>
|
||||||
|
|
||||||
|
static bool
|
||||||
|
linux_proc_pid_is_stopped (pid_t pid)
|
||||||
|
diff --git a/tests/backtrace-child.c b/tests/backtrace-child.c
|
||||||
|
index 2c27414..9c6ba94 100644
|
||||||
|
--- a/tests/backtrace-child.c
|
||||||
|
+++ b/tests/backtrace-child.c
|
||||||
|
@@ -81,7 +81,6 @@
|
||||||
|
#include <config.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
-#include <signal.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
@@ -100,6 +99,7 @@ main (int argc __attribute__ ((unused)), char **argv)
|
||||||
|
|
||||||
|
#else /* __linux__ */
|
||||||
|
#include <sys/ptrace.h>
|
||||||
|
+#include <signal.h>
|
||||||
|
|
||||||
|
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
|
||||||
|
#define NOINLINE_NOCLONE __attribute__ ((noinline, noclone))
|
||||||
|
diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c
|
||||||
|
index 2dc8a9a..7ff826c 100644
|
||||||
|
--- a/tests/backtrace-dwarf.c
|
||||||
|
+++ b/tests/backtrace-dwarf.c
|
||||||
|
@@ -17,7 +17,6 @@
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <assert.h>
|
||||||
|
-#include <signal.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdio_ext.h>
|
||||||
|
#include <locale.h>
|
||||||
|
@@ -25,7 +24,6 @@
|
||||||
|
#include <error.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
-#include <sys/wait.h>
|
||||||
|
#include ELFUTILS_HEADER(dwfl)
|
||||||
|
|
||||||
|
#ifndef __linux__
|
||||||
|
@@ -40,6 +38,8 @@ main (int argc __attribute__ ((unused)), char **argv)
|
||||||
|
|
||||||
|
#else /* __linux__ */
|
||||||
|
#include <sys/ptrace.h>
|
||||||
|
+#include <sys/wait.h>
|
||||||
|
+#include <signal.h>
|
||||||
|
|
||||||
|
#define main cleanup_13_main
|
||||||
|
#include "cleanup-13.c"
|
|
@ -1,7 +1,7 @@
|
||||||
Name: elfutils
|
Name: elfutils
|
||||||
Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
|
Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
|
||||||
Version: 0.170
|
Version: 0.170
|
||||||
%global baserelease 1
|
%global baserelease 10
|
||||||
URL: http://elfutils.org/
|
URL: http://elfutils.org/
|
||||||
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
|
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
|
||||||
License: GPLv3+ and (GPLv2+ or LGPLv3+)
|
License: GPLv3+ and (GPLv2+ or LGPLv3+)
|
||||||
|
@ -20,6 +20,15 @@ Release: %{baserelease}%{?dist}
|
||||||
Source: %{?source_url}%{name}-%{version}.tar.bz2
|
Source: %{?source_url}%{name}-%{version}.tar.bz2
|
||||||
|
|
||||||
# Patches
|
# Patches
|
||||||
|
Patch1: elfutils-0.170-dwarf_aggregate_size.patch
|
||||||
|
Source1: testfile-sizes3.o.bz2
|
||||||
|
Patch2: elfutils-0.170-sys-ptrace.patch
|
||||||
|
Patch3: elfutils-0.170-m68k-packed-not-aligned.patch
|
||||||
|
Patch4: elfutils-0.170-core-pid.patch
|
||||||
|
Patch5: elfutils-0.170-elf_sync.patch
|
||||||
|
Patch6: elfutils-0.170-new-notes-hack.patch
|
||||||
|
Patch7: elfutils-0.170-GNU_variable_value.patch
|
||||||
|
Patch8: elfutils-0.170-locviews.patch
|
||||||
|
|
||||||
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
|
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
|
||||||
Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
|
Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
|
||||||
|
@ -154,6 +163,7 @@ License: GPLv2+ or LGPLv3+
|
||||||
Provides: default-yama-scope
|
Provides: default-yama-scope
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
# For the sysctl_apply macro
|
# For the sysctl_apply macro
|
||||||
|
%{?systemd_requires}
|
||||||
BuildRequires: systemd >= 215
|
BuildRequires: systemd >= 215
|
||||||
|
|
||||||
%description default-yama-scope
|
%description default-yama-scope
|
||||||
|
@ -170,6 +180,15 @@ profiling) of processes.
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
# Apply patches
|
# Apply patches
|
||||||
|
%patch1 -p1 -b .aggregate_size
|
||||||
|
cp %SOURCE1 tests/
|
||||||
|
%patch2 -p1 -b .sys_ptrace
|
||||||
|
%patch3 -p1 -b .m68k_packed
|
||||||
|
%patch4 -p1 -b .core_pid
|
||||||
|
%patch5 -p1 -b .elf_sync
|
||||||
|
%patch6 -p1 -b .notes_hack
|
||||||
|
%patch7 -p1 -b .variable_value
|
||||||
|
%patch8 -p1 -b .locviews
|
||||||
|
|
||||||
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
|
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
|
||||||
|
|
||||||
|
@ -203,20 +222,25 @@ install -Dm0644 config/10-default-yama-scope.conf ${RPM_BUILD_ROOT}%{_sysctldir}
|
||||||
%check
|
%check
|
||||||
make -s %{?_smp_mflags} check || (cat tests/test-suite.log; false)
|
make -s %{?_smp_mflags} check || (cat tests/test-suite.log; false)
|
||||||
|
|
||||||
%clean
|
# Only the latest Fedora and EPEL have these scriptlets,
|
||||||
rm -rf ${RPM_BUILD_ROOT}
|
# older Fedora and plain RHEL don't.
|
||||||
|
%if 0%{?ldconfig_scriptlets:1}
|
||||||
|
%ldconfig_scriptlets libs
|
||||||
|
%ldconfig_scriptlets libelf
|
||||||
|
%else
|
||||||
%post libs -p /sbin/ldconfig
|
%post libs -p /sbin/ldconfig
|
||||||
|
|
||||||
%postun libs -p /sbin/ldconfig
|
%postun libs -p /sbin/ldconfig
|
||||||
|
|
||||||
%post libelf -p /sbin/ldconfig
|
%post libelf -p /sbin/ldconfig
|
||||||
|
|
||||||
%postun libelf -p /sbin/ldconfig
|
%postun libelf -p /sbin/ldconfig
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{provide_yama_scope}
|
%if %{provide_yama_scope}
|
||||||
%post default-yama-scope
|
%post default-yama-scope
|
||||||
|
# Due to circular dependencies might not be installed yet, so double check.
|
||||||
|
# (systemd -> elfutils-libs -> default-yama-scope -> systemd)
|
||||||
|
if [ -x /usr/lib/systemd/systemd-sysctl ] ; then
|
||||||
%sysctl_apply 10-default-yama-scope.conf
|
%sysctl_apply 10-default-yama-scope.conf
|
||||||
|
fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files
|
%files
|
||||||
|
@ -296,10 +320,40 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||||
%if %{provide_yama_scope}
|
%if %{provide_yama_scope}
|
||||||
%files default-yama-scope
|
%files default-yama-scope
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%config(noreplace) %{_sysctldir}/10-default-yama-scope.conf
|
%{_sysctldir}/10-default-yama-scope.conf
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Mar 01 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.170-10
|
||||||
|
- Add elfutils-0.170-GNU_variable_value.patch
|
||||||
|
- Add elfutils-0.170-locviews.patch
|
||||||
|
|
||||||
|
* Fri Feb 16 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.170-9
|
||||||
|
- Add elfutils-0.170-core-pid.patch
|
||||||
|
- Add elfutils-0.170-elf_sync.patch
|
||||||
|
- Add elfutils-0.170-new-notes-hack.patch
|
||||||
|
|
||||||
|
* Thu Feb 15 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.170-8
|
||||||
|
- Add elfutils-0.170-sys-ptrace.patch
|
||||||
|
- Make sure spec can be build even when ldconfig_scriplets aren't defined.
|
||||||
|
- Add elfutils-0.170-m68k-packed-not-aligned.patch
|
||||||
|
|
||||||
|
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.170-7
|
||||||
|
- Escape macros in %%changelog
|
||||||
|
|
||||||
|
* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.170-5
|
||||||
|
- Switch to %%ldconfig_scriptlets
|
||||||
|
|
||||||
|
* Wed Dec 20 2017 Mark Wielaard <mjw@fedoraproject.org> - 0.170-4
|
||||||
|
- Add elfutils-0.170-dwarf_aggregate_size.patch.
|
||||||
|
|
||||||
|
* Wed Nov 8 2017 Mark Wielaard <mjw@fedoraproject.org> - 0.170-3
|
||||||
|
- Rely on (and check) systemd_requires for sysctl_apply default-yama-scope.
|
||||||
|
|
||||||
|
* Thu Nov 2 2017 Mark Wielaard <mjw@redhat.com> - 0.170-2
|
||||||
|
- Config files under /usr/lib/sysctl.d (_sysctldir) aren't %%config (#1506660)
|
||||||
|
Admin can place the real config file under /etc/sysctl.d as override.
|
||||||
|
|
||||||
* Thu Aug 3 2017 Mark Wielaard <mjw@fedoraproject.org> - 0.170-1
|
* Thu Aug 3 2017 Mark Wielaard <mjw@fedoraproject.org> - 0.170-1
|
||||||
- New upstream release. Remove upstreamed patches.
|
- New upstream release. Remove upstreamed patches.
|
||||||
- provide_yama_scope for either fedora >= 22 and rhel >= 7.
|
- provide_yama_scope for either fedora >= 22 and rhel >= 7.
|
||||||
|
@ -557,7 +611,7 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||||
|
|
||||||
* Mon Aug 27 2012 Mark Wielaard <mjw@redhat.com> - 0.155-1
|
* Mon Aug 27 2012 Mark Wielaard <mjw@redhat.com> - 0.155-1
|
||||||
- Update to 0.155.
|
- Update to 0.155.
|
||||||
- #844270 - eu-nm invalid %N$ use detected.
|
- #844270 - eu-nm invalid %%N$ use detected.
|
||||||
- #847454 - Ukrainian translation update.
|
- #847454 - Ukrainian translation update.
|
||||||
- Removed local ar 64-bit symbol patch, dwz support patch and xlatetom fix.
|
- Removed local ar 64-bit symbol patch, dwz support patch and xlatetom fix.
|
||||||
|
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue