diff --git a/opal-prd.spec b/opal-prd.spec index 914ffc1..d625c20 100644 --- a/opal-prd.spec +++ b/opal-prd.spec @@ -1,6 +1,6 @@ Name: opal-prd Version: 5.1.13 -Release: 3%{?dist} +Release: 4%{?dist} Summary: OPAL Processor Recovery Diagnostics Daemon Group: System Environment/Daemons @@ -18,6 +18,7 @@ Source0: https://github.com/open-power/skiboot/archive/skiboot-%{version}.tar.gz Source1: opal-prd.socket Source2: opal-prd.service Patch0: skiboot-1.1.13-opal-prd-makefile-fix.patch +Patch1: skiboot-1.1.13-gcc6-builtin-frame-addr-fix.patch %description This package provides a daemon to load and run the OpenPower firmware's @@ -50,6 +51,7 @@ services to the OS (Linux) on IBM Power and OpenPower systems. %setup -q -n skiboot-skiboot-%{version} %patch0 -p1 -b .opal-prd-makefile-fix +%patch1 -p1 -b .gcc6-builtin-frame-addr-fix %build OPAL_PRD_VERSION=%{version} make V=1 CFLAGS="%{optflags}" -C external/opal-prd @@ -103,6 +105,9 @@ install -m 644 -p skiboot.lid %{buildroot}%{_datadir}/qemu/skiboot.lid %{_datadir}/qemu/ %changelog +* Fri Feb 26 2016 Vasant Hegde - 5.1.13-4 +- Fix stack frame compilation issue on gcc6 + * Mon Feb 22 2016 Vasant Hegde - 5.1.13-3 - Fix opal-prd recompilation issse during install diff --git a/skiboot-1.1.13-gcc6-builtin-frame-addr-fix.patch b/skiboot-1.1.13-gcc6-builtin-frame-addr-fix.patch new file mode 100644 index 0000000..3fa3a21 --- /dev/null +++ b/skiboot-1.1.13-gcc6-builtin-frame-addr-fix.patch @@ -0,0 +1,48 @@ +From d46ef7856c5b8f6f883350fc9523ca6c3399a1a5 Mon Sep 17 00:00:00 2001 +From: Vasant Hegde +Date: Fri, 26 Feb 2016 11:26:54 +0530 +Subject: [PATCH] core/stack: Fix __builtin_frame_address issue + +GCC 6 warns if we pass nonzero values to __builtin_frame_address(). Hence +reorganize the code and pass zero to __builtin_frame_address(). + +core/stack.c: In function '__backtrace': +core/stack.c:34:17: error: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Werror=frame-address] + unsigned long *fp = __builtin_frame_address(1); + +Signed-off-by: Vasant Hegde +--- + core/stack.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/core/stack.c b/core/stack.c +index 17f89d4..ead2b6d 100644 +--- a/core/stack.c ++++ b/core/stack.c +@@ -31,10 +31,14 @@ extern uint32_t _stext, _etext; + void __nomcount __backtrace(struct bt_entry *entries, unsigned int *count) + { + unsigned int room = *count; +- unsigned long *fp = __builtin_frame_address(1); ++ unsigned long *fp = __builtin_frame_address(0); ++ ++ if (!fp || (unsigned long)fp > top_of_ram) ++ return; + + *count = 0; + while(room) { ++ fp = (unsigned long *)fp[0]; + if (!fp || (unsigned long)fp > top_of_ram) + break; + entries->sp = (unsigned long)fp; +@@ -42,7 +46,6 @@ void __nomcount __backtrace(struct bt_entry *entries, unsigned int *count) + entries++; + *count = (*count) + 1; + room--; +- fp = (unsigned long *)fp[0]; + } + } + +-- +2.5.0 +