* [PATCH 0/4] gdb upgrade and misc fixes to enable gcc8 @ 2018-05-16 6:31 Khem Raj 2018-05-16 6:32 ` [PATCH 1/4] gdb: Upgrade to 8.1 release Khem Raj ` (3 more replies) 0 siblings, 4 replies; 13+ messages in thread From: Khem Raj @ 2018-05-16 6:31 UTC (permalink / raw) To: openembedded-core The following changes since commit 9611485bba03ef77ff31121e3b1da7cd57990c3e: patchreview: don't disable malformed SoB check (2018-05-15 10:00:33 +0100) are available in the Git repository at: git://git.openembedded.org/openembedded-core-contrib kraj/pu http://cgit.openembedded.org/openembedded-core-contrib/log/?h=kraj/pu Khem Raj (3): gdb: Upgrade to 8.1 release ovmf: Fix build with gcc8 musl: Make dev package rdep on staticdev Ross Burton (1): python2: Fix build with gcc8 meta/conf/distro/include/tcmode-default.inc | 2 +- meta/recipes-core/musl/musl_git.bb | 2 +- ....makefile-add-Wno-stringop-truncatio.patch | 73 +++++++++ ...ols-header.makefile-add-Wno-restrict.patch | 104 ++++++++++++ ....makefile-revert-gcc-8-Wno-xxx-optio.patch | 55 +++++++ ...-silence-false-stringop-overflow-war.patch | 65 ++++++++ meta/recipes-core/ovmf/ovmf_git.bb | 4 + .../gdb/{gdb-8.0.1.inc => gdb-8.1.inc} | 5 +- ...ian_8.0.1.bb => gdb-cross-canadian_8.1.bb} | 0 .../{gdb-cross_8.0.1.bb => gdb-cross_8.1.bb} | 0 .../0001-include-sys-types.h-for-mode_t.patch | 12 +- ...port-for-Renesas-SH-sh4-architecture.patch | 153 ++++++++---------- ...0012-Unbreak-GDBserver-build-for-x32.patch | 101 ------------ .../gdb/{gdb_8.0.1.bb => gdb_8.1.bb} | 2 + .../python/python-native_2.7.14.bb | 1 + .../python/python/fix-gc-alignment.patch | 43 +++++ meta/recipes-devtools/python/python_2.7.14.bb | 1 + 17 files changed, 429 insertions(+), 194 deletions(-) create mode 100644 meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch create mode 100644 meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch create mode 100644 meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch create mode 100644 meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch rename meta/recipes-devtools/gdb/{gdb-8.0.1.inc => gdb-8.1.inc} (85%) rename meta/recipes-devtools/gdb/{gdb-cross-canadian_8.0.1.bb => gdb-cross-canadian_8.1.bb} (100%) rename meta/recipes-devtools/gdb/{gdb-cross_8.0.1.bb => gdb-cross_8.1.bb} (100%) delete mode 100644 meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch rename meta/recipes-devtools/gdb/{gdb_8.0.1.bb => gdb_8.1.bb} (86%) create mode 100644 meta/recipes-devtools/python/python/fix-gc-alignment.patch -- 2.17.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/4] gdb: Upgrade to 8.1 release 2018-05-16 6:31 [PATCH 0/4] gdb upgrade and misc fixes to enable gcc8 Khem Raj @ 2018-05-16 6:32 ` Khem Raj 2018-05-16 6:32 ` [PATCH 2/4] python2: Fix build with gcc8 Khem Raj ` (2 subsequent siblings) 3 siblings, 0 replies; 13+ messages in thread From: Khem Raj @ 2018-05-16 6:32 UTC (permalink / raw) To: openembedded-core cache strerror so it does not try to use rpl_* versions Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/conf/distro/include/tcmode-default.inc | 2 +- .../gdb/{gdb-8.0.1.inc => gdb-8.1.inc} | 5 +- ...ian_8.0.1.bb => gdb-cross-canadian_8.1.bb} | 0 .../{gdb-cross_8.0.1.bb => gdb-cross_8.1.bb} | 0 .../0001-include-sys-types.h-for-mode_t.patch | 12 +- ...port-for-Renesas-SH-sh4-architecture.patch | 153 ++++++++---------- ...0012-Unbreak-GDBserver-build-for-x32.patch | 101 ------------ .../gdb/{gdb_8.0.1.bb => gdb_8.1.bb} | 2 + 8 files changed, 82 insertions(+), 193 deletions(-) rename meta/recipes-devtools/gdb/{gdb-8.0.1.inc => gdb-8.1.inc} (85%) rename meta/recipes-devtools/gdb/{gdb-cross-canadian_8.0.1.bb => gdb-cross-canadian_8.1.bb} (100%) rename meta/recipes-devtools/gdb/{gdb-cross_8.0.1.bb => gdb-cross_8.1.bb} (100%) delete mode 100644 meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch rename meta/recipes-devtools/gdb/{gdb_8.0.1.bb => gdb_8.1.bb} (86%) diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc index 00399ae820..4b58df0459 100644 --- a/meta/conf/distro/include/tcmode-default.inc +++ b/meta/conf/distro/include/tcmode-default.inc @@ -25,7 +25,7 @@ PREFERRED_PROVIDER_virtual/gettext ??= "gettext" GCCVERSION ?= "7.%" SDKGCCVERSION ?= "${GCCVERSION}" BINUVERSION ?= "2.30%" -GDBVERSION ?= "8.0%" +GDBVERSION ?= "8.1%" GLIBCVERSION ?= "2.27%" LINUXLIBCVERSION ?= "4.15%" QEMUVERSION ?= "2.11%" diff --git a/meta/recipes-devtools/gdb/gdb-8.0.1.inc b/meta/recipes-devtools/gdb/gdb-8.1.inc similarity index 85% rename from meta/recipes-devtools/gdb/gdb-8.0.1.inc rename to meta/recipes-devtools/gdb/gdb-8.1.inc index 4a5299b73f..4d9faa2d4b 100644 --- a/meta/recipes-devtools/gdb/gdb-8.0.1.inc +++ b/meta/recipes-devtools/gdb/gdb-8.1.inc @@ -16,9 +16,8 @@ SRC_URI = "http://ftp.gnu.org/gnu/gdb/gdb-${PV}.tar.xz \ file://0009-Change-order-of-CFLAGS.patch \ file://0010-resolve-restrict-keyword-conflict.patch \ file://package_devel_gdb_patches_120-sigprocmask-invalid-call.patch \ - file://0012-Unbreak-GDBserver-build-for-x32.patch \ file://gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch \ " -SRC_URI[md5sum] = "48cac527e6f3018b865ece021e9723ac" -SRC_URI[sha256sum] = "3dbd5f93e36ba2815ad0efab030dcd0c7b211d7b353a40a53f4c02d7d56295e3" +SRC_URI[md5sum] = "f46487561f9a16916a8102316f7fd105" +SRC_URI[sha256sum] = "af61a0263858e69c5dce51eab26662ff3d2ad9aa68da9583e8143b5426be4b34" diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian_8.0.1.bb b/meta/recipes-devtools/gdb/gdb-cross-canadian_8.1.bb similarity index 100% rename from meta/recipes-devtools/gdb/gdb-cross-canadian_8.0.1.bb rename to meta/recipes-devtools/gdb/gdb-cross-canadian_8.1.bb diff --git a/meta/recipes-devtools/gdb/gdb-cross_8.0.1.bb b/meta/recipes-devtools/gdb/gdb-cross_8.1.bb similarity index 100% rename from meta/recipes-devtools/gdb/gdb-cross_8.0.1.bb rename to meta/recipes-devtools/gdb/gdb-cross_8.1.bb diff --git a/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch b/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch index 4f06d46d70..5d19380e30 100644 --- a/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch +++ b/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch @@ -1,7 +1,7 @@ -From 91da0458b333249eb9c2f4c1f1e53fa4bc085cc9 Mon Sep 17 00:00:00 2001 +From ff37f9360ab6f841f28ced9f23f66542febcc0f6 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Tue, 19 Jan 2016 18:18:52 -0800 -Subject: [PATCH 01/10] include sys/types.h for mode_t +Subject: [PATCH 01/11] include sys/types.h for mode_t mode_t is used in target.h, so we need to include sys/types.h to get the defintion @@ -14,17 +14,17 @@ Upstream-Status: Pending 1 file changed, 1 insertion(+) diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h -index 3cc2bc4bab..e6b19b06b9 100644 +index 25accd2207..7f6bca8aa4 100644 --- a/gdb/gdbserver/target.h +++ b/gdb/gdbserver/target.h -@@ -28,6 +28,7 @@ - #include "target/waitstatus.h" +@@ -29,6 +29,7 @@ #include "mem-break.h" #include "btrace-common.h" + #include <vector> +#include <sys/types.h> struct emit_ops; struct buffer; -- -2.13.1 +2.17.0 diff --git a/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch b/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch index cb1b7abd07..f678598284 100644 --- a/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch +++ b/meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch @@ -1,7 +1,7 @@ -From 60ac68f601885ea6480229a5c8a89a0257da376c Mon Sep 17 00:00:00 2001 +From 8757b36be6109f6d7ea0bd8dafbaed647e0d2192 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 2 Mar 2015 02:31:12 +0000 -Subject: [PATCH 05/10] Add support for Renesas SH (sh4) architecture. +Subject: [PATCH 05/11] Add support for Renesas SH (sh4) architecture. gdb (7.4-1~cvs20111117.2) experimental; urgency=low . @@ -15,35 +15,35 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> --- gdb/Makefile.in | 2 + gdb/configure.host | 1 + - gdb/sh-linux-tdep.c | 519 +++++++++++++++++++++++++++++++++++ - gdb/sh-tdep.c | 54 ++-- - gdb/sh-tdep.h | 49 ++++ + gdb/sh-linux-tdep.c | 519 +++++++++++++++++++++++++++ + gdb/sh-tdep.c | 53 ++- + gdb/sh-tdep.h | 49 +++ gdb/testsuite/gdb.asm/asm-source.exp | 5 + gdb/testsuite/gdb.asm/sh.inc | 3 +- gdb/testsuite/gdb.base/annota1.c | 3 + gdb/testsuite/gdb.base/annota3.c | 4 + gdb/testsuite/gdb.base/sigall.c | 3 + gdb/testsuite/gdb.base/signals.c | 4 + - 11 files changed, 618 insertions(+), 29 deletions(-) + 11 files changed, 617 insertions(+), 29 deletions(-) -diff --git a/gdb/Makefile.in b/gdb/Makefile.in -index 8be73ba423..e287ff6a2e 100644 ---- a/gdb/Makefile.in -+++ b/gdb/Makefile.in -@@ -2638,6 +2638,8 @@ ALLDEPFILES = \ - sh-nbsd-tdep.c \ - sh-tdep.c \ - sh64-tdep.c \ -+ sh-linux-tdep.c \ -+ sh-linux-nat.c \ - sol2-tdep.c \ - solib-aix.c \ - solib-spu.c \ -diff --git a/gdb/configure.host b/gdb/configure.host -index d74fd04934..be12de1446 100644 ---- a/gdb/configure.host -+++ b/gdb/configure.host -@@ -150,6 +150,7 @@ powerpc*-*-linux*) gdb_host=linux ;; +Index: gdb-8.1/gdb/Makefile.in +=================================================================== +--- gdb-8.1.orig/gdb/Makefile.in ++++ gdb-8.1/gdb/Makefile.in +@@ -758,6 +758,8 @@ ALL_TARGET_OBS = \ + sh-linux-tdep.o \ + sh-nbsd-tdep.o \ + sh-tdep.o \ ++ sh-linux-tdep.o \ ++ sh-linux-nat.o \ + sh64-tdep.o \ + sol2-tdep.o \ + solib-aix.o \ +Index: gdb-8.1/gdb/configure.host +=================================================================== +--- gdb-8.1.orig/gdb/configure.host ++++ gdb-8.1/gdb/configure.host +@@ -152,6 +152,7 @@ powerpc*-*-linux*) gdb_host=linux ;; s390*-*-linux*) gdb_host=linux ;; @@ -51,10 +51,10 @@ index d74fd04934..be12de1446 100644 sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu) gdb_host=nbsd ;; sh*-*-openbsd*) gdb_host=nbsd ;; -diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c -index c5c745d218..84e539aad3 100644 ---- a/gdb/sh-linux-tdep.c -+++ b/gdb/sh-linux-tdep.c +Index: gdb-8.1/gdb/sh-linux-tdep.c +=================================================================== +--- gdb-8.1.orig/gdb/sh-linux-tdep.c ++++ gdb-8.1/gdb/sh-linux-tdep.c @@ -18,14 +18,37 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -93,7 +93,7 @@ index c5c745d218..84e539aad3 100644 #include "glibc-tdep.h" #include "sh-tdep.h" #include "linux-tdep.h" -@@ -180,9 +203,505 @@ static struct tramp_frame sh_linux_rt_sigreturn_tramp_frame = { +@@ -180,9 +203,505 @@ static struct tramp_frame sh_linux_rt_si sh_linux_rt_sigreturn_init }; @@ -599,10 +599,10 @@ index c5c745d218..84e539aad3 100644 linux_init_abi (info, gdbarch); /* GNU/Linux uses SVR4-style shared libraries. */ -diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c -index 2c2b26847d..14f5281ed4 100644 ---- a/gdb/sh-tdep.c -+++ b/gdb/sh-tdep.c +Index: gdb-8.1/gdb/sh-tdep.c +=================================================================== +--- gdb-8.1.orig/gdb/sh-tdep.c ++++ gdb-8.1/gdb/sh-tdep.c @@ -21,6 +21,9 @@ sac@cygnus.com. */ @@ -613,15 +613,7 @@ index 2c2b26847d..14f5281ed4 100644 #include "frame.h" #include "frame-base.h" #include "frame-unwind.h" -@@ -35,6 +38,7 @@ - #include "arch-utils.h" - #include "floatformat.h" - #include "regcache.h" -+#include "regset.h" - #include "doublest.h" - #include "osabi.h" - #include "reggroups.h" -@@ -68,23 +72,6 @@ static const char *const sh_cc_enum[] = { +@@ -67,23 +70,6 @@ static const char *const sh_cc_enum[] = static const char *sh_active_calling_convention = sh_cc_gcc; @@ -645,7 +637,7 @@ index 2c2b26847d..14f5281ed4 100644 static int sh_is_renesas_calling_convention (struct type *func_type) { -@@ -1052,7 +1039,7 @@ sh_treat_as_flt_p (struct type *type) +@@ -1051,7 +1037,7 @@ sh_treat_as_flt_p (struct type *type) return 0; /* Otherwise if the type of that member is float, the whole type is treated as float. */ @@ -654,7 +646,7 @@ index 2c2b26847d..14f5281ed4 100644 return 1; /* Otherwise it's not treated as float. */ return 0; -@@ -1102,7 +1089,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch, +@@ -1101,7 +1087,7 @@ sh_push_dummy_call_fpu (struct gdbarch * in four registers available. Loop thru args from first to last. */ for (argnum = 0; argnum < nargs; argnum++) { @@ -663,7 +655,7 @@ index 2c2b26847d..14f5281ed4 100644 len = TYPE_LENGTH (type); val = sh_justify_value_in_reg (gdbarch, args[argnum], len); -@@ -1828,7 +1815,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, +@@ -1835,7 +1821,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch reg->how = DWARF2_FRAME_REG_UNDEFINED; } @@ -672,7 +664,7 @@ index 2c2b26847d..14f5281ed4 100644 sh_alloc_frame_cache (void) { struct sh_frame_cache *cache; -@@ -1855,7 +1842,7 @@ sh_alloc_frame_cache (void) +@@ -1862,7 +1848,7 @@ sh_alloc_frame_cache (void) return cache; } @@ -681,7 +673,7 @@ index 2c2b26847d..14f5281ed4 100644 sh_frame_cache (struct frame_info *this_frame, void **this_cache) { struct gdbarch *gdbarch = get_frame_arch (this_frame); -@@ -1922,9 +1909,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache) +@@ -1929,9 +1915,9 @@ sh_frame_cache (struct frame_info *this_ return cache; } @@ -694,7 +686,7 @@ index 2c2b26847d..14f5281ed4 100644 { struct gdbarch *gdbarch = get_frame_arch (this_frame); struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache); -@@ -1938,7 +1925,7 @@ sh_frame_prev_register (struct frame_info *this_frame, +@@ -1945,7 +1931,7 @@ sh_frame_prev_register (struct frame_inf the current frame. Frob regnum so that we pull the value from the correct place. */ if (regnum == gdbarch_pc_regnum (gdbarch)) @@ -703,7 +695,7 @@ index 2c2b26847d..14f5281ed4 100644 if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1) return frame_unwind_got_memory (this_frame, regnum, -@@ -2247,8 +2234,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch, +@@ -2254,8 +2240,8 @@ sh_return_in_first_hidden_param_p (struc static struct gdbarch * sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { @@ -713,7 +705,7 @@ index 2c2b26847d..14f5281ed4 100644 /* SH5 is handled entirely in sh64-tdep.c. */ if (info.bfd_arch_info->mach == bfd_mach_sh5) -@@ -2264,6 +2251,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) +@@ -2271,6 +2257,18 @@ sh_gdbarch_init (struct gdbarch_info inf tdep = XCNEW (struct gdbarch_tdep); gdbarch = gdbarch_alloc (&info, tdep); @@ -732,7 +724,7 @@ index 2c2b26847d..14f5281ed4 100644 set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT); set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT); set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT); -@@ -2418,10 +2417,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) +@@ -2425,10 +2423,11 @@ sh_gdbarch_init (struct gdbarch_info inf break; } @@ -745,10 +737,10 @@ index 2c2b26847d..14f5281ed4 100644 frame_unwind_append_unwinder (gdbarch, &sh_stub_unwind); frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind); -diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h -index d15ef050e0..c4642cefa4 100644 ---- a/gdb/sh-tdep.h -+++ b/gdb/sh-tdep.h +Index: gdb-8.1/gdb/sh-tdep.h +=================================================================== +--- gdb-8.1.orig/gdb/sh-tdep.h ++++ gdb-8.1/gdb/sh-tdep.h @@ -21,6 +21,12 @@ /* Contributed by Steve Chamberlain sac@cygnus.com. */ @@ -828,10 +820,10 @@ index d15ef050e0..c4642cefa4 100644 /* Non-NULL when debugging from a core file. Provides the offset where each general-purpose register is stored inside the associated core file section. */ -diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp -index e07e5543f2..f5e60e1002 100644 ---- a/gdb/testsuite/gdb.asm/asm-source.exp -+++ b/gdb/testsuite/gdb.asm/asm-source.exp +Index: gdb-8.1/gdb/testsuite/gdb.asm/asm-source.exp +=================================================================== +--- gdb-8.1.orig/gdb/testsuite/gdb.asm/asm-source.exp ++++ gdb-8.1/gdb/testsuite/gdb.asm/asm-source.exp @@ -116,6 +116,11 @@ switch -glob -- [istarget] { append link-flags " -m elf32ppc" } @@ -844,10 +836,10 @@ index e07e5543f2..f5e60e1002 100644 "sh*-*-*" { set asm-arch sh set debug-flags "-gdwarf-2" -diff --git a/gdb/testsuite/gdb.asm/sh.inc b/gdb/testsuite/gdb.asm/sh.inc -index a4a5fc545e..89efed7795 100644 ---- a/gdb/testsuite/gdb.asm/sh.inc -+++ b/gdb/testsuite/gdb.asm/sh.inc +Index: gdb-8.1/gdb/testsuite/gdb.asm/sh.inc +=================================================================== +--- gdb-8.1.orig/gdb/testsuite/gdb.asm/sh.inc ++++ gdb-8.1/gdb/testsuite/gdb.asm/sh.inc @@ -40,9 +40,8 @@ mov.l .Lconst\@,r1 bra .Lafterconst\@ @@ -859,10 +851,10 @@ index a4a5fc545e..89efed7795 100644 .long \subr .align 1 .Lafterconst\@: -diff --git a/gdb/testsuite/gdb.base/annota1.c b/gdb/testsuite/gdb.base/annota1.c -index 424e1b8327..0de2e7b633 100644 ---- a/gdb/testsuite/gdb.base/annota1.c -+++ b/gdb/testsuite/gdb.base/annota1.c +Index: gdb-8.1/gdb/testsuite/gdb.base/annota1.c +=================================================================== +--- gdb-8.1.orig/gdb/testsuite/gdb.base/annota1.c ++++ gdb-8.1/gdb/testsuite/gdb.base/annota1.c @@ -1,6 +1,9 @@ #include <stdio.h> #include <signal.h> @@ -873,10 +865,10 @@ index 424e1b8327..0de2e7b633 100644 void handle_USR1 (int sig) -diff --git a/gdb/testsuite/gdb.base/annota3.c b/gdb/testsuite/gdb.base/annota3.c -index 424e1b8327..952aaf218a 100644 ---- a/gdb/testsuite/gdb.base/annota3.c -+++ b/gdb/testsuite/gdb.base/annota3.c +Index: gdb-8.1/gdb/testsuite/gdb.base/annota3.c +=================================================================== +--- gdb-8.1.orig/gdb/testsuite/gdb.base/annota3.c ++++ gdb-8.1/gdb/testsuite/gdb.base/annota3.c @@ -1,6 +1,10 @@ #include <stdio.h> #include <signal.h> @@ -888,10 +880,10 @@ index 424e1b8327..952aaf218a 100644 void handle_USR1 (int sig) -diff --git a/gdb/testsuite/gdb.base/sigall.c b/gdb/testsuite/gdb.base/sigall.c -index 81f3b08d6b..1574b2d6cb 100644 ---- a/gdb/testsuite/gdb.base/sigall.c -+++ b/gdb/testsuite/gdb.base/sigall.c +Index: gdb-8.1/gdb/testsuite/gdb.base/sigall.c +=================================================================== +--- gdb-8.1.orig/gdb/testsuite/gdb.base/sigall.c ++++ gdb-8.1/gdb/testsuite/gdb.base/sigall.c @@ -1,6 +1,9 @@ #include <signal.h> #include <unistd.h> @@ -902,10 +894,10 @@ index 81f3b08d6b..1574b2d6cb 100644 /* Signal handlers, we set breakpoints in them to make sure that the signals really get delivered. */ -diff --git a/gdb/testsuite/gdb.base/signals.c b/gdb/testsuite/gdb.base/signals.c -index 756606880f..1205a9bc9c 100644 ---- a/gdb/testsuite/gdb.base/signals.c -+++ b/gdb/testsuite/gdb.base/signals.c +Index: gdb-8.1/gdb/testsuite/gdb.base/signals.c +=================================================================== +--- gdb-8.1.orig/gdb/testsuite/gdb.base/signals.c ++++ gdb-8.1/gdb/testsuite/gdb.base/signals.c @@ -3,6 +3,10 @@ #include <signal.h> #include <unistd.h> @@ -917,6 +909,3 @@ index 756606880f..1205a9bc9c 100644 static int count = 0; --- -2.13.1 - diff --git a/meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch b/meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch deleted file mode 100644 index 18a3ce3d63..0000000000 --- a/meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 3e1e401053ea5f02a9e9c65abddd31a03baa1bd1 Mon Sep 17 00:00:00 2001 -From: Yao Qi <yao.qi@linaro.org> -Date: Fri, 29 Dec 2017 12:57:25 +0800 -Subject: [PATCH] Unbreak GDBserver build for x32 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When I verify my target description changes, I build GDB and GDBserver for -x32, but it failed. - -/../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c -../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c: In function ‘const target_desc* get_ipa_tdesc(int)’: -../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c:184:10: error: ‘X86_TDESC_AVX512’ was not declared in this scope - case X86_TDESC_AVX512: - ^ -../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c:185:14: error: ‘tdesc_x32_avx512_linux’ was not declared in this scope - return tdesc_x32_avx512_linux; - ^ -../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c: In function ‘void initialize_low_tracepoint()’: -../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c:282:36: error: ‘init_registers_x32_avx512_linux’ was not declared in this scope - init_registers_x32_avx512_linux (); - ^ - -ipa_x32_linux_regobj use to be there, but removed by -22049425ce40324139be82d9a6ec518c46b65815 by mistake. - -gdb/gdbserver: - -2017-08-04 Yao Qi <yao.qi@linaro.org> - - * configure.srv (ipa_x32_linux_regobj): New. - * linux-amd64-ipa.c (get_ipa_tdesc): Use X86_TDESC_AVX_AVX512 - instead of X86_TDESC_AVX512. - (initialize_low_tracepoint): Call - init_registers_x32_avx_avx512_linux. - -Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=f02fd7745d003d65fd3b981618e07b874b721d79] - -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - ChangeLog | 8 ++++++++ - gdb/gdbserver/configure.srv | 1 + - gdb/gdbserver/linux-amd64-ipa.c | 6 +++--- - 3 files changed, 12 insertions(+), 3 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 4ac2d63..b5b8228 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,11 @@ -+ 2017-08-04 Yao Qi <yao.qi@linaro.org> -+ -+ * configure.srv (ipa_x32_linux_regobj): New. -+ * linux-amd64-ipa.c (get_ipa_tdesc): Use X86_TDESC_AVX_AVX512 -+ instead of X86_TDESC_AVX512. -+ (initialize_low_tracepoint): Call -+ init_registers_x32_avx_avx512_linux. -+ - 2017-04-13 Andrew Jenner <andrew@codesourcery.com> - - * config.sub: Sync with master version in config project. -diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv -index d00d9e2..56951c8 100644 ---- a/gdb/gdbserver/configure.srv -+++ b/gdb/gdbserver/configure.srv -@@ -31,6 +31,7 @@ srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx-avx512-linux.o - - ipa_i386_linux_regobj="i386-linux-ipa.o i386-avx-linux-ipa.o i386-avx-mpx-linux-ipa.o i386-avx-avx512-linux-ipa.o i386-avx-mpx-avx512-pku-linux-ipa.o i386-mpx-linux-ipa.o i386-mmx-linux-ipa.o" - ipa_amd64_linux_regobj="amd64-linux-ipa.o amd64-avx-linux-ipa.o amd64-avx-mpx-linux-ipa.o amd64-avx-avx512-linux-ipa.o amd64-avx-mpx-avx512-pku-linux-ipa.o amd64-mpx-linux-ipa.o" -+ipa_x32_linux_regobj="x32-linux-ipa.o x32-avx-linux-ipa.o x32-avx-avx512-linux-ipa.o" - ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o" - - srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml i386/32bit-avx512.xml i386/32bit-mpx.xml i386/32bit-pkeys.xml" -diff --git a/gdb/gdbserver/linux-amd64-ipa.c b/gdb/gdbserver/linux-amd64-ipa.c -index 67f36c2..683339b 100644 ---- a/gdb/gdbserver/linux-amd64-ipa.c -+++ b/gdb/gdbserver/linux-amd64-ipa.c -@@ -181,8 +181,8 @@ get_ipa_tdesc (int idx) - return tdesc_x32_linux; - case X86_TDESC_AVX: - return tdesc_x32_avx_linux; -- case X86_TDESC_AVX512: -- return tdesc_x32_avx512_linux; -+ case X86_TDESC_AVX_AVX512: -+ return tdesc_x32_avx_avx512_linux; - default: - break; - } -@@ -279,7 +279,7 @@ initialize_low_tracepoint (void) - #if defined __ILP32__ - init_registers_x32_linux (); - init_registers_x32_avx_linux (); -- init_registers_x32_avx512_linux (); -+ init_registers_x32_avx_avx512_linux (); - #else - init_registers_amd64_linux (); - init_registers_amd64_avx_linux (); --- -2.7.4 - diff --git a/meta/recipes-devtools/gdb/gdb_8.0.1.bb b/meta/recipes-devtools/gdb/gdb_8.1.bb similarity index 86% rename from meta/recipes-devtools/gdb/gdb_8.0.1.bb rename to meta/recipes-devtools/gdb/gdb_8.1.bb index ea8fef122c..84ab08ce93 100644 --- a/meta/recipes-devtools/gdb/gdb_8.0.1.bb +++ b/meta/recipes-devtools/gdb/gdb_8.1.bb @@ -6,6 +6,8 @@ inherit python3-dir EXTRA_OEMAKE_append_libc-musl = "\ gt_cv_func_gnugettext1_libc=yes \ gt_cv_func_gnugettext2_libc=yes \ + gl_cv_func_working_strerror=yes \ + gl_cv_func_strerror_0_works=yes \ gl_cv_func_gettimeofday_clobber=no \ " -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/4] python2: Fix build with gcc8 2018-05-16 6:31 [PATCH 0/4] gdb upgrade and misc fixes to enable gcc8 Khem Raj 2018-05-16 6:32 ` [PATCH 1/4] gdb: Upgrade to 8.1 release Khem Raj @ 2018-05-16 6:32 ` Khem Raj 2018-05-16 6:32 ` [PATCH 3/4] ovmf: " Khem Raj 2018-05-16 6:32 ` [PATCH 4/4] musl: Make dev package rdep on staticdev Khem Raj 3 siblings, 0 replies; 13+ messages in thread From: Khem Raj @ 2018-05-16 6:32 UTC (permalink / raw) To: openembedded-core From: Ross Burton <ross.burton@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> --- .../python/python-native_2.7.14.bb | 1 + .../python/python/fix-gc-alignment.patch | 43 +++++++++++++++++++ meta/recipes-devtools/python/python_2.7.14.bb | 1 + 3 files changed, 45 insertions(+) create mode 100644 meta/recipes-devtools/python/python/fix-gc-alignment.patch diff --git a/meta/recipes-devtools/python/python-native_2.7.14.bb b/meta/recipes-devtools/python/python-native_2.7.14.bb index 7c491fa3e0..b822583c53 100644 --- a/meta/recipes-devtools/python/python-native_2.7.14.bb +++ b/meta/recipes-devtools/python/python-native_2.7.14.bb @@ -16,6 +16,7 @@ SRC_URI += "\ file://builddir.patch \ file://parallel-makeinst-create-bindir.patch \ file://revert_use_of_sysconfigdata.patch \ + file://fix-gc-alignment.patch \ " S = "${WORKDIR}/Python-${PV}" diff --git a/meta/recipes-devtools/python/python/fix-gc-alignment.patch b/meta/recipes-devtools/python/python/fix-gc-alignment.patch new file mode 100644 index 0000000000..b63cd08747 --- /dev/null +++ b/meta/recipes-devtools/python/python/fix-gc-alignment.patch @@ -0,0 +1,43 @@ +Upstream-Status: Submitted +Signed-off-by: Ross Burton <ross.burton@intel.com> + +Fix for over-aligned GC info +Patch by Florian Weimer + +See: https://bugzilla.redhat.com/show_bug.cgi?id=1540316 +Upstream discussion: https://mail.python.org/pipermail/python-dev/2018-January/152000.html + +diff --git a/Include/objimpl.h b/Include/objimpl.h +index 55e83eced6..aa906144dc 100644 +--- a/Include/objimpl.h ++++ b/Include/objimpl.h +@@ -248,6 +248,18 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); + /* for source compatibility with 2.2 */ + #define _PyObject_GC_Del PyObject_GC_Del + ++/* Former over-aligned definition of PyGC_Head, used to compute the ++ size of the padding for the new version below. */ ++union _gc_head; ++union _gc_head_old { ++ struct { ++ union _gc_head *gc_next; ++ union _gc_head *gc_prev; ++ Py_ssize_t gc_refs; ++ } gc; ++ long double dummy; ++}; ++ + /* GC information is stored BEFORE the object structure. */ + typedef union _gc_head { + struct { +@@ -255,7 +267,8 @@ typedef union _gc_head { + union _gc_head *gc_prev; + Py_ssize_t gc_refs; + } gc; +- long double dummy; /* force worst-case alignment */ ++ double dummy; /* force worst-case alignment */ ++ char dummy_padding[sizeof(union _gc_head_old)]; + } PyGC_Head; + + extern PyGC_Head *_PyGC_generation0; + \ No newline at end of file diff --git a/meta/recipes-devtools/python/python_2.7.14.bb b/meta/recipes-devtools/python/python_2.7.14.bb index 0a09926dfb..41a8609b15 100644 --- a/meta/recipes-devtools/python/python_2.7.14.bb +++ b/meta/recipes-devtools/python/python_2.7.14.bb @@ -30,6 +30,7 @@ SRC_URI += "\ file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \ file://pass-missing-libraries-to-Extension-for-mul.patch \ file://support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch \ + file://fix-gc-alignment.patch \ " S = "${WORKDIR}/Python-${PV}" -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/4] ovmf: Fix build with gcc8 2018-05-16 6:31 [PATCH 0/4] gdb upgrade and misc fixes to enable gcc8 Khem Raj 2018-05-16 6:32 ` [PATCH 1/4] gdb: Upgrade to 8.1 release Khem Raj 2018-05-16 6:32 ` [PATCH 2/4] python2: Fix build with gcc8 Khem Raj @ 2018-05-16 6:32 ` Khem Raj 2018-05-17 10:17 ` Burton, Ross 2018-05-16 6:32 ` [PATCH 4/4] musl: Make dev package rdep on staticdev Khem Raj 3 siblings, 1 reply; 13+ messages in thread From: Khem Raj @ 2018-05-16 6:32 UTC (permalink / raw) To: openembedded-core Signed-off-by: Khem Raj <raj.khem@gmail.com> --- ....makefile-add-Wno-stringop-truncatio.patch | 73 ++++++++++++ ...ols-header.makefile-add-Wno-restrict.patch | 104 ++++++++++++++++++ ....makefile-revert-gcc-8-Wno-xxx-optio.patch | 55 +++++++++ ...-silence-false-stringop-overflow-war.patch | 65 +++++++++++ meta/recipes-core/ovmf/ovmf_git.bb | 4 + 5 files changed, 301 insertions(+) create mode 100644 meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch create mode 100644 meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch create mode 100644 meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch create mode 100644 meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch diff --git a/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch new file mode 100644 index 0000000000..1d1679fe7e --- /dev/null +++ b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch @@ -0,0 +1,73 @@ +From 9fce4bab014b9aa618060eba13d6dd04b0fa1b70 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek <lersek@redhat.com> +Date: Fri, 2 Mar 2018 17:11:52 +0100 +Subject: [PATCH 1/4] BaseTools/header.makefile: add "-Wno-stringop-truncation" + +gcc-8 (which is part of Fedora 28) enables the new warning +"-Wstringop-truncation" in "-Wall". This warning is documented in detail +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the +introduction says + +> Warn for calls to bounded string manipulation functions such as strncat, +> strncpy, and stpncpy that may either truncate the copied string or leave +> the destination unchanged. + +It breaks the BaseTools build with: + +> EfiUtilityMsgs.c: In function 'PrintMessage': +> EfiUtilityMsgs.c:484:9: error: 'strncat' output may be truncated copying +> between 0 and 511 bytes from a string of length 511 +> [-Werror=stringop-truncation] +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> EfiUtilityMsgs.c:469:9: error: 'strncat' output may be truncated copying +> between 0 and 511 bytes from a string of length 511 +> [-Werror=stringop-truncation] +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> EfiUtilityMsgs.c:511:5: error: 'strncat' output may be truncated copying +> between 0 and 511 bytes from a string of length 511 +> [-Werror=stringop-truncation] +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The right way to fix the warning would be to implement string concat with +snprintf(). However, Microsoft does not appear to support snprintf() +before VS2015 +<https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010>, +so we just have to shut up the warning. The strncat() calls flagged above +are valid BTW. + +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> +Cc: Cole Robinson <crobinso@redhat.com> +Cc: Liming Gao <liming.gao@intel.com> +Cc: Paolo Bonzini <pbonzini@redhat.com> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Laszlo Ersek <lersek@redhat.com> +Reviewed-by: Liming Gao <liming.gao@intel.com> +--- +Upstream-Status: Backport + + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile +index 063982b82f..6c3826aecb 100644 +--- a/BaseTools/Source/C/Makefiles/header.makefile ++++ b/BaseTools/Source/C/Makefiles/header.makefile +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE + BUILD_CPPFLAGS = $(INCLUDE) -O2 + ifeq ($(DARWIN),Darwin) + # assume clang or clang compatible flags on OS X +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g + else +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-unused-result -nostdlib -c -g ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g + endif + BUILD_LFLAGS = + BUILD_CXXFLAGS = -Wno-unused-result +-- +2.17.0 + diff --git a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch new file mode 100644 index 0000000000..4a25e230ce --- /dev/null +++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch @@ -0,0 +1,104 @@ +From 86dbdac5a25bd23deb4a0e0a97b527407e02184d Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek <lersek@redhat.com> +Date: Fri, 2 Mar 2018 17:11:52 +0100 +Subject: [PATCH 2/4] BaseTools/header.makefile: add "-Wno-restrict" + +gcc-8 (which is part of Fedora 28) enables the new warning +"-Wrestrict" in "-Wall". This warning is documented in detail +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the +introduction says + +> Warn when an object referenced by a restrict-qualified parameter (or, in +> C++, a __restrict-qualified parameter) is aliased by another argument, +> or when copies between such objects overlap. + +It breaks the BaseTools build (in the Brotli compression library) with: + +> In function 'ProcessCommandsInternal', +> inlined from 'ProcessCommands' at dec/decode.c:1828:10: +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at +> offset 16 [-Werror=restrict] +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> In function 'ProcessCommandsInternal', +> inlined from 'SafeProcessCommands' at dec/decode.c:1833:10: +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at +> offset 16 [-Werror=restrict] +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Paolo Bonzini <pbonzini@redhat.com> analyzed the Brotli source in detail, +and concluded that the warning is a false positive: + +> This seems safe to me, because it's preceded by: +> +> uint8_t* copy_dst = &s->ringbuffer[pos]; +> uint8_t* copy_src = &s->ringbuffer[src_start]; +> int dst_end = pos + i; +> int src_end = src_start + i; +> if (src_end > pos && dst_end > src_start) { +> /* Regions intersect. */ +> goto CommandPostWrapCopy; +> } +> +> If [src_start, src_start + i) and [pos, pos + i) don't intersect, then +> neither do [src_start + 16, src_start + i) and [pos + 16, pos + i). +> +> The if seems okay: +> +> (src_start + i > pos && pos + i > src_start) +> +> which can be rewritten to: +> +> (pos < src_start + i && src_start < pos + i) +> +> Then the numbers are in one of these two orders: +> +> pos <= src_start < pos + i <= src_start + i +> src_start <= pos < src_start + i <= pos + i +> +> These two would be allowed by the "if", but they can only happen if pos +> == src_start so they degenerate to the same two orders above: +> +> pos <= src_start < src_start + i <= pos + i +> src_start <= pos < pos + i <= src_start + i +> +> So it is a false positive in GCC. + +Disable the warning for now. + +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> +Cc: Cole Robinson <crobinso@redhat.com> +Cc: Liming Gao <liming.gao@intel.com> +Cc: Paolo Bonzini <pbonzini@redhat.com> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> +Reported-by: Cole Robinson <crobinso@redhat.com> +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Laszlo Ersek <lersek@redhat.com> +Reviewed-by: Liming Gao <liming.gao@intel.com> +--- +Upstream-Status: Backport + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile +index 6c3826aecb..3feae10095 100644 +--- a/BaseTools/Source/C/Makefiles/header.makefile ++++ b/BaseTools/Source/C/Makefiles/header.makefile +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE + BUILD_CPPFLAGS = $(INCLUDE) -O2 + ifeq ($(DARWIN),Darwin) + # assume clang or clang compatible flags on OS X +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g + else +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g + endif + BUILD_LFLAGS = + BUILD_CXXFLAGS = -Wno-unused-result +-- +2.17.0 + diff --git a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch new file mode 100644 index 0000000000..19f32e7cee --- /dev/null +++ b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch @@ -0,0 +1,55 @@ +From 6866325dd9c17412e555974dde41f9631224db52 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek <lersek@redhat.com> +Date: Wed, 7 Mar 2018 10:17:28 +0100 +Subject: [PATCH 3/4] BaseTools/header.makefile: revert gcc-8 "-Wno-xxx" + options on OSX + +I recently added the gcc-8 specific "-Wno-stringop-truncation" and +"-Wno-restrict" options to BUILD_CFLAGS, both for "Darwin" (XCODE5 / +clang, OSX) and otherwise (gcc, Linux / Cygwin). + +I also regression-tested the change with gcc-4.8 on Linux -- gcc-4.8 does +not know either of the (gcc-8 specific) "-Wno-stringop-truncation" and +"-Wno-restrict" options, yet the build completed fine (by GCC design). + +Regarding OSX, my expectation was that + +- XCODE5 / clang would either recognize these warnings options (because + clang does recognize most -W options of gcc), + +- or, similarly to gcc, clang would simply ignore the "-Wno-xxx" flags + that it didn't recognize. + +Neither is the case; the new flags have broken the BaseTools build on OSX. +Revert them (for OSX only). + +Cc: Liming Gao <liming.gao@intel.com> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> +Reported-by: Liming Gao <liming.gao@intel.com> +Fixes: 1d212a83df0eaf32a6f5d4159beb2d77832e0231 +Fixes: 9222154ae7b3eef75ae88cdb56158256227cb929 +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Laszlo Ersek <lersek@redhat.com> +Reviewed-by: Liming Gao <liming.gao@intel.com> +Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> +--- +Upstream-Status: Backport + BaseTools/Source/C/Makefiles/header.makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile +index 3feae10095..6eefddb417 100644 +--- a/BaseTools/Source/C/Makefiles/header.makefile ++++ b/BaseTools/Source/C/Makefiles/header.makefile +@@ -47,7 +47,7 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE + BUILD_CPPFLAGS = $(INCLUDE) -O2 + ifeq ($(DARWIN),Darwin) + # assume clang or clang compatible flags on OS X +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g + else + BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g + endif +-- +2.17.0 + diff --git a/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch new file mode 100644 index 0000000000..5fd4e9d573 --- /dev/null +++ b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch @@ -0,0 +1,65 @@ +From dfb42a5bff78d9239a80731e337855234badef3e Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek <lersek@redhat.com> +Date: Fri, 2 Mar 2018 17:11:52 +0100 +Subject: [PATCH 4/4] BaseTools/GenVtf: silence false "stringop-overflow" + warning with memcpy() + +gcc-8 (which is part of Fedora 28) enables the new warning +"-Wstringop-overflow" in "-Wall". This warning is documented in detail at +<https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the +introduction says + +> Warn for calls to string manipulation functions such as memcpy and +> strcpy that are determined to overflow the destination buffer. + +It breaks the BaseTools build with: + +> GenVtf.c: In function 'ConvertVersionInfo': +> GenVtf.c:132:7: error: 'strncpy' specified bound depends on the length +> of the source argument [-Werror=stringop-overflow=] +> strncpy (TemStr + 4 - Length, Str, Length); +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +> GenVtf.c:130:14: note: length computed here +> Length = strlen(Str); +> ^~~~~~~~~~~ + +It is a false positive because, while the bound equals the length of the +source argument, the destination pointer is moved back towards the +beginning of the destination buffer by the same amount (and this amount is +range-checked first, so we can't precede the start of the dest buffer). + +Replace both strncpy() calls with memcpy(). + +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> +Cc: Cole Robinson <crobinso@redhat.com> +Cc: Liming Gao <liming.gao@intel.com> +Cc: Paolo Bonzini <pbonzini@redhat.com> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> +Reported-by: Cole Robinson <crobinso@redhat.com> +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Laszlo Ersek <lersek@redhat.com> +Reviewed-by: Liming Gao <liming.gao@intel.com> +--- +Upstream-Status: Backport + BaseTools/Source/C/GenVtf/GenVtf.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c +index 2ae9a7be2c..0cd33e71e9 100644 +--- a/BaseTools/Source/C/GenVtf/GenVtf.c ++++ b/BaseTools/Source/C/GenVtf/GenVtf.c +@@ -129,9 +129,9 @@ Returns: + } else { + Length = strlen(Str); + if (Length < 4) { +- strncpy (TemStr + 4 - Length, Str, Length); ++ memcpy (TemStr + 4 - Length, Str, Length); + } else { +- strncpy (TemStr, Str + Length - 4, 4); ++ memcpy (TemStr, Str + Length - 4, 4); + } + + sscanf ( +-- +2.17.0 + diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb index 8750b3c528..212530acbf 100644 --- a/meta/recipes-core/ovmf/ovmf_git.bb +++ b/meta/recipes-core/ovmf/ovmf_git.bb @@ -19,6 +19,10 @@ SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \ file://0004-ovmf-enable-long-path-file.patch \ file://VfrCompile-increase-path-length-limit.patch \ file://no-stack-protector-all-archs.patch \ + file://0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch \ + file://0002-BaseTools-header.makefile-add-Wno-restrict.patch \ + file://0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch \ + file://0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch \ " UPSTREAM_VERSION_UNKNOWN = "1" -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] ovmf: Fix build with gcc8 2018-05-16 6:32 ` [PATCH 3/4] ovmf: " Khem Raj @ 2018-05-17 10:17 ` Burton, Ross 2018-05-17 10:47 ` Martin Jansa ` (2 more replies) 0 siblings, 3 replies; 13+ messages in thread From: Burton, Ross @ 2018-05-17 10:17 UTC (permalink / raw) To: Khem Raj; +Cc: OE-core Even when I pick from the branch instead of the mail, I suspect the line endings are messed up and this won't apply. Can you double-check? (I *hate* the ovmf recipe for this reason and am very tempted to just run dos2unix over the tree after unpack!) Ross On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > ....makefile-add-Wno-stringop-truncatio.patch | 73 ++++++++++++ > ...ols-header.makefile-add-Wno-restrict.patch | 104 ++++++++++++++++++ > ....makefile-revert-gcc-8-Wno-xxx-optio.patch | 55 +++++++++ > ...-silence-false-stringop-overflow-war.patch | 65 +++++++++++ > meta/recipes-core/ovmf/ovmf_git.bb | 4 + > 5 files changed, 301 insertions(+) > create mode 100644 meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch > create mode 100644 meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch > create mode 100644 meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch > create mode 100644 meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch > > diff --git a/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch > new file mode 100644 > index 0000000000..1d1679fe7e > --- /dev/null > +++ b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch > @@ -0,0 +1,73 @@ > +From 9fce4bab014b9aa618060eba13d6dd04b0fa1b70 Mon Sep 17 00:00:00 2001 > +From: Laszlo Ersek <lersek@redhat.com> > +Date: Fri, 2 Mar 2018 17:11:52 +0100 > +Subject: [PATCH 1/4] BaseTools/header.makefile: add "-Wno-stringop-truncation" > + > +gcc-8 (which is part of Fedora 28) enables the new warning > +"-Wstringop-truncation" in "-Wall". This warning is documented in detail > +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the > +introduction says > + > +> Warn for calls to bounded string manipulation functions such as strncat, > +> strncpy, and stpncpy that may either truncate the copied string or leave > +> the destination unchanged. > + > +It breaks the BaseTools build with: > + > +> EfiUtilityMsgs.c: In function 'PrintMessage': > +> EfiUtilityMsgs.c:484:9: error: 'strncat' output may be truncated copying > +> between 0 and 511 bytes from a string of length 511 > +> [-Werror=stringop-truncation] > +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +> EfiUtilityMsgs.c:469:9: error: 'strncat' output may be truncated copying > +> between 0 and 511 bytes from a string of length 511 > +> [-Werror=stringop-truncation] > +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +> EfiUtilityMsgs.c:511:5: error: 'strncat' output may be truncated copying > +> between 0 and 511 bytes from a string of length 511 > +> [-Werror=stringop-truncation] > +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +The right way to fix the warning would be to implement string concat with > +snprintf(). However, Microsoft does not appear to support snprintf() > +before VS2015 > +<https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010>, > +so we just have to shut up the warning. The strncat() calls flagged above > +are valid BTW. > + > +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > +Cc: Cole Robinson <crobinso@redhat.com> > +Cc: Liming Gao <liming.gao@intel.com> > +Cc: Paolo Bonzini <pbonzini@redhat.com> > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > +Contributed-under: TianoCore Contribution Agreement 1.1 > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > +Reviewed-by: Liming Gao <liming.gao@intel.com> > +--- > +Upstream-Status: Backport > + > + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile > +index 063982b82f..6c3826aecb 100644 > +--- a/BaseTools/Source/C/Makefiles/header.makefile > ++++ b/BaseTools/Source/C/Makefiles/header.makefile > +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE > + BUILD_CPPFLAGS = $(INCLUDE) -O2 > + ifeq ($(DARWIN),Darwin) > + # assume clang or clang compatible flags on OS X > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g > + else > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-unused-result -nostdlib -c -g > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g > + endif > + BUILD_LFLAGS = > + BUILD_CXXFLAGS = -Wno-unused-result > +-- > +2.17.0 > + > diff --git a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch > new file mode 100644 > index 0000000000..4a25e230ce > --- /dev/null > +++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch > @@ -0,0 +1,104 @@ > +From 86dbdac5a25bd23deb4a0e0a97b527407e02184d Mon Sep 17 00:00:00 2001 > +From: Laszlo Ersek <lersek@redhat.com> > +Date: Fri, 2 Mar 2018 17:11:52 +0100 > +Subject: [PATCH 2/4] BaseTools/header.makefile: add "-Wno-restrict" > + > +gcc-8 (which is part of Fedora 28) enables the new warning > +"-Wrestrict" in "-Wall". This warning is documented in detail > +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the > +introduction says > + > +> Warn when an object referenced by a restrict-qualified parameter (or, in > +> C++, a __restrict-qualified parameter) is aliased by another argument, > +> or when copies between such objects overlap. > + > +It breaks the BaseTools build (in the Brotli compression library) with: > + > +> In function 'ProcessCommandsInternal', > +> inlined from 'ProcessCommands' at dec/decode.c:1828:10: > +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 > +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at > +> offset 16 [-Werror=restrict] > +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +> In function 'ProcessCommandsInternal', > +> inlined from 'SafeProcessCommands' at dec/decode.c:1833:10: > +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 > +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at > +> offset 16 [-Werror=restrict] > +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +Paolo Bonzini <pbonzini@redhat.com> analyzed the Brotli source in detail, > +and concluded that the warning is a false positive: > + > +> This seems safe to me, because it's preceded by: > +> > +> uint8_t* copy_dst = &s->ringbuffer[pos]; > +> uint8_t* copy_src = &s->ringbuffer[src_start]; > +> int dst_end = pos + i; > +> int src_end = src_start + i; > +> if (src_end > pos && dst_end > src_start) { > +> /* Regions intersect. */ > +> goto CommandPostWrapCopy; > +> } > +> > +> If [src_start, src_start + i) and [pos, pos + i) don't intersect, then > +> neither do [src_start + 16, src_start + i) and [pos + 16, pos + i). > +> > +> The if seems okay: > +> > +> (src_start + i > pos && pos + i > src_start) > +> > +> which can be rewritten to: > +> > +> (pos < src_start + i && src_start < pos + i) > +> > +> Then the numbers are in one of these two orders: > +> > +> pos <= src_start < pos + i <= src_start + i > +> src_start <= pos < src_start + i <= pos + i > +> > +> These two would be allowed by the "if", but they can only happen if pos > +> == src_start so they degenerate to the same two orders above: > +> > +> pos <= src_start < src_start + i <= pos + i > +> src_start <= pos < pos + i <= src_start + i > +> > +> So it is a false positive in GCC. > + > +Disable the warning for now. > + > +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > +Cc: Cole Robinson <crobinso@redhat.com> > +Cc: Liming Gao <liming.gao@intel.com> > +Cc: Paolo Bonzini <pbonzini@redhat.com> > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > +Reported-by: Cole Robinson <crobinso@redhat.com> > +Contributed-under: TianoCore Contribution Agreement 1.1 > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > +Reviewed-by: Liming Gao <liming.gao@intel.com> > +--- > +Upstream-Status: Backport > + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile > +index 6c3826aecb..3feae10095 100644 > +--- a/BaseTools/Source/C/Makefiles/header.makefile > ++++ b/BaseTools/Source/C/Makefiles/header.makefile > +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE > + BUILD_CPPFLAGS = $(INCLUDE) -O2 > + ifeq ($(DARWIN),Darwin) > + # assume clang or clang compatible flags on OS X > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g > + else > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g > + endif > + BUILD_LFLAGS = > + BUILD_CXXFLAGS = -Wno-unused-result > +-- > +2.17.0 > + > diff --git a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch > new file mode 100644 > index 0000000000..19f32e7cee > --- /dev/null > +++ b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch > @@ -0,0 +1,55 @@ > +From 6866325dd9c17412e555974dde41f9631224db52 Mon Sep 17 00:00:00 2001 > +From: Laszlo Ersek <lersek@redhat.com> > +Date: Wed, 7 Mar 2018 10:17:28 +0100 > +Subject: [PATCH 3/4] BaseTools/header.makefile: revert gcc-8 "-Wno-xxx" > + options on OSX > + > +I recently added the gcc-8 specific "-Wno-stringop-truncation" and > +"-Wno-restrict" options to BUILD_CFLAGS, both for "Darwin" (XCODE5 / > +clang, OSX) and otherwise (gcc, Linux / Cygwin). > + > +I also regression-tested the change with gcc-4.8 on Linux -- gcc-4.8 does > +not know either of the (gcc-8 specific) "-Wno-stringop-truncation" and > +"-Wno-restrict" options, yet the build completed fine (by GCC design). > + > +Regarding OSX, my expectation was that > + > +- XCODE5 / clang would either recognize these warnings options (because > + clang does recognize most -W options of gcc), > + > +- or, similarly to gcc, clang would simply ignore the "-Wno-xxx" flags > + that it didn't recognize. > + > +Neither is the case; the new flags have broken the BaseTools build on OSX. > +Revert them (for OSX only). > + > +Cc: Liming Gao <liming.gao@intel.com> > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > +Reported-by: Liming Gao <liming.gao@intel.com> > +Fixes: 1d212a83df0eaf32a6f5d4159beb2d77832e0231 > +Fixes: 9222154ae7b3eef75ae88cdb56158256227cb929 > +Contributed-under: TianoCore Contribution Agreement 1.1 > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > +Reviewed-by: Liming Gao <liming.gao@intel.com> > +Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > +--- > +Upstream-Status: Backport > + BaseTools/Source/C/Makefiles/header.makefile | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile > +index 3feae10095..6eefddb417 100644 > +--- a/BaseTools/Source/C/Makefiles/header.makefile > ++++ b/BaseTools/Source/C/Makefiles/header.makefile > +@@ -47,7 +47,7 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE > + BUILD_CPPFLAGS = $(INCLUDE) -O2 > + ifeq ($(DARWIN),Darwin) > + # assume clang or clang compatible flags on OS X > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g > + else > + BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g > + endif > +-- > +2.17.0 > + > diff --git a/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch > new file mode 100644 > index 0000000000..5fd4e9d573 > --- /dev/null > +++ b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch > @@ -0,0 +1,65 @@ > +From dfb42a5bff78d9239a80731e337855234badef3e Mon Sep 17 00:00:00 2001 > +From: Laszlo Ersek <lersek@redhat.com> > +Date: Fri, 2 Mar 2018 17:11:52 +0100 > +Subject: [PATCH 4/4] BaseTools/GenVtf: silence false "stringop-overflow" > + warning with memcpy() > + > +gcc-8 (which is part of Fedora 28) enables the new warning > +"-Wstringop-overflow" in "-Wall". This warning is documented in detail at > +<https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the > +introduction says > + > +> Warn for calls to string manipulation functions such as memcpy and > +> strcpy that are determined to overflow the destination buffer. > + > +It breaks the BaseTools build with: > + > +> GenVtf.c: In function 'ConvertVersionInfo': > +> GenVtf.c:132:7: error: 'strncpy' specified bound depends on the length > +> of the source argument [-Werror=stringop-overflow=] > +> strncpy (TemStr + 4 - Length, Str, Length); > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +> GenVtf.c:130:14: note: length computed here > +> Length = strlen(Str); > +> ^~~~~~~~~~~ > + > +It is a false positive because, while the bound equals the length of the > +source argument, the destination pointer is moved back towards the > +beginning of the destination buffer by the same amount (and this amount is > +range-checked first, so we can't precede the start of the dest buffer). > + > +Replace both strncpy() calls with memcpy(). > + > +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > +Cc: Cole Robinson <crobinso@redhat.com> > +Cc: Liming Gao <liming.gao@intel.com> > +Cc: Paolo Bonzini <pbonzini@redhat.com> > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > +Reported-by: Cole Robinson <crobinso@redhat.com> > +Contributed-under: TianoCore Contribution Agreement 1.1 > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > +Reviewed-by: Liming Gao <liming.gao@intel.com> > +--- > +Upstream-Status: Backport > + BaseTools/Source/C/GenVtf/GenVtf.c | 4 ++-- > + 1 file changed, 2 insertions(+), 2 deletions(-) > + > +diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c > +index 2ae9a7be2c..0cd33e71e9 100644 > +--- a/BaseTools/Source/C/GenVtf/GenVtf.c > ++++ b/BaseTools/Source/C/GenVtf/GenVtf.c > +@@ -129,9 +129,9 @@ Returns: > + } else { > + Length = strlen(Str); > + if (Length < 4) { > +- strncpy (TemStr + 4 - Length, Str, Length); > ++ memcpy (TemStr + 4 - Length, Str, Length); > + } else { > +- strncpy (TemStr, Str + Length - 4, 4); > ++ memcpy (TemStr, Str + Length - 4, 4); > + } > + > + sscanf ( > +-- > +2.17.0 > + > diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb > index 8750b3c528..212530acbf 100644 > --- a/meta/recipes-core/ovmf/ovmf_git.bb > +++ b/meta/recipes-core/ovmf/ovmf_git.bb > @@ -19,6 +19,10 @@ SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \ > file://0004-ovmf-enable-long-path-file.patch \ > file://VfrCompile-increase-path-length-limit.patch \ > file://no-stack-protector-all-archs.patch \ > + file://0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch \ > + file://0002-BaseTools-header.makefile-add-Wno-restrict.patch \ > + file://0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch \ > + file://0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch \ > " > UPSTREAM_VERSION_UNKNOWN = "1" > > -- > 2.17.0 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] ovmf: Fix build with gcc8 2018-05-17 10:17 ` Burton, Ross @ 2018-05-17 10:47 ` Martin Jansa 2018-05-17 15:30 ` Dan McGregor 2018-05-18 5:52 ` Khem Raj 2 siblings, 0 replies; 13+ messages in thread From: Martin Jansa @ 2018-05-17 10:47 UTC (permalink / raw) To: Burton, Ross; +Cc: OE-core [-- Attachment #1: Type: text/plain, Size: 19228 bytes --] On Thu, May 17, 2018 at 11:17:11AM +0100, Burton, Ross wrote: > Even when I pick from the branch instead of the mail, I suspect the > line endings are messed up and this won't apply. Can you > double-check? > > (I *hate* the ovmf recipe for this reason and am very tempted to just > run dos2unix over the tree after unpack!) meta-openembedded/meta-oe/classes/dos2unix.bbclass might help you do that automatically. > On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > --- > > ....makefile-add-Wno-stringop-truncatio.patch | 73 ++++++++++++ > > ...ols-header.makefile-add-Wno-restrict.patch | 104 ++++++++++++++++++ > > ....makefile-revert-gcc-8-Wno-xxx-optio.patch | 55 +++++++++ > > ...-silence-false-stringop-overflow-war.patch | 65 +++++++++++ > > meta/recipes-core/ovmf/ovmf_git.bb | 4 + > > 5 files changed, 301 insertions(+) > > create mode 100644 meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch > > create mode 100644 meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch > > create mode 100644 meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch > > create mode 100644 meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch > > > > diff --git a/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch > > new file mode 100644 > > index 0000000000..1d1679fe7e > > --- /dev/null > > +++ b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch > > @@ -0,0 +1,73 @@ > > +From 9fce4bab014b9aa618060eba13d6dd04b0fa1b70 Mon Sep 17 00:00:00 2001 > > +From: Laszlo Ersek <lersek@redhat.com> > > +Date: Fri, 2 Mar 2018 17:11:52 +0100 > > +Subject: [PATCH 1/4] BaseTools/header.makefile: add "-Wno-stringop-truncation" > > + > > +gcc-8 (which is part of Fedora 28) enables the new warning > > +"-Wstringop-truncation" in "-Wall". This warning is documented in detail > > +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the > > +introduction says > > + > > +> Warn for calls to bounded string manipulation functions such as strncat, > > +> strncpy, and stpncpy that may either truncate the copied string or leave > > +> the destination unchanged. > > + > > +It breaks the BaseTools build with: > > + > > +> EfiUtilityMsgs.c: In function 'PrintMessage': > > +> EfiUtilityMsgs.c:484:9: error: 'strncat' output may be truncated copying > > +> between 0 and 511 bytes from a string of length 511 > > +> [-Werror=stringop-truncation] > > +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); > > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > +> EfiUtilityMsgs.c:469:9: error: 'strncat' output may be truncated copying > > +> between 0 and 511 bytes from a string of length 511 > > +> [-Werror=stringop-truncation] > > +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); > > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > +> EfiUtilityMsgs.c:511:5: error: 'strncat' output may be truncated copying > > +> between 0 and 511 bytes from a string of length 511 > > +> [-Werror=stringop-truncation] > > +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); > > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > + > > +The right way to fix the warning would be to implement string concat with > > +snprintf(). However, Microsoft does not appear to support snprintf() > > +before VS2015 > > +<https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010>, > > +so we just have to shut up the warning. The strncat() calls flagged above > > +are valid BTW. > > + > > +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > +Cc: Cole Robinson <crobinso@redhat.com> > > +Cc: Liming Gao <liming.gao@intel.com> > > +Cc: Paolo Bonzini <pbonzini@redhat.com> > > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > > +Contributed-under: TianoCore Contribution Agreement 1.1 > > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > > +Reviewed-by: Liming Gao <liming.gao@intel.com> > > +--- > > +Upstream-Status: Backport > > + > > + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- > > + 1 file changed, 2 insertions(+), 2 deletions(-) > > + > > +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile > > +index 063982b82f..6c3826aecb 100644 > > +--- a/BaseTools/Source/C/Makefiles/header.makefile > > ++++ b/BaseTools/Source/C/Makefiles/header.makefile > > +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE > > + BUILD_CPPFLAGS = $(INCLUDE) -O2 > > + ifeq ($(DARWIN),Darwin) > > + # assume clang or clang compatible flags on OS X > > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g > > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g > > + else > > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-unused-result -nostdlib -c -g > > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g > > + endif > > + BUILD_LFLAGS = > > + BUILD_CXXFLAGS = -Wno-unused-result > > +-- > > +2.17.0 > > + > > diff --git a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch > > new file mode 100644 > > index 0000000000..4a25e230ce > > --- /dev/null > > +++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch > > @@ -0,0 +1,104 @@ > > +From 86dbdac5a25bd23deb4a0e0a97b527407e02184d Mon Sep 17 00:00:00 2001 > > +From: Laszlo Ersek <lersek@redhat.com> > > +Date: Fri, 2 Mar 2018 17:11:52 +0100 > > +Subject: [PATCH 2/4] BaseTools/header.makefile: add "-Wno-restrict" > > + > > +gcc-8 (which is part of Fedora 28) enables the new warning > > +"-Wrestrict" in "-Wall". This warning is documented in detail > > +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the > > +introduction says > > + > > +> Warn when an object referenced by a restrict-qualified parameter (or, in > > +> C++, a __restrict-qualified parameter) is aliased by another argument, > > +> or when copies between such objects overlap. > > + > > +It breaks the BaseTools build (in the Brotli compression library) with: > > + > > +> In function 'ProcessCommandsInternal', > > +> inlined from 'ProcessCommands' at dec/decode.c:1828:10: > > +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 > > +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at > > +> offset 16 [-Werror=restrict] > > +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); > > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > +> In function 'ProcessCommandsInternal', > > +> inlined from 'SafeProcessCommands' at dec/decode.c:1833:10: > > +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 > > +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at > > +> offset 16 [-Werror=restrict] > > +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); > > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > + > > +Paolo Bonzini <pbonzini@redhat.com> analyzed the Brotli source in detail, > > +and concluded that the warning is a false positive: > > + > > +> This seems safe to me, because it's preceded by: > > +> > > +> uint8_t* copy_dst = &s->ringbuffer[pos]; > > +> uint8_t* copy_src = &s->ringbuffer[src_start]; > > +> int dst_end = pos + i; > > +> int src_end = src_start + i; > > +> if (src_end > pos && dst_end > src_start) { > > +> /* Regions intersect. */ > > +> goto CommandPostWrapCopy; > > +> } > > +> > > +> If [src_start, src_start + i) and [pos, pos + i) don't intersect, then > > +> neither do [src_start + 16, src_start + i) and [pos + 16, pos + i). > > +> > > +> The if seems okay: > > +> > > +> (src_start + i > pos && pos + i > src_start) > > +> > > +> which can be rewritten to: > > +> > > +> (pos < src_start + i && src_start < pos + i) > > +> > > +> Then the numbers are in one of these two orders: > > +> > > +> pos <= src_start < pos + i <= src_start + i > > +> src_start <= pos < src_start + i <= pos + i > > +> > > +> These two would be allowed by the "if", but they can only happen if pos > > +> == src_start so they degenerate to the same two orders above: > > +> > > +> pos <= src_start < src_start + i <= pos + i > > +> src_start <= pos < pos + i <= src_start + i > > +> > > +> So it is a false positive in GCC. > > + > > +Disable the warning for now. > > + > > +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > +Cc: Cole Robinson <crobinso@redhat.com> > > +Cc: Liming Gao <liming.gao@intel.com> > > +Cc: Paolo Bonzini <pbonzini@redhat.com> > > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > > +Reported-by: Cole Robinson <crobinso@redhat.com> > > +Contributed-under: TianoCore Contribution Agreement 1.1 > > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > > +Reviewed-by: Liming Gao <liming.gao@intel.com> > > +--- > > +Upstream-Status: Backport > > + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- > > + 1 file changed, 2 insertions(+), 2 deletions(-) > > + > > +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile > > +index 6c3826aecb..3feae10095 100644 > > +--- a/BaseTools/Source/C/Makefiles/header.makefile > > ++++ b/BaseTools/Source/C/Makefiles/header.makefile > > +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE > > + BUILD_CPPFLAGS = $(INCLUDE) -O2 > > + ifeq ($(DARWIN),Darwin) > > + # assume clang or clang compatible flags on OS X > > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g > > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g > > + else > > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g > > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g > > + endif > > + BUILD_LFLAGS = > > + BUILD_CXXFLAGS = -Wno-unused-result > > +-- > > +2.17.0 > > + > > diff --git a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch > > new file mode 100644 > > index 0000000000..19f32e7cee > > --- /dev/null > > +++ b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch > > @@ -0,0 +1,55 @@ > > +From 6866325dd9c17412e555974dde41f9631224db52 Mon Sep 17 00:00:00 2001 > > +From: Laszlo Ersek <lersek@redhat.com> > > +Date: Wed, 7 Mar 2018 10:17:28 +0100 > > +Subject: [PATCH 3/4] BaseTools/header.makefile: revert gcc-8 "-Wno-xxx" > > + options on OSX > > + > > +I recently added the gcc-8 specific "-Wno-stringop-truncation" and > > +"-Wno-restrict" options to BUILD_CFLAGS, both for "Darwin" (XCODE5 / > > +clang, OSX) and otherwise (gcc, Linux / Cygwin). > > + > > +I also regression-tested the change with gcc-4.8 on Linux -- gcc-4.8 does > > +not know either of the (gcc-8 specific) "-Wno-stringop-truncation" and > > +"-Wno-restrict" options, yet the build completed fine (by GCC design). > > + > > +Regarding OSX, my expectation was that > > + > > +- XCODE5 / clang would either recognize these warnings options (because > > + clang does recognize most -W options of gcc), > > + > > +- or, similarly to gcc, clang would simply ignore the "-Wno-xxx" flags > > + that it didn't recognize. > > + > > +Neither is the case; the new flags have broken the BaseTools build on OSX. > > +Revert them (for OSX only). > > + > > +Cc: Liming Gao <liming.gao@intel.com> > > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > > +Reported-by: Liming Gao <liming.gao@intel.com> > > +Fixes: 1d212a83df0eaf32a6f5d4159beb2d77832e0231 > > +Fixes: 9222154ae7b3eef75ae88cdb56158256227cb929 > > +Contributed-under: TianoCore Contribution Agreement 1.1 > > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > > +Reviewed-by: Liming Gao <liming.gao@intel.com> > > +Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > +--- > > +Upstream-Status: Backport > > + BaseTools/Source/C/Makefiles/header.makefile | 2 +- > > + 1 file changed, 1 insertion(+), 1 deletion(-) > > + > > +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile > > +index 3feae10095..6eefddb417 100644 > > +--- a/BaseTools/Source/C/Makefiles/header.makefile > > ++++ b/BaseTools/Source/C/Makefiles/header.makefile > > +@@ -47,7 +47,7 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE > > + BUILD_CPPFLAGS = $(INCLUDE) -O2 > > + ifeq ($(DARWIN),Darwin) > > + # assume clang or clang compatible flags on OS X > > +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g > > ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g > > + else > > + BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g > > + endif > > +-- > > +2.17.0 > > + > > diff --git a/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch > > new file mode 100644 > > index 0000000000..5fd4e9d573 > > --- /dev/null > > +++ b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch > > @@ -0,0 +1,65 @@ > > +From dfb42a5bff78d9239a80731e337855234badef3e Mon Sep 17 00:00:00 2001 > > +From: Laszlo Ersek <lersek@redhat.com> > > +Date: Fri, 2 Mar 2018 17:11:52 +0100 > > +Subject: [PATCH 4/4] BaseTools/GenVtf: silence false "stringop-overflow" > > + warning with memcpy() > > + > > +gcc-8 (which is part of Fedora 28) enables the new warning > > +"-Wstringop-overflow" in "-Wall". This warning is documented in detail at > > +<https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the > > +introduction says > > + > > +> Warn for calls to string manipulation functions such as memcpy and > > +> strcpy that are determined to overflow the destination buffer. > > + > > +It breaks the BaseTools build with: > > + > > +> GenVtf.c: In function 'ConvertVersionInfo': > > +> GenVtf.c:132:7: error: 'strncpy' specified bound depends on the length > > +> of the source argument [-Werror=stringop-overflow=] > > +> strncpy (TemStr + 4 - Length, Str, Length); > > +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > +> GenVtf.c:130:14: note: length computed here > > +> Length = strlen(Str); > > +> ^~~~~~~~~~~ > > + > > +It is a false positive because, while the bound equals the length of the > > +source argument, the destination pointer is moved back towards the > > +beginning of the destination buffer by the same amount (and this amount is > > +range-checked first, so we can't precede the start of the dest buffer). > > + > > +Replace both strncpy() calls with memcpy(). > > + > > +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > +Cc: Cole Robinson <crobinso@redhat.com> > > +Cc: Liming Gao <liming.gao@intel.com> > > +Cc: Paolo Bonzini <pbonzini@redhat.com> > > +Cc: Yonghong Zhu <yonghong.zhu@intel.com> > > +Reported-by: Cole Robinson <crobinso@redhat.com> > > +Contributed-under: TianoCore Contribution Agreement 1.1 > > +Signed-off-by: Laszlo Ersek <lersek@redhat.com> > > +Reviewed-by: Liming Gao <liming.gao@intel.com> > > +--- > > +Upstream-Status: Backport > > + BaseTools/Source/C/GenVtf/GenVtf.c | 4 ++-- > > + 1 file changed, 2 insertions(+), 2 deletions(-) > > + > > +diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c > > +index 2ae9a7be2c..0cd33e71e9 100644 > > +--- a/BaseTools/Source/C/GenVtf/GenVtf.c > > ++++ b/BaseTools/Source/C/GenVtf/GenVtf.c > > +@@ -129,9 +129,9 @@ Returns: > > + } else { > > + Length = strlen(Str); > > + if (Length < 4) { > > +- strncpy (TemStr + 4 - Length, Str, Length); > > ++ memcpy (TemStr + 4 - Length, Str, Length); > > + } else { > > +- strncpy (TemStr, Str + Length - 4, 4); > > ++ memcpy (TemStr, Str + Length - 4, 4); > > + } > > + > > + sscanf ( > > +-- > > +2.17.0 > > + > > diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb > > index 8750b3c528..212530acbf 100644 > > --- a/meta/recipes-core/ovmf/ovmf_git.bb > > +++ b/meta/recipes-core/ovmf/ovmf_git.bb > > @@ -19,6 +19,10 @@ SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \ > > file://0004-ovmf-enable-long-path-file.patch \ > > file://VfrCompile-increase-path-length-limit.patch \ > > file://no-stack-protector-all-archs.patch \ > > + file://0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch \ > > + file://0002-BaseTools-header.makefile-add-Wno-restrict.patch \ > > + file://0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch \ > > + file://0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch \ > > " > > UPSTREAM_VERSION_UNKNOWN = "1" > > > > -- > > 2.17.0 > > > > -- > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.openembedded.org/mailman/listinfo/openembedded-core > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 201 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] ovmf: Fix build with gcc8 2018-05-17 10:17 ` Burton, Ross 2018-05-17 10:47 ` Martin Jansa @ 2018-05-17 15:30 ` Dan McGregor 2018-05-18 5:52 ` Khem Raj 2 siblings, 0 replies; 13+ messages in thread From: Dan McGregor @ 2018-05-17 15:30 UTC (permalink / raw) To: Burton, Ross; +Cc: OE-core On 17 May 2018 at 04:17, Burton, Ross <ross.burton@intel.com> wrote: > Even when I pick from the branch instead of the mail, I suspect the > line endings are messed up and this won't apply. Can you > double-check? > > (I *hate* the ovmf recipe for this reason and am very tempted to just > run dos2unix over the tree after unpack!) I was tempted last week to set the text=auto property in a .gitattributes file in the udk2 repository and submit it upstream for exactly that reason. > > Ross > > On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: >> Signed-off-by: Khem Raj <raj.khem@gmail.com> >> --- >> ....makefile-add-Wno-stringop-truncatio.patch | 73 ++++++++++++ >> ...ols-header.makefile-add-Wno-restrict.patch | 104 ++++++++++++++++++ >> ....makefile-revert-gcc-8-Wno-xxx-optio.patch | 55 +++++++++ >> ...-silence-false-stringop-overflow-war.patch | 65 +++++++++++ >> meta/recipes-core/ovmf/ovmf_git.bb | 4 + >> 5 files changed, 301 insertions(+) >> create mode 100644 meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch >> create mode 100644 meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch >> create mode 100644 meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch >> create mode 100644 meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch >> >> diff --git a/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch >> new file mode 100644 >> index 0000000000..1d1679fe7e >> --- /dev/null >> +++ b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch >> @@ -0,0 +1,73 @@ >> +From 9fce4bab014b9aa618060eba13d6dd04b0fa1b70 Mon Sep 17 00:00:00 2001 >> +From: Laszlo Ersek <lersek@redhat.com> >> +Date: Fri, 2 Mar 2018 17:11:52 +0100 >> +Subject: [PATCH 1/4] BaseTools/header.makefile: add "-Wno-stringop-truncation" >> + >> +gcc-8 (which is part of Fedora 28) enables the new warning >> +"-Wstringop-truncation" in "-Wall". This warning is documented in detail >> +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the >> +introduction says >> + >> +> Warn for calls to bounded string manipulation functions such as strncat, >> +> strncpy, and stpncpy that may either truncate the copied string or leave >> +> the destination unchanged. >> + >> +It breaks the BaseTools build with: >> + >> +> EfiUtilityMsgs.c: In function 'PrintMessage': >> +> EfiUtilityMsgs.c:484:9: error: 'strncat' output may be truncated copying >> +> between 0 and 511 bytes from a string of length 511 >> +> [-Werror=stringop-truncation] >> +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); >> +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> +> EfiUtilityMsgs.c:469:9: error: 'strncat' output may be truncated copying >> +> between 0 and 511 bytes from a string of length 511 >> +> [-Werror=stringop-truncation] >> +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); >> +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> +> EfiUtilityMsgs.c:511:5: error: 'strncat' output may be truncated copying >> +> between 0 and 511 bytes from a string of length 511 >> +> [-Werror=stringop-truncation] >> +> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1); >> +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> + >> +The right way to fix the warning would be to implement string concat with >> +snprintf(). However, Microsoft does not appear to support snprintf() >> +before VS2015 >> +<https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010>, >> +so we just have to shut up the warning. The strncat() calls flagged above >> +are valid BTW. >> + >> +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> +Cc: Cole Robinson <crobinso@redhat.com> >> +Cc: Liming Gao <liming.gao@intel.com> >> +Cc: Paolo Bonzini <pbonzini@redhat.com> >> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> >> +Contributed-under: TianoCore Contribution Agreement 1.1 >> +Signed-off-by: Laszlo Ersek <lersek@redhat.com> >> +Reviewed-by: Liming Gao <liming.gao@intel.com> >> +--- >> +Upstream-Status: Backport >> + >> + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- >> + 1 file changed, 2 insertions(+), 2 deletions(-) >> + >> +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile >> +index 063982b82f..6c3826aecb 100644 >> +--- a/BaseTools/Source/C/Makefiles/header.makefile >> ++++ b/BaseTools/Source/C/Makefiles/header.makefile >> +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE >> + BUILD_CPPFLAGS = $(INCLUDE) -O2 >> + ifeq ($(DARWIN),Darwin) >> + # assume clang or clang compatible flags on OS X >> +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g >> ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g >> + else >> +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-unused-result -nostdlib -c -g >> ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g >> + endif >> + BUILD_LFLAGS = >> + BUILD_CXXFLAGS = -Wno-unused-result >> +-- >> +2.17.0 >> + >> diff --git a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch >> new file mode 100644 >> index 0000000000..4a25e230ce >> --- /dev/null >> +++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch >> @@ -0,0 +1,104 @@ >> +From 86dbdac5a25bd23deb4a0e0a97b527407e02184d Mon Sep 17 00:00:00 2001 >> +From: Laszlo Ersek <lersek@redhat.com> >> +Date: Fri, 2 Mar 2018 17:11:52 +0100 >> +Subject: [PATCH 2/4] BaseTools/header.makefile: add "-Wno-restrict" >> + >> +gcc-8 (which is part of Fedora 28) enables the new warning >> +"-Wrestrict" in "-Wall". This warning is documented in detail >> +at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the >> +introduction says >> + >> +> Warn when an object referenced by a restrict-qualified parameter (or, in >> +> C++, a __restrict-qualified parameter) is aliased by another argument, >> +> or when copies between such objects overlap. >> + >> +It breaks the BaseTools build (in the Brotli compression library) with: >> + >> +> In function 'ProcessCommandsInternal', >> +> inlined from 'ProcessCommands' at dec/decode.c:1828:10: >> +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 >> +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at >> +> offset 16 [-Werror=restrict] >> +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); >> +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> +> In function 'ProcessCommandsInternal', >> +> inlined from 'SafeProcessCommands' at dec/decode.c:1833:10: >> +> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631 >> +> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at >> +> offset 16 [-Werror=restrict] >> +> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16)); >> +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> + >> +Paolo Bonzini <pbonzini@redhat.com> analyzed the Brotli source in detail, >> +and concluded that the warning is a false positive: >> + >> +> This seems safe to me, because it's preceded by: >> +> >> +> uint8_t* copy_dst = &s->ringbuffer[pos]; >> +> uint8_t* copy_src = &s->ringbuffer[src_start]; >> +> int dst_end = pos + i; >> +> int src_end = src_start + i; >> +> if (src_end > pos && dst_end > src_start) { >> +> /* Regions intersect. */ >> +> goto CommandPostWrapCopy; >> +> } >> +> >> +> If [src_start, src_start + i) and [pos, pos + i) don't intersect, then >> +> neither do [src_start + 16, src_start + i) and [pos + 16, pos + i). >> +> >> +> The if seems okay: >> +> >> +> (src_start + i > pos && pos + i > src_start) >> +> >> +> which can be rewritten to: >> +> >> +> (pos < src_start + i && src_start < pos + i) >> +> >> +> Then the numbers are in one of these two orders: >> +> >> +> pos <= src_start < pos + i <= src_start + i >> +> src_start <= pos < src_start + i <= pos + i >> +> >> +> These two would be allowed by the "if", but they can only happen if pos >> +> == src_start so they degenerate to the same two orders above: >> +> >> +> pos <= src_start < src_start + i <= pos + i >> +> src_start <= pos < pos + i <= src_start + i >> +> >> +> So it is a false positive in GCC. >> + >> +Disable the warning for now. >> + >> +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> +Cc: Cole Robinson <crobinso@redhat.com> >> +Cc: Liming Gao <liming.gao@intel.com> >> +Cc: Paolo Bonzini <pbonzini@redhat.com> >> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> >> +Reported-by: Cole Robinson <crobinso@redhat.com> >> +Contributed-under: TianoCore Contribution Agreement 1.1 >> +Signed-off-by: Laszlo Ersek <lersek@redhat.com> >> +Reviewed-by: Liming Gao <liming.gao@intel.com> >> +--- >> +Upstream-Status: Backport >> + BaseTools/Source/C/Makefiles/header.makefile | 4 ++-- >> + 1 file changed, 2 insertions(+), 2 deletions(-) >> + >> +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile >> +index 6c3826aecb..3feae10095 100644 >> +--- a/BaseTools/Source/C/Makefiles/header.makefile >> ++++ b/BaseTools/Source/C/Makefiles/header.makefile >> +@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE >> + BUILD_CPPFLAGS = $(INCLUDE) -O2 >> + ifeq ($(DARWIN),Darwin) >> + # assume clang or clang compatible flags on OS X >> +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g >> ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g >> + else >> +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g >> ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g >> + endif >> + BUILD_LFLAGS = >> + BUILD_CXXFLAGS = -Wno-unused-result >> +-- >> +2.17.0 >> + >> diff --git a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch >> new file mode 100644 >> index 0000000000..19f32e7cee >> --- /dev/null >> +++ b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch >> @@ -0,0 +1,55 @@ >> +From 6866325dd9c17412e555974dde41f9631224db52 Mon Sep 17 00:00:00 2001 >> +From: Laszlo Ersek <lersek@redhat.com> >> +Date: Wed, 7 Mar 2018 10:17:28 +0100 >> +Subject: [PATCH 3/4] BaseTools/header.makefile: revert gcc-8 "-Wno-xxx" >> + options on OSX >> + >> +I recently added the gcc-8 specific "-Wno-stringop-truncation" and >> +"-Wno-restrict" options to BUILD_CFLAGS, both for "Darwin" (XCODE5 / >> +clang, OSX) and otherwise (gcc, Linux / Cygwin). >> + >> +I also regression-tested the change with gcc-4.8 on Linux -- gcc-4.8 does >> +not know either of the (gcc-8 specific) "-Wno-stringop-truncation" and >> +"-Wno-restrict" options, yet the build completed fine (by GCC design). >> + >> +Regarding OSX, my expectation was that >> + >> +- XCODE5 / clang would either recognize these warnings options (because >> + clang does recognize most -W options of gcc), >> + >> +- or, similarly to gcc, clang would simply ignore the "-Wno-xxx" flags >> + that it didn't recognize. >> + >> +Neither is the case; the new flags have broken the BaseTools build on OSX. >> +Revert them (for OSX only). >> + >> +Cc: Liming Gao <liming.gao@intel.com> >> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> >> +Reported-by: Liming Gao <liming.gao@intel.com> >> +Fixes: 1d212a83df0eaf32a6f5d4159beb2d77832e0231 >> +Fixes: 9222154ae7b3eef75ae88cdb56158256227cb929 >> +Contributed-under: TianoCore Contribution Agreement 1.1 >> +Signed-off-by: Laszlo Ersek <lersek@redhat.com> >> +Reviewed-by: Liming Gao <liming.gao@intel.com> >> +Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> +--- >> +Upstream-Status: Backport >> + BaseTools/Source/C/Makefiles/header.makefile | 2 +- >> + 1 file changed, 1 insertion(+), 1 deletion(-) >> + >> +diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile >> +index 3feae10095..6eefddb417 100644 >> +--- a/BaseTools/Source/C/Makefiles/header.makefile >> ++++ b/BaseTools/Source/C/Makefiles/header.makefile >> +@@ -47,7 +47,7 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKE >> + BUILD_CPPFLAGS = $(INCLUDE) -O2 >> + ifeq ($(DARWIN),Darwin) >> + # assume clang or clang compatible flags on OS X >> +-BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g >> ++BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g >> + else >> + BUILD_CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g >> + endif >> +-- >> +2.17.0 >> + >> diff --git a/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch >> new file mode 100644 >> index 0000000000..5fd4e9d573 >> --- /dev/null >> +++ b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch >> @@ -0,0 +1,65 @@ >> +From dfb42a5bff78d9239a80731e337855234badef3e Mon Sep 17 00:00:00 2001 >> +From: Laszlo Ersek <lersek@redhat.com> >> +Date: Fri, 2 Mar 2018 17:11:52 +0100 >> +Subject: [PATCH 4/4] BaseTools/GenVtf: silence false "stringop-overflow" >> + warning with memcpy() >> + >> +gcc-8 (which is part of Fedora 28) enables the new warning >> +"-Wstringop-overflow" in "-Wall". This warning is documented in detail at >> +<https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the >> +introduction says >> + >> +> Warn for calls to string manipulation functions such as memcpy and >> +> strcpy that are determined to overflow the destination buffer. >> + >> +It breaks the BaseTools build with: >> + >> +> GenVtf.c: In function 'ConvertVersionInfo': >> +> GenVtf.c:132:7: error: 'strncpy' specified bound depends on the length >> +> of the source argument [-Werror=stringop-overflow=] >> +> strncpy (TemStr + 4 - Length, Str, Length); >> +> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> +> GenVtf.c:130:14: note: length computed here >> +> Length = strlen(Str); >> +> ^~~~~~~~~~~ >> + >> +It is a false positive because, while the bound equals the length of the >> +source argument, the destination pointer is moved back towards the >> +beginning of the destination buffer by the same amount (and this amount is >> +range-checked first, so we can't precede the start of the dest buffer). >> + >> +Replace both strncpy() calls with memcpy(). >> + >> +Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> +Cc: Cole Robinson <crobinso@redhat.com> >> +Cc: Liming Gao <liming.gao@intel.com> >> +Cc: Paolo Bonzini <pbonzini@redhat.com> >> +Cc: Yonghong Zhu <yonghong.zhu@intel.com> >> +Reported-by: Cole Robinson <crobinso@redhat.com> >> +Contributed-under: TianoCore Contribution Agreement 1.1 >> +Signed-off-by: Laszlo Ersek <lersek@redhat.com> >> +Reviewed-by: Liming Gao <liming.gao@intel.com> >> +--- >> +Upstream-Status: Backport >> + BaseTools/Source/C/GenVtf/GenVtf.c | 4 ++-- >> + 1 file changed, 2 insertions(+), 2 deletions(-) >> + >> +diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c >> +index 2ae9a7be2c..0cd33e71e9 100644 >> +--- a/BaseTools/Source/C/GenVtf/GenVtf.c >> ++++ b/BaseTools/Source/C/GenVtf/GenVtf.c >> +@@ -129,9 +129,9 @@ Returns: >> + } else { >> + Length = strlen(Str); >> + if (Length < 4) { >> +- strncpy (TemStr + 4 - Length, Str, Length); >> ++ memcpy (TemStr + 4 - Length, Str, Length); >> + } else { >> +- strncpy (TemStr, Str + Length - 4, 4); >> ++ memcpy (TemStr, Str + Length - 4, 4); >> + } >> + >> + sscanf ( >> +-- >> +2.17.0 >> + >> diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb >> index 8750b3c528..212530acbf 100644 >> --- a/meta/recipes-core/ovmf/ovmf_git.bb >> +++ b/meta/recipes-core/ovmf/ovmf_git.bb >> @@ -19,6 +19,10 @@ SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \ >> file://0004-ovmf-enable-long-path-file.patch \ >> file://VfrCompile-increase-path-length-limit.patch \ >> file://no-stack-protector-all-archs.patch \ >> + file://0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch \ >> + file://0002-BaseTools-header.makefile-add-Wno-restrict.patch \ >> + file://0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch \ >> + file://0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch \ >> " >> UPSTREAM_VERSION_UNKNOWN = "1" >> >> -- >> 2.17.0 >> >> -- >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.openembedded.org/mailman/listinfo/openembedded-core > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] ovmf: Fix build with gcc8 2018-05-17 10:17 ` Burton, Ross 2018-05-17 10:47 ` Martin Jansa 2018-05-17 15:30 ` Dan McGregor @ 2018-05-18 5:52 ` Khem Raj 2 siblings, 0 replies; 13+ messages in thread From: Khem Raj @ 2018-05-18 5:52 UTC (permalink / raw) To: Burton, Ross; +Cc: OE-core On 5/17/18 3:17 AM, Burton, Ross wrote: > Even when I pick from the branch instead of the mail, I suspect the > line endings are messed up and this won't apply. Can you > double-check? > > (I *hate* the ovmf recipe for this reason and am very tempted to just > run dos2unix over the tree after unpack!) I have updated the patches which hopefully should make quilt happier http://git.openembedded.org/openembedded-core-contrib/commit/?h=kraj/master&id=be616a0b6c3decc06f2acbf27f47ebb58d32aa90 Thanks -Khem ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/4] musl: Make dev package rdep on staticdev 2018-05-16 6:31 [PATCH 0/4] gdb upgrade and misc fixes to enable gcc8 Khem Raj ` (2 preceding siblings ...) 2018-05-16 6:32 ` [PATCH 3/4] ovmf: " Khem Raj @ 2018-05-16 6:32 ` Khem Raj 2018-05-16 11:09 ` Burton, Ross 3 siblings, 1 reply; 13+ messages in thread From: Khem Raj @ 2018-05-16 6:32 UTC (permalink / raw) To: openembedded-core This is needed for enabling static linking with SDK Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/recipes-core/musl/musl_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb index a0a098f5b4..d7d201df9d 100644 --- a/meta/recipes-core/musl/musl_git.bb +++ b/meta/recipes-core/musl/musl_git.bb @@ -66,7 +66,7 @@ do_install() { done } -RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" +RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev ${PN}-staticdev" RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)" -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] musl: Make dev package rdep on staticdev 2018-05-16 6:32 ` [PATCH 4/4] musl: Make dev package rdep on staticdev Khem Raj @ 2018-05-16 11:09 ` Burton, Ross 2018-05-16 13:32 ` Khem Raj 0 siblings, 1 reply; 13+ messages in thread From: Burton, Ross @ 2018-05-16 11:09 UTC (permalink / raw) To: Khem Raj; +Cc: OE-core Surely if you want to support static linking in the SDK, you just need to add staticdev-pkgs to the SDKIMAGE_FEATURES? Ross On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: > This is needed for enabling static linking with SDK > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > meta/recipes-core/musl/musl_git.bb | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb > index a0a098f5b4..d7d201df9d 100644 > --- a/meta/recipes-core/musl/musl_git.bb > +++ b/meta/recipes-core/musl/musl_git.bb > @@ -66,7 +66,7 @@ do_install() { > done > } > > -RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" > +RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev ${PN}-staticdev" > RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" > RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)" > > -- > 2.17.0 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] musl: Make dev package rdep on staticdev 2018-05-16 11:09 ` Burton, Ross @ 2018-05-16 13:32 ` Khem Raj 2018-05-16 14:38 ` Burton, Ross 0 siblings, 1 reply; 13+ messages in thread From: Khem Raj @ 2018-05-16 13:32 UTC (permalink / raw) To: Burton, Ross; +Cc: OE-core On Wed, May 16, 2018 at 4:09 AM, Burton, Ross <ross.burton@intel.com> wrote: > Surely if you want to support static linking in the SDK, you just need > to add staticdev-pkgs to the SDKIMAGE_FEATURES? > In some usecase, compiler runtime and c library is only required everything else is external. Adding whole staticdev bundle would conflict with that > Ross > > On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: >> This is needed for enabling static linking with SDK >> >> Signed-off-by: Khem Raj <raj.khem@gmail.com> >> --- >> meta/recipes-core/musl/musl_git.bb | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb >> index a0a098f5b4..d7d201df9d 100644 >> --- a/meta/recipes-core/musl/musl_git.bb >> +++ b/meta/recipes-core/musl/musl_git.bb >> @@ -66,7 +66,7 @@ do_install() { >> done >> } >> >> -RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" >> +RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev ${PN}-staticdev" >> RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" >> RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)" >> >> -- >> 2.17.0 >> >> -- >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] musl: Make dev package rdep on staticdev 2018-05-16 13:32 ` Khem Raj @ 2018-05-16 14:38 ` Burton, Ross 2018-05-16 15:04 ` Khem Raj 0 siblings, 1 reply; 13+ messages in thread From: Burton, Ross @ 2018-05-16 14:38 UTC (permalink / raw) To: Khem Raj; +Cc: OE-core Surely in that usecase you can add musl-staticdev yourself? Forcing it into every SDK seems wasteful. Ross On 16 May 2018 at 14:32, Khem Raj <raj.khem@gmail.com> wrote: > On Wed, May 16, 2018 at 4:09 AM, Burton, Ross <ross.burton@intel.com> wrote: >> Surely if you want to support static linking in the SDK, you just need >> to add staticdev-pkgs to the SDKIMAGE_FEATURES? >> > > In some usecase, compiler runtime and c library is only required everything > else is external. Adding whole staticdev bundle would conflict with that > >> Ross >> >> On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: >>> This is needed for enabling static linking with SDK >>> >>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>> --- >>> meta/recipes-core/musl/musl_git.bb | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb >>> index a0a098f5b4..d7d201df9d 100644 >>> --- a/meta/recipes-core/musl/musl_git.bb >>> +++ b/meta/recipes-core/musl/musl_git.bb >>> @@ -66,7 +66,7 @@ do_install() { >>> done >>> } >>> >>> -RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" >>> +RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev ${PN}-staticdev" >>> RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" >>> RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)" >>> >>> -- >>> 2.17.0 >>> >>> -- >>> _______________________________________________ >>> Openembedded-core mailing list >>> Openembedded-core@lists.openembedded.org >>> http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] musl: Make dev package rdep on staticdev 2018-05-16 14:38 ` Burton, Ross @ 2018-05-16 15:04 ` Khem Raj 0 siblings, 0 replies; 13+ messages in thread From: Khem Raj @ 2018-05-16 15:04 UTC (permalink / raw) To: Burton, Ross; +Cc: OE-core On Wed, May 16, 2018 at 7:38 AM, Burton, Ross <ross.burton@intel.com> wrote: > Surely in that usecase you can add musl-staticdev yourself? Forcing > it into every SDK seems wasteful. > I guess thats a fair argument I can accept it. Please ignore this patch then > Ross > > On 16 May 2018 at 14:32, Khem Raj <raj.khem@gmail.com> wrote: >> On Wed, May 16, 2018 at 4:09 AM, Burton, Ross <ross.burton@intel.com> wrote: >>> Surely if you want to support static linking in the SDK, you just need >>> to add staticdev-pkgs to the SDKIMAGE_FEATURES? >>> >> >> In some usecase, compiler runtime and c library is only required everything >> else is external. Adding whole staticdev bundle would conflict with that >> >>> Ross >>> >>> On 16 May 2018 at 07:32, Khem Raj <raj.khem@gmail.com> wrote: >>>> This is needed for enabling static linking with SDK >>>> >>>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>>> --- >>>> meta/recipes-core/musl/musl_git.bb | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb >>>> index a0a098f5b4..d7d201df9d 100644 >>>> --- a/meta/recipes-core/musl/musl_git.bb >>>> +++ b/meta/recipes-core/musl/musl_git.bb >>>> @@ -66,7 +66,7 @@ do_install() { >>>> done >>>> } >>>> >>>> -RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" >>>> +RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev ${PN}-staticdev" >>>> RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev" >>>> RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)" >>>> >>>> -- >>>> 2.17.0 >>>> >>>> -- >>>> _______________________________________________ >>>> Openembedded-core mailing list >>>> Openembedded-core@lists.openembedded.org >>>> http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-05-18 5:52 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-05-16 6:31 [PATCH 0/4] gdb upgrade and misc fixes to enable gcc8 Khem Raj 2018-05-16 6:32 ` [PATCH 1/4] gdb: Upgrade to 8.1 release Khem Raj 2018-05-16 6:32 ` [PATCH 2/4] python2: Fix build with gcc8 Khem Raj 2018-05-16 6:32 ` [PATCH 3/4] ovmf: " Khem Raj 2018-05-17 10:17 ` Burton, Ross 2018-05-17 10:47 ` Martin Jansa 2018-05-17 15:30 ` Dan McGregor 2018-05-18 5:52 ` Khem Raj 2018-05-16 6:32 ` [PATCH 4/4] musl: Make dev package rdep on staticdev Khem Raj 2018-05-16 11:09 ` Burton, Ross 2018-05-16 13:32 ` Khem Raj 2018-05-16 14:38 ` Burton, Ross 2018-05-16 15:04 ` Khem Raj
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.