subtree updates

meta-openembedded: f3018013ff..3b245e4fe8:
  Adrian Bunk (8):
        Remove start-stop-daemon
        dvb-apps: Remove workaround patch for ancient target compilers
        Remove ipsec-tools and umip
        gpsd: Switch PACKAGECONFIG[qt] from Qt4 to Qt5
        samba: Upgrade 4.8.11 -> 4.8.12
        recipes-devtools: Move back from meta-networking to meta-perl
        wireless-regdb: Upgrade 2019.03.01 -> 2019.06.03
        mcelog: Remove manual RDEPENDS from PN-ptest to PN package

  Alejandro del Castillo (1):
        apache2: add all extra/*.conf to conffiles

  Alistair Francis (1):
        python-obd: Uprade from 0.7.0 to 0.7.1

  Andreas Müller (1):
        python-six: put python2/3 variant together

  Andrei Gherzan (2):
        modemmanager: Update to 1.10.0
        networkmanager: Update to 1.18.0

  Ankit Navik (1):
        safec: Initial recipe for safe C library

  Carlos Rafael Giani (1):
        openh264: Fix armv7ve build

  Changqing Li (11):
        syslog-ng: add rconflict for package syslog-ng-libs
        netkit-telnet: add rconflicts
        samba/libldb: add rconflicts
        php-fpm-apache: fix module path
        phoronix-test-suite: upgrade from 8.6.0 -> 8.8.1
        python-pygobject: upgrade 3.28.3 -> 3.32.1
        rrdtool: upgrade 1.7.1 -> 1.7.2
        php: upgrade 7.3.4 -> 7.3.6
        xf86-video-ati: upgrade 18.0.1 -> 19.0.1
        pavucontrol: upgrade 3.0 -> 4.0
        multipath-tools: upgrade 0.8.0 -> 0.8.1

  Herman van Hazendonk (1):
        Geoclue: Update to 2.5.3

  Hongxu Jia (4):
        rrdtool: improve reproducibility
        crash: do not use unstable github archive tarballs
        postgresql: improve reproducibility
        net-snmp: split net-snmp-config to package net-snmp-dev

  Hongzhi.Song (1):
        spice: fix compile errors on 32bit system

  Horvath, Chris (1):
        lcov: Upgrade 1.11 -> 1.14

  James Feist (1):
        libgpiod: Enable cxx bindings by default

  Kai Kang (16):
        xfce4-session: 4.13.1 -> 4.13.2
        xfce4-screensaver: add recipe
        packagegroup-xfce-extended: add xfce4-screensaver
        lxdm: provides fake gdmflexiserver for xfce desktop environment
        thunar: 1.8.4 -> 1.8.6
        xfdesktop: 4.13.3 -> 4.13.4
        xfce4-panel: 4.13.4 -> 4.13.5
        thunar-volman: 0.9.1 -> 0.9.2
        xfce4-appfinder: 4.13.2 -> 4.13.3
        libxfce4util: 4.13.2 -> 4.13.3
        xfwm4: 4.13.1 -> 4.13.2
        xfconf: 4.13.6 -> 4.13.7
        libxfce4ui: 4.13.4 -> 4.13.5
        xfce4-power-manager: 1.6.1 -> 1.6.2
        xfce4-settings: set default theme Adwaita
        lxdm: provides fake gdmflexiserver for xfce desktop environment

  Khem Raj (8):
        libnfc: Fix build with musl
        openocd: Fix build on x86_64
        spice,spice-protocol: Uprev to 0.14.0
        udisks: Install bash_completion script in OE familiar dir
        udisks: Remove bash dependency
        python-jsmin,python-pytoml,python-which: Add recipes
        mozjs: Upgrade to version 60.x
        polkit: Upgrade to 0.116

  Liwei Song (1):
        turbostat: copy bits.h from kernel to turbostat

  Marek Belisko (1):
        libsrtp: Fix compilation and add pkgconfig

  Martin Jansa (17):
        igmpproxy: remove 0001-src-igmpproxy.h-Include-sys-types.h-for-u_short-u_in.patch and _GNU_SOURCE
        ne10, libopus: add armv7ve override as well
        pidgin: upgrade to 2.13.0
        funyahoo-plusplus, icyque, pidgin-sipe, purple-skypeweb: add couple plugins for pidgin
        hunspell: use git fetcher instead of github archive
        hunspell-dictionaries: import from meta-luneos to make hunspell in meta-oe a bit more useful
        ttf-mplus, ttf-vlgothic: add ttf-mplus license
        android-tools-conf: import one more improvement for android-gadget-setup from meta-luneos
        uriparser: upgrade to 0.9.3
        libmikmod: fix SRC_URI
        leptonica: fix SRC_URI
        libmikmod: upgrade to 3.3.11.1
        open-vm-tools: refresh the patches so that they can be easily applied with devtool or git am
        open-vm-tools: import gcc9 fixes from fedora
        spice: append to CFLAGS instead of +=
        cpprest: temporary ignore deprecated-copy and redundant-move errors detected by gcc9
        oprofile: drop virtual/kernel dependency and switch back to TUNE_PKGARCH

  Mingli Yu (4):
        mariadb: Upgrade to 10.3.15
        kea: Upgrade to 1.5.0
        hwloc: Upgrade to 1.11.12
        kea: replace -Og with -O

  Naveen Saini (1):
        pm-graph: add recipe

  Oleksandr Kravchuk (12):
        opensaf: update to 5.19.03
        python-ldap: update to 3.2.0
        rp-pppoe: update to 3.13
        atftp: update to 0.7.2
        ipcalc: update to 2.2.3
        mtr: update to 0.92
        nbd: update to 3.19
        mdns: update to 878.200.35
        lldpd: update to 1.0.3
        libp11: update to 0.4.10
        nano: update to 4.2
        libspatialite: update to 4.3.0a

  Ovidiu Panait (1):
        xfsprogs: Fix host contamination

  Paolo Valente (1):
        s-suite: push SRCREV to version 3.4

  Pascal Bach (1):
        rocksdb: 5.18.3 -> 6.0.2

  Qi.Chen@windriver.com (2):
        polkit: fix CVE-2019-6133
        .gitignore: add *.pyc and *.pyo

  Randy MacLeod (1):
        imagemagick: update from 7.0.8-43 to 7.0.8-47

  Robert Joslyn (4):
        cryptsetup: Add PACKAGECONFIG options
        lmsensors: Update to 3.5.0
        xfce4-session: Add xrdb RDEPENDS
        xfce4-session: Reformat DEPENDS and RDEPENDS

  Slater, Joseph (1):
        php-7: mark two tests as expected to fail

  Stefan Agner (1):
        haveged: fix CPU cache size detection

  Tim Orling (13):
        libterm-readkey-perl: upgrade 2.37 -> 2.38; fix upstream check; enable ptest
        libtest-deep-perl: add recipe for v1.128
        libcgi-perl: upgrade 4.38 -> 4.43; enable ptest
        libcrypt-openssl-guess-perl: rename from libcrypt-openssl-guess; enable ptest
        libcrypt-openssl-rsa-perl: upgrade 0.30 -> 0.31; enable ptest
        libcrypt-openssl-random-perl: upgrade 0.11 -> 0.15; enable ptest
        libextutils-installpaths-perl: upgrade 0.011 -> 0.012; enable ptest
        libexutils-config-perl: enable ptest
        libhtml-tagset-perl: add recipe for v3.20
        libhtml-parser-perl: enable ptest
        libstrictures-perl: upgrade 2.000003 -> 2.000006; enable ptest
        libxml-libxml-perl: enable ptest
        libcapture-tiny-perl: upgrade 0.46 -> 0.48; enable ptest

  William A. Kennington III via Openembedded-devel (1):
        cli11: 1.6.2 -> 1.7.1

  Yi Zhao (8):
        python-ldap: add python-pyasn1 and python-pyasn1-modules as runtime dependencies
        fuse: upgrade 2.9.8 -> 2.9.9
        yaffs2-utils: update to latest master
        xfsprogs: upgrade 4.18.0 -> 5.0.0
        fcgi: upgrade 2.4.1+git -> 2.4.2
        xdebug: upgrade 2.7.0RC2 -> 2.7.2
        phpmyadmin: upgrade 4.8.5 -> 4.9.0.1
        openipmi: upgrade 2.0.25 -> 2.0.27

  Zang Ruochen (13):
        python-pywbem: solved the conflict with python3-pywbem
        python3-pywbem:solved the conflict with python-pywbem
        python-pbr: upgrade 5.2.0 -> 5.2.1
        python-mako: upgrade 1.0.10 -> 1.0.12
        python-babel: upgrade 2.6.0 -> 2.7.0
        python-cachetools: upgrade 3.1.0 -> 3.1.1
        python-cryptography: upgrade 2.6.1 -> 2.7
        python-cryptography-vectors: upgrade 2.6.1 -> 2.7
        python-cython: upgrade 0.29.7 -> 0.29.10
        python-lxml: upgrade 4.3.3 -> 4.3.4
        python-psutil: upgrade 5.6.2 -> 5.6.3
        python-requests: upgrade 2.21.0 -> 2.22.0
        python-urllib3: upgrade 1.25.2 -> 1.25.3

  nick83ola (5):
        nginx: update to version 1.17.0
        nginx: update stable version to 1.16.0
        nginx: add PACKAGECONFIG[http-auth-request]
        nginx: fix kill path in nginx systemd unit file
        uthash: do not use unstable github archive tarballs

  thstead (1):
        Upgraded python-pysnmp from version 4.3.5. to 4.4.9.

  Łukasz Łaguna (1):
        gsl: update to version 2.5

meta-security: 9f5cc2a7eb..c28b72e91d:
  Armin Kuster (17):
        checksec: update to 1.11.1
        keyutils: fix library install path
        checksec: add runtime test
        meta-integrity: port over from meta-intel-iot-security
        layer.conf: add LAYERSERIES_COMPAT
        README: update
        ima-evm-utils: cleanup and update to tip
        ima.cfg: update to 5.0 kernel
        linux: update bbappend
        base-files: add appending to automount securityfs
        ima-policy-hashed: add new recipe
        ima_policy_simple: add another sample policy
        policy: add ima appraise all policy
        data: remove policies
        initramfs: clean up to pull in packages.
        runtime qa: moderize ima test
        image: add image for testing

  Changqing Li (1):
        samhain: add rconflict for client and server mode

  Zang Ruochen (4):
        bastille: solved the conflict with perl-module-text-wrap and base-files
        python-scapy: Remove redundant sed operations
        python-scapy: solved the conflict with python3-scapy
        python3-scapy: solved the conflict with python-scapy

  leimaohui (1):
        python3-fail2ban: Fix build error of xrange.

poky: 797916f93a..111b7173fe:
  Adrian Bunk (25):
        nss-myhostname: Stop trying to build for musl
        systemd: Some upstreamable musl patches have been upstreamed
        libnss-mdns: Stop trying to build for musl
        icu: Remove workaround for musl issue fixed upstream 2 years ago
        socat: Remove workaround for musl issue now fixed upstream
        ofono: Use external ell instead of an internal copy
        ofono: Fix another race condition during the build
        squashfs-tools: Mark as incompatible with musl
        apt: Remove workaround patches for no longer supported host distributions
        m4/tar: Remove remove-gets.patch
        pinentry: Switch pinentry-qt from Qt4 to Qt5
        librsvg: Replace workaround for old host systems with upstream fix
        vim: Move PACKAGECONFIG[gtkgui] from GTK 2 to GTK 3
        Remove Go 1.11
        go: Remove INSANE_SKIP_* textrel that are now handled in go.bbclass
        dpkg: Remove workaround patches for no longer supported host distributions
        lrzsz: Add implicit declaration fixes from Debian
        tcp-wrappers: Add compile warning fixes from Debian
        libpam: Upgrade 1.3.0 -> 1.3.1
        vte: Fix the license information
        gcc: Remove 0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
        openssl: Upgrade 1.1.1b -> 1.1.1c
        Remove manual RDEPENDS from PN-ptest to PN package
        ref-manual: Remove irda feature
        lttng-modules: Upgrade 2.10.9 -> 2.10.10

  Adrian Freihofer (3):
        qemurunner: fix undefined variable
        testimage: consider QB_DEFAULT_FSTYPE
        runqemu: QB_FSINFO to support fstype wic images

  Alejandro Enedino Hernandez Samaniego (1):
        python-numpy: Avoid installing copy of f2py script

  Alejandro Hernandez Samaniego (2):
        newlib: Upgrade to 3.1.0
        newlib: export CC_FOR_TARGET as CC

  Alejandro del Castillo (1):
        opkg-utils: upgrade to version 0.4.1

  Alex Kiernan (2):
        kernel-fitimage: uboot-sign: Check UBOOT_DTB_BINARY before adding deps
        systemd: Backport OpenSSL BUF_MEM fix

  Alexander Kanavin (53):
        vim: split the common part into vim.inc
        libpcre2: upgrade 10.32 -> 10.33
        librepo: upgrade 1.9.6 -> 1.10.2
        libmodulemd: upgrade 2.2.3 -> 2.4.0
        libmodulemd: fix erroneous linking against v2 library when v1 was requested
        createrepo-c: upgrade 0.12.2 -> 0.14.0
        libdazzle: upgrade 3.32.1 -> 3.32.2
        adwaita-icon-theme: upgrade 3.30.1 -> 3.32.0
        bison: upgrade 3.1 -> 3.3.2
        atk: upgrade 2.30.0 -> 2.32.0
        python3-mako: upgrade 1.0.9 -> 1.0.10
        nss: upgrade 3.43 -> 3.44
        go: update 1.12.1->1.12.5
        systemtap: upgrade 4.0 -> 4.1
        gawk: upgrade 4.2.1 -> 5.0.0
        alsa-plugins: upgrade 1.1.8 -> 1.1.9
        alsa-utils: upgrade 1.1.8 -> 1.1.9
        alsa-lib: upgrade 1.1.8 -> 1.1.9
        lz4: upgrade 1.9.0 -> 1.9.1
        libxcrypt: upgrade 4.4.4 -> 4.4.6
        python3-pip: upgrade 19.0.3 -> 19.1.1
        pkgconf: upgrade 1.6.0 -> 1.6.1
        at-spi2-core: upgrade 2.30.0 -> 2.32.1
        at-spi2-atk: upgrade 2.30.0 -> 2.32.0
        glib-networking: upgrade 2.60.1 -> 2.60.2
        libsoup-2.4: upgrade 2.66.1 -> 2.66.2
        x264: upgrade to latest revision
        linux-firmware: upgrade to latest revision
        python3-pbr: upgrade 5.1.3 -> 5.2.0
        bash-completion: upgrade 2.8 -> 2.9
        gst-examples: upgrade to 1.16.0
        acpica: upgrade 20190405 -> 20190509
        freetype: upgrade 2.9.1 -> 2.10.0
        usbutils: upgrade 010->012
        webkitgtk: update to 2.24.2
        epiphany: update to 3.32.2
        btrfs-tools: update to 5.1
        iproute2: upgrade 5.0.0 -> 5.1.0
        chkconfig: do not use unstable github archive tarballs
        chkconfig: fix upstream version check
        perl: update to 5.30.0
        piglit: upgrade to latest revision
        ccache: fix upstream version check
        Revert "ncurses: fix incorrect UPSTREAM_CHECK_GITTAGREGEX"
        sysstat: add UPSTREAM_VERSION_UNKNOWN
        python3-pygments: add a recipe
        gtk-doc: upgrade 1.29 -> 1.30
        libpsl: fix the gtk-doc 1.30 build
        source-highlight: remove the recipe
        mesa-demos: update to 8.4.0
        glib-2.0: udpate 2.58.3 -> 2.60.3
        gdk-pixbuf: update 2.38.0 -> 2.38.1
        gtk+3: update 3.24.5 -> 3.24.8

  Alistair Francis (3):
        gdb: Upgrade from 8.2.1 to 8.3
        gnu-config: Update to latest SHA
        qemu: Backport the arm segfault fix

  Andreas Müller (1):
        gsettings-desktop-schemas: upgrade 3.28.1 -> 3.32.0

  Andrei Gherzan (1):
        ca-certificates: Fix openssl runtime dependencies

  Anuj Mittal (8):
        Revert "image_types: use pigz to create .gz files"
        Revert "pigz: pigz is not gzip"
        libva: upgrade 2.4.0 -> 2.4.1
        ffmpeg: add PACKAGECONFIG for mfx
        libpam: fix upstream version check
        serf: cleanup recipe
        scons: inherit python3native
        python3-scons: fix regex replacing python by python3

  Bonnans, Laurent (1):
        kernel-uboot: compress arm64 kernels

  Bruce Ashfield (11):
        linux-yocto/5.0: update to v5.0.13
        linux-yocto/4.19: update to v4.19.40
        linux-yocto/4.19: update to v4.19.44
        kernel: package modules.builtin.modinfo
        linux-yocto-dev: bump to v5.2-rc
        linux-yocto/5.0: update to v5.0.17
        linux-yocto-rt/5.0: update to -rt9
        linux-yocto/5.0: update to v5.0.19
        linux-yocto-rt/5.0: update to -rt11
        linux-yocto/5.0: fix systemtap on arm
        linux-yocto: ptest: Add SCSI debug configuration for util-linux

  Carlos Rafael Giani (6):
        gstreamer1.0-plugins-base: upgrade to version 1.16.0
        gstreamer1.0-plugins-good: upgrade to version 1.16.0
        gstreamer1.0-plugins-bad: upgrade to version 1.16.0
        gstreamer1.0-plugins-ugly: upgrade to version 1.16.0
        gstreamer1.0-libav: upgrade to version 1.16.0
        gstreamer1.0-vaapi: upgrade to version 1.16.0

  Changqing Li (8):
        connman: add networkmanager as rconflict
        dropbear: add openssh/openssh-sshd as rconflict
        busybox-inittab/sysvinit-inittab: add rconflicts
        inetutils: fix wrong package name
        systemd: add rconflicts
        tiny-init: add rconflicts
        multilib: add override for image recipe
        qemu: fix qemu ptest cannot work

  Chee Yang Lee (3):
        wic: bootimg-efi: add label source parameter
        wic/engine: include .wks.in in wic search and list
        wic/plugins: kernel image refer to KERNEL_IMAGETYPE

  Chen Qi (5):
        libxfont2: set CVE_PRODUCT
        systemd: avoid musl specific patches affect glibc systems
        util-linux: upgrade to 2.33.2
        oescripts.py: avoid error when cairo module is not available
        context.py: fix skipping function

  Chris Laplante (5):
        base.bbclass: Add OE_EXTRA_IMPORTS
        bitbake: knotty: allow progress rate for indeterminate bars
        bitbake: build: extract progress handler creation logic into its own method
        bitbake: build/progress: use context managers for progress handlers
        bitbake: build: implement custom progress handlers injected via OE_EXTRA_IMPORTS

  David Frey (1):
        bluez5: manage udev dependency with PACKAGECONFIG

  David Reyna (1):
        bitbake: toaster: Fix Thud Bitbake release metadata

  Diego Rondini (1):
        bluez5: fix obex packaging

  Douglas Royds via Openembedded-core (1):
        json-c: Backport --disable-werror patch to allow compilation under icecc

  Fabio Berton (3):
        mesa: Update 19.0.3 -> 19.0.5
        mesa: Update 19.0.5 -> 19.0.6
        mesa: Update 19.0.6 -> 19.1.0

  Filip Jareš (1):
        recipes: Fix license "names"/versions.

  Haiqing Bai (1):
        kernel.bbclass: Make task clean depend on cleaning of make-mod-scripts

  He Zhe (1):
        lttng-modules: Add git based recipe

  Hongxu Jia (5):
        grub/grub-efi: fix unrecognized command line option '-pipe-Wno-error' in CFLAGS
        lib/oe/reciputils.py: support character `+' in git pv
        groff: improve reproducibility
        diffutils/run-ptest: support to run at arbitrary path
        openssh: fix potential signed overflow in pointer arithmatic

  Jaewon Lee (2):
        gstreamer1.0-python_1.16.0.bb: Override libpython dir
        devicetree.bbclass: Combine stderr into stdout to see actual dtc error

  Jean-Marie LEMETAYER (4):
        npm: get npm package name from npm pack
        npm: fix node and npm default directory conflict
        npm: remove some temporary build files
        bitbake: bitbake: fetch2/npm: fix npw view parsing

  Jiping Ma (1):
        dhcp:"dhclient -x eth0" action is not correct.

  Joe Slater (1):
        slang: modify an array test

  Jon Mason (2):
        resulttool: modify to be multi-machine
        resulttool: Remove prints if no tests occur

  Jonathan Rajotte (4):
        lttng-tools: prevent test timeout when lttng-modules is not present
        lttng-tools: add lttng-modules to ptest dependencies
        liburcu: update to 0.11.0
        liburcu: update to 0.11.1

  Joshua Watt (11):
        avahi: Add PACKAGECONFIG for libdns_sd
        perl: Preserve attributes when applying cross files
        btrfs-tools: Pass DEBUG_MAP_PREFIX flags to Python
        bitbake: bitbake: cooker: Rename __depends in all multiconfigs
        bitbake: bitbake: Show base multiconfig environment
        perl: Set build date to SOURCE_DATE_EPOCH
        glibc-locale: DEPEND on virtual/libc
        zip: Remove build date to improve reproducibility
        classes/package: Sort ELF file list
        bash: Replace uninative loader path in ptest
        oeqa: Add reproducible build selftest

  Kai Kang (3):
        systemd-conf: configure wired network with dhcp
        qemu/qemu-system-native: depend bison-native
        openssl: fix failure of ptest test_shlibload

  Kevin Hao (3):
        runqemu: Add the support to pass multi ports to tcpserial parameter
        oeqa/utils/qemurunner: Set both the threadport&serverport with tcpserial parameter
        tune-thunderx: Set the correct PACKAGE_EXTRA_ARCHS_tune-thunderx

  Khem Raj (6):
        mesa: Fix a case when gbm is enabled but DRIDRIVERS is not defined
        ofono: Add TEMP_FAILURE_RETRY optional definition
        Revert "musl: Add TEMP_FAILURE_RETRY from glibc"
        binutils: Workaround mips assembler crash on target
        musl: Upgrade to master tip
        gdb: Let gdbserver be empty for riscv64

  Lei Maohui (1):
        meson.bbclass: Make meson support aarch64_be.

  Luca Boccassi (2):
        python*-setuptools: add separate packages for pkg_resources module
        mdadm: use ${systemd_unitdir} rather than /lib/systemd

  Maciej Pijanowski (1):
        recipetool: add python3 support

  Mariano López (3):
        util-linux: Add missing ptest dependencies
        util-linux: Stop udevd to run ptests
        linux-yocto: Add scsi_debug module when ptest is in DISTRO_FEATURES

  Mark Hatle (1):
        bitbake: svn.py: Stop SVN from directly pulling from an external layer w/o fetcher

  Martin Jansa (5):
        python: add a fix for CVE-2019-9948 and CVE-2019-9636
        glib-networking: add PACKAGECONFIG for openssl
        bc: use u-a for bc as well
        opkg-utils: fix opkg-list-fields script
        pigz: install pigz, unpigz, pigzcat in native and nativesdk builds again

  Matthias Schiffer (1):
        bitbake: fetch2: runfetchcmd(): unset _PYTHON_SYSCONFIGDATA_NAME

  Matthias Schoepfer via Openembedded-core (1):
        python3: fix build on softfloat mips

  Michael Ho (1):
        base.bbclass: add named SRCREVs to the sstate hash

  Mike Crowe (1):
        cmake: Avoid passing empty prefix to os.path.relpath

  Mingli Yu (3):
        elfutils: fix ptest failures
        dbus: Upgrade to 1.12.16
        dbus-test: Upgrade 1.12.16

  Nicola Lunghi (3):
        connman: fix segfault with musl >v1.1.21
        rng-tools: recipe cleanup
        rng-tools: harmonise systemd and sysvinit

  Oleksandr Kravchuk (6):
        ethtool: update to 5.1
        file: update to 5.37
        p11-kit: update to 0.23.16.1
        popt: fix SRC_URI
        selftest/devtool: fix URI to MarkupSafe package
        bitbake: cooker: list all nonexistent bblayer directories

  Oliver Stäbler (1):
        packagegroup-core-full-cmdline: Make nfs-utils/rpcbind optional

  Peter Kjellerstedt (3):
        texinfo-dummy-native: A little clean up of template.py
        texinfo-dummy-native: Rewrite template.py to use argparse
        package.bbclass: Clean up writing of runtime pkgdata files

  Philippe Normand (9):
        gstreamer1.0: upgrade to version 1.16.0
        gstreamer1.0-omx: upgrade to version 1.16.0
        gstreamer1.0-rtsp-server: upgrade to version 1.16.0
        gstreamer1.0-python: upgrade to version 1.16.0
        gst-validate: upgrade to version 1.16.0
        cmake: Use compiler launcher variable when ccache is enabled
        at-spi2: Make X11 support truly optional
        gnutls: Use ca-certificates as default trust store file
        gnutls: Use the sysconfdir variable for the ca-certificates path

  Quentin Schulz (2):
        meta: license: fix non-SPDX license being removed from INCOMPATIBLE_LICENSE
        selftests: add tests for INCOMPATIBLE_LICENSE

  Randy MacLeod (6):
        valgrind: Make ptest timestamps copasetic
        valgrind: add 'file' to ptest depends
        util-linux: add setpriv utility
        libcap-ng: split into libcap-ng/libcap-ng-python
        ptest-runner: enable child procs as session leader
        bash: use setpriv, sed.sed to run ptests

  Richard Purdie (46):
        perl-rdepends: Add missing module dependencies
        bash: Fix bash-ptest dependencies
        openssh: Add sudo dependency for ptest
        libpcre: Add make dependency for ptest
        m4: Add coreutils and diffutils dependency for ptest
        perl/modules: Add various missing ptest perl module dependencies
        layer.conf: Whitelist lttng-tools->lttng-modules dependency
        tcmode-default: Make gcc9 the default
        lttng-tools: Fix patch Upstream-Status
        mesa: Fix patch Upstream-Status
        uninative-tarball: Fix file generation after class changes
        populate_sdk_base: Use highest compression level for xz
        uninative-tarball: Use xz compression and SDK_ARCHIVE_CMD
        strace: Tweak ptest disk space management
        ptest-packagelists: Add mdadm
        util-linux: Fix ptest dependencies
        mdadm: Add missing ptest dependency
        yocto-uninative: Update to 2.5 release
        uninative: Switch from bz2 to xz
        bitbake: main: Fix error message typo
        qemuarm64: Add QB_CPU_KVM to allow kvm acceleration
        runqemu: Add support for kvm on aarch64
        useradd: Fix build architecture corruption of sstate artefacts
        useradd: Ensure do_populate_sysroot has dependency on useradd variables
        beaglebone-yocto: Add missing wic image u-boot deploy dependency
        quilt: Add patch depends for quilt-ptest
        libtest-needs-perl: Fix ptest dependencies
        libtimedate-perl: Fix ptest dependencies
        perl: Add missing perl module dependency
        liburi-perl: Fix module ptest dependencies
        libconvert-aan1-perl: Fix module and ptest dependencies
        libxml-sax-perl: Fix module ptest dependencies
        libxml-perl: Fix module and ptest dependencies
        e2fsprogs: Fix missing ptest dependencies
        glib-2.0: ptest fixes
        openssh: Add missing ptest dependency on coreutils
        gpg_sign/selftest: Fix secmem parameter handling
        gawk: ptest fixes
        openssh: Document skipped test dependency
        multiconfig: Adapt to bitbake switch 'multiconfig' -> 'mc'
        bitbake: multiconfig: Switch from 'multiconfig' -> 'mc'
        bitbake: cooker: Add compability handling for multiconfig: prefix migration
        build-appliance-image: Update to master head revision
        bitbake: cooker: Ensure mcdeps are processed even if only one multiconfig
        perl: Fix setgroup call regression from 5.30
        perl: Move perl-sanity -> perl

  Ross Burton (13):
        insane: add sanity checks to SRC_URI
        libidn2: upgrade to 2.2.0
        local.conf.sample: change default MACHINE to qemux86-64
        libical: tidy up Perl finding
        wic/filemap: handle FIGETBSZ failing
        libxslt: add comment saying when a workaround can be removed
        parted: swap patches for the commits that landed upstream
        parted: drop patch for linux <2.6.20 support
        python-nose: python3-nose should be default
        bluez: fix test case failures with GCC 9
        efivar: add
        efibootmgr: add
        gstreamer1.0-libav: disable API documentation

  Sakib Sajal (4):
        bash: add iso8859-1 gconv RDEPENDS needed by bash-ptest.
        bash: add big5hkscs gconv RDEPENDS needed by bash-ptest.
        bash: run bash ptest as non-root user
        ptest-runner: update SRCREV to latest HEAD on ptest-runner2 repo

  Scott Rifenbark (17):
        sdk-manual: Added link to BB manual fetcher section.
        ref-manual: Updated "do_fetch" to have a link to "Fetchers"
        dev-manual, ref-manual: removed "distrodata" class
        ref-manual: Removed bugzilla.bbclass
        ref-manual: Removed "distutils-tools" class.
        ref-manual: Udated devtool help output examples.
        ref-manual: New section "Checking Upgrade Status of a Recipe"
        dev-manual: Added check-upgrade-status blurb to upgrading recipes
        ref-manual: do_checkpkg - added link to checking upgrade status
        ref-manual: Updates to check-recipe-upgrade devtool command
        ref-manual: Grammar correction
        dev-manual: Added new section for creating NPM packages
        Makefile: Updated to support new NPM package creation section
        dev-manual: Updated the "Working with Packages" list
        ref-manual: Updated "npm.bbclass" section.
        overview-manual: Updated SCM section
        dev-manual: Fixed grammar issue.

  Tim Orling (8):
        libxml-parser-perl: fix ptest dependencies
        perl-rdepends.txt: improve dependencies for perl module ptests
        perl: install Config_git.pl
        perl-rdepends.txt: fix perl-module-data-dumper dependencies
        python3-scons-{native}: add recipe for v3.0.5
        scons.bbclass: use python3-scons
        serf: switch to python3-scons-native
        oeqa/runtime: add simple test for scons

  Tom Rini (2):
        vim: Rework things so vim adds features not vim-tiny removes
        vim: Update to 8.1.1518 to fix CVE-2019-12735

  Yeoh Ee Peng (3):
        resulttool/resultutils: Enable add extra configurations to results
        resulttool/store: Enable add EXECUTED_BY config to results
        resulttool/merge: Enable control TESTSERIES and extra configurations

  Zang Ruochen (3):
        openssh: Upgrade 7.9p1 -> 8.0p1
        dbus: Upgrade 1.12.12 -> 1.12.14
        dbus-test: Upgrade 1.12.12 -> 1.12.14

  Zhixiong Chi (2):
        gcc: reduce the variables in symtab
        gcc: CVE-2018-12886

  sangeeta jain (1):
        resulttool/manualexecution: Enable creation of test case configuration

meta-raspberrypi: 7059c37451..40283f583b:
  Andrei Gherzan (1):
        gstreamer1.0-omx: Forward port bbappend and patches to v1.16.x

  Khem Raj (4):
        linux-raspberrypi_4.19.bb: Update to 4.19.44
        rpi-default-versions: Switch defaults to 4.19
        userland: Update to 20190501
        firmware: Update 20190220 -> 20190517

  malus-brandywine (1):
        sdcard_image-rpi : minor bug in use of FATPAYLOAD

Change-Id: Idab4e8c2666bc776d0b47988a32dcb9f04885aff
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/poky/meta/recipes-devtools/gcc/gcc-8.3.inc b/poky/meta/recipes-devtools/gcc/gcc-8.3.inc
index fe9c7c3..1781ff5 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-8.3.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-8.3.inc
@@ -36,7 +36,6 @@
            file://0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
            file://0004-64-bit-multilib-hack.patch \
            file://0005-optional-libstdc.patch \
-           file://0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
            file://0007-COLLECT_GCC_OPTIONS.patch \
            file://0008-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
            file://0009-fortran-cross-compile-hack.patch \
@@ -72,6 +71,8 @@
            file://0039-riscv-Disable-multilib-for-OE.patch \
            file://0040-powerpc-powerpc64-Add-support-for-musl-ldso.patch \
            file://0041-Add-a-recursion-limit-to-libiberty-s-demangling-code.patch \
+           file://0042-PR-debug-86964.patch \
+           file://0043-PR85434-Prevent-spilling-of-stack-protector-guard-s-.patch \
 "
 SRC_URI[md5sum] = "65b210b4bfe7e060051f799e0f994896"
 SRC_URI[sha256sum] = "64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c"
diff --git a/poky/meta/recipes-devtools/gcc/gcc-8.3/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch b/poky/meta/recipes-devtools/gcc/gcc-8.3/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
deleted file mode 100644
index 0cea228..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc-8.3/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 1dba090a11c40b0926f9707a543d658c95e1f156 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:14:20 +0400
-Subject: [PATCH 06/40] gcc: disable MASK_RELAX_PIC_CALLS bit
-
-The new feature added after 4.3.3
-"http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html"
-will cause cc1plus eat up all the system memory when build webkit-gtk.
-The function mips_get_pic_call_symbol keeps on recursively calling itself.
-Disable this feature to walk aside the bug.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [configuration]
----
- gcc/configure    | 7 -------
- gcc/configure.ac | 7 -------
- 2 files changed, 14 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index 3901722400c..0c9b8ac5f55 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -27553,13 +27553,6 @@ $as_echo_n "checking assembler and linker for explicit JALR relocation... " >&6;
-         rm -f conftest.*
-       fi
-     fi
--    if test $gcc_cv_as_ld_jalr_reloc = yes; then
--      if test x$target_cpu_default = x; then
--        target_cpu_default=MASK_RELAX_PIC_CALLS
--      else
--        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
--      fi
--    fi
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ld_jalr_reloc" >&5
- $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
- 
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 1b1362f70fe..53840363115 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -4798,13 +4798,6 @@ x:
-         rm -f conftest.*
-       fi
-     fi
--    if test $gcc_cv_as_ld_jalr_reloc = yes; then
--      if test x$target_cpu_default = x; then
--        target_cpu_default=MASK_RELAX_PIC_CALLS
--      else
--        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
--      fi
--    fi
-     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
- 
-     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
--- 
-2.21.0
-
diff --git a/poky/meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch b/poky/meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch
new file mode 100644
index 0000000..d9b5d39
--- /dev/null
+++ b/poky/meta/recipes-devtools/gcc/gcc-8.3/0042-PR-debug-86964.patch
@@ -0,0 +1,94 @@
+From beb921e1106b5bcbb0c6e2be84b241327e2ffc51 Mon Sep 17 00:00:00 2001
+From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Mon, 25 Mar 2019 21:19:09 +0000
+Subject: [PATCH] 	PR debug/86964 	* dwarf2out.c
+ (premark_used_variables): New function. 	(prune_unused_types_walk): Do
+ not mark not premarked external 	variables. 	(prune_unused_types):
+ Call premark_used_variables.
+
+	* gcc.dg/debug/dwarf2/pr86964.c: New testcase.
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@269925 138bc75d-0d04-0410-961f-82ee72b054a4
+
+Upstream-Status: Backport
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+---
+ gcc/ChangeLog                               |  8 ++++++
+ gcc/dwarf2out.c                             | 32 +++++++++++++++++++++
+ 2 files changed, 40 insertions(+)
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index 2075480ca2b..cdce539ac6f 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1,3 +1,11 @@
++2019-03-25  Johan Karlsson <johan.karlsson@enea.com>
++
++	PR debug/86964
++	* dwarf2out.c (premark_used_variables): New function.
++	(prune_unused_types_walk): Do not mark not premarked external
++	variables.
++	(prune_unused_types): Call premark_used_variables.
++
+ 2019-02-22  Release Manager
+ 
+ 	* GCC 8.3.0 released.
+diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
+index ae8bdee9981..b9a624e1ac7 100644
+--- a/gcc/dwarf2out.c
++++ b/gcc/dwarf2out.c
+@@ -22658,6 +22658,21 @@ premark_types_used_by_global_vars (void)
+       ->traverse<void *, premark_types_used_by_global_vars_helper> (NULL);
+ }
+ 
++/* Mark all variables used by the symtab as perennial.  */
++
++static void
++premark_used_variables (void)
++{
++  /* Mark DIEs in the symtab as used.  */
++  varpool_node *var;
++  FOR_EACH_VARIABLE (var)
++    {
++      dw_die_ref die = lookup_decl_die (var->decl);
++      if (die)
++	die->die_perennial_p = 1;
++    }
++}
++
+ /* Generate a DW_TAG_call_site DIE in function DECL under SUBR_DIE
+    for CA_LOC call arg loc node.  */
+ 
+@@ -29264,6 +29279,19 @@ prune_unused_types_walk (dw_die_ref die)
+ 
+       return;
+ 
++    case DW_TAG_variable:
++      if (flag_debug_only_used_symbols)
++	{
++	  if (die->die_perennial_p)
++	    break;
++
++	  /* premark_used_variables marks external variables --- don't mark
++	     them here.  */
++	  if (get_AT (die, DW_AT_external))
++	    return;
++	}
++      /* FALLTHROUGH */
++
+     default:
+       /* Mark everything else.  */
+       break;
+@@ -29390,6 +29418,10 @@ prune_unused_types (void)
+   /* Mark types that are used in global variables.  */
+   premark_types_used_by_global_vars ();
+ 
++  /* Mark variables used in the symtab.  */
++  if (flag_debug_only_used_symbols)
++    premark_used_variables ();
++
+   /* Set the mark on nodes that are actually used.  */
+   prune_unused_types_walk (comp_unit_die ());
+   for (node = limbo_die_list; node; node = node->next)
+-- 
+2.21.0
diff --git a/poky/meta/recipes-devtools/gcc/gcc-8.3/0043-PR85434-Prevent-spilling-of-stack-protector-guard-s-.patch b/poky/meta/recipes-devtools/gcc/gcc-8.3/0043-PR85434-Prevent-spilling-of-stack-protector-guard-s-.patch
new file mode 100644
index 0000000..f15207f
--- /dev/null
+++ b/poky/meta/recipes-devtools/gcc/gcc-8.3/0043-PR85434-Prevent-spilling-of-stack-protector-guard-s-.patch
@@ -0,0 +1,813 @@
+From f98495d90ba66f67fe922a4b9229ea787041c418 Mon Sep 17 00:00:00 2001
+From: thopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Thu, 22 Nov 2018 14:46:17 +0000
+Subject: [PATCH] PR85434: Prevent spilling of stack protector guard's address
+ on ARM
+
+In case of high register pressure in PIC mode, address of the stack
+protector's guard can be spilled on ARM targets as shown in PR85434,
+thus allowing an attacker to control what the canary would be compared
+against. ARM does lack stack_protect_set and stack_protect_test insn
+patterns, defining them does not help as the address is expanded
+regularly and the patterns only deal with the copy and test of the
+guard with the canary.
+
+This problem does not occur for x86 targets because the PIC access and
+the test can be done in the same instruction. Aarch64 is exempt too
+because PIC access insn pattern are mov of UNSPEC which prevents it from
+the second access in the epilogue being CSEd in cse_local pass with the
+first access in the prologue.
+
+The approach followed here is to create new "combined" set and test
+standard pattern names that take the unexpanded guard and do the set or
+test. This allows the target to use an opaque pattern (eg. using UNSPEC)
+to hide the individual instructions being generated to the compiler and
+split the pattern into generic load, compare and branch instruction
+after register allocator, therefore avoiding any spilling. This is here
+implemented for the ARM targets. For targets not implementing these new
+standard pattern names, the existing stack_protect_set and
+stack_protect_test pattern names are used.
+
+To be able to split PIC access after register allocation, the functions
+had to be augmented to force a new PIC register load and to control
+which register it loads into. This is because sharing the PIC register
+between prologue and epilogue could lead to spilling due to CSE again
+which an attacker could use to control what the canary gets compared
+against.
+
+2018-11-22  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
+
+    gcc/
+    PR target/85434
+    * target-insns.def (stack_protect_combined_set): Define new standard
+    pattern name.
+    (stack_protect_combined_test): Likewise.
+    * cfgexpand.c (stack_protect_prologue): Try new
+    stack_protect_combined_set pattern first.
+    * function.c (stack_protect_epilogue): Try new
+    stack_protect_combined_test pattern first.
+    * config/arm/arm.c (require_pic_register): Add pic_reg and compute_now
+    parameters to control which register to use as PIC register and force
+    reloading PIC register respectively.  Insert in the stream of insns if
+    possible.
+    (legitimize_pic_address): Expose above new parameters in prototype and
+    adapt recursive calls accordingly.  Use pic_reg if non null instead of
+    cached one.
+    (arm_load_pic_register): Add pic_reg parameter and use it if non null.
+    (arm_legitimize_address): Adapt to new legitimize_pic_address
+    prototype.
+    (thumb_legitimize_address): Likewise.
+    (arm_emit_call_insn): Adapt to require_pic_register prototype change.
+    (arm_expand_prologue): Adapt to arm_load_pic_register prototype change.
+    (thumb1_expand_prologue): Likewise.
+    * config/arm/arm-protos.h (legitimize_pic_address): Adapt to prototype
+    change.
+    (arm_load_pic_register): Likewise.
+    * config/arm/predicated.md (guard_addr_operand): New predicate.
+    (guard_operand): New predicate.
+    * config/arm/arm.md (movsi expander): Adapt to legitimize_pic_address
+    prototype change.
+    (builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
+    prototype change.
+    (stack_protect_combined_set): New expander..
+    (stack_protect_combined_set_insn): New insn_and_split pattern.
+    (stack_protect_set_insn): New insn pattern.
+    (stack_protect_combined_test): New expander.
+    (stack_protect_combined_test_insn): New insn_and_split pattern.
+    (arm_stack_protect_test_insn): New insn pattern.
+    * config/arm/thumb1.md (thumb1_stack_protect_test_insn): New insn pattern.
+    * config/arm/unspecs.md (UNSPEC_SP_SET): New unspec.
+    (UNSPEC_SP_TEST): Likewise.
+    * doc/md.texi (stack_protect_combined_set): Document new standard
+    pattern name.
+    (stack_protect_set): Clarify that the operand for guard's address is
+    legal.
+    (stack_protect_combined_test): Document new standard pattern name.
+    (stack_protect_test): Clarify that the operand for guard's address is
+    legal.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266379 138bc75d-0d04-0410-961f-82ee72b054a4
+
+Upstream-Status: Backport
+CVE: CVE-2018-12886
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+---
+ gcc/ChangeLog                          |  49 ++++++
+ gcc/cfgexpand.c                        |  17 +++
+ gcc/config/arm/arm-protos.h            |   4 +-
+ gcc/config/arm/arm.c                   |  87 ++++++++---
+ gcc/config/arm/arm.md                  | 163 +++++++++++++++++++-
+ gcc/config/arm/predicates.md           |  17 +++
+ gcc/config/arm/thumb1.md               |  13 ++
+ gcc/config/arm/unspecs.md              |   3 +
+ gcc/doc/md.texi                        |  55 ++++++-
+ gcc/function.c                         |  32 +++-
+ gcc/target-insns.def                   |   2 +
+ 11 files changed, 399 insertions(+), 43 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.target/arm/pr85434.c
+
+diff --git a/gcc/ChangeLog b/gcc/ChangeLog
+index e2ebfd34214..fa41e7112e0 100644
+--- a/gcc/ChangeLog
++++ b/gcc/ChangeLog
+@@ -1537,6 +1537,55 @@
+ 	* config/arm/neon.md (movv4hf, movv8hf): Refactored to..
+ 	(mov<mov>): ..this and enable unconditionally.
+ 
++2018-11-22  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
++
++	* target-insns.def (stack_protect_combined_set): Define new standard
++	pattern name.
++	(stack_protect_combined_test): Likewise.
++	* cfgexpand.c (stack_protect_prologue): Try new
++	stack_protect_combined_set pattern first.
++	* function.c (stack_protect_epilogue): Try new
++	stack_protect_combined_test pattern first.
++	* config/arm/arm.c (require_pic_register): Add pic_reg and compute_now
++	parameters to control which register to use as PIC register and force
++	reloading PIC register respectively.  Insert in the stream of insns if
++	possible.
++	(legitimize_pic_address): Expose above new parameters in prototype and
++	adapt recursive calls accordingly.  Use pic_reg if non null instead of
++	cached one.
++	(arm_load_pic_register): Add pic_reg parameter and use it if non null.
++	(arm_legitimize_address): Adapt to new legitimize_pic_address
++	prototype.
++	(thumb_legitimize_address): Likewise.
++	(arm_emit_call_insn): Adapt to require_pic_register prototype change.
++	(arm_expand_prologue): Adapt to arm_load_pic_register prototype change.
++	(thumb1_expand_prologue): Likewise.
++	* config/arm/arm-protos.h (legitimize_pic_address): Adapt to prototype
++	change.
++	(arm_load_pic_register): Likewise.
++	* config/arm/predicated.md (guard_addr_operand): New predicate.
++	(guard_operand): New predicate.
++	* config/arm/arm.md (movsi expander): Adapt to legitimize_pic_address
++	prototype change.
++	(builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
++	prototype change.
++	(stack_protect_combined_set): New expander..
++	(stack_protect_combined_set_insn): New insn_and_split pattern.
++	(stack_protect_set_insn): New insn pattern.
++	(stack_protect_combined_test): New expander.
++	(stack_protect_combined_test_insn): New insn_and_split pattern.
++	(arm_stack_protect_test_insn): New insn pattern.
++	* config/arm/thumb1.md (thumb1_stack_protect_test_insn): New insn pattern.
++	* config/arm/unspecs.md (UNSPEC_SP_SET): New unspec.
++	(UNSPEC_SP_TEST): Likewise.
++	* doc/md.texi (stack_protect_combined_set): Document new standard
++	pattern name.
++	(stack_protect_set): Clarify that the operand for guard's address is
++	legal.
++	(stack_protect_combined_test): Document new standard pattern name.
++	(stack_protect_test): Clarify that the operand for guard's address is
++	legal.
++
+ 2018-11-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
+index 8fa392fcd8a..21bdcdaeaa3 100644
+--- a/gcc/cfgexpand.c
++++ b/gcc/cfgexpand.c
+@@ -6185,6 +6185,23 @@ stack_protect_prologue (void)
+   rtx x, y;
+ 
+   x = expand_normal (crtl->stack_protect_guard);
++
++  if (targetm.have_stack_protect_combined_set () && guard_decl)
++    {
++      gcc_assert (DECL_P (guard_decl));
++      y = DECL_RTL (guard_decl);
++
++      /* Allow the target to compute address of Y and copy it to X without
++	 leaking Y into a register.  This combined address + copy pattern
++	 allows the target to prevent spilling of any intermediate results by
++	 splitting it after register allocator.  */
++      if (rtx_insn *insn = targetm.gen_stack_protect_combined_set (x, y))
++	{
++	  emit_insn (insn);
++	  return;
++	}
++    }
++
+   if (guard_decl)
+     y = expand_normal (guard_decl);
+   else
+diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
+index 8d6d2395b84..00f5f16ed02 100644
+--- a/gcc/config/arm/arm-protos.h
++++ b/gcc/config/arm/arm-protos.h
+@@ -28,7 +28,7 @@ extern enum unwind_info_type arm_except_unwind_info (struct gcc_options *);
+ extern int use_return_insn (int, rtx);
+ extern bool use_simple_return_p (void);
+ extern enum reg_class arm_regno_class (int);
+-extern void arm_load_pic_register (unsigned long);
++extern void arm_load_pic_register (unsigned long, rtx);
+ extern int arm_volatile_func (void);
+ extern void arm_expand_prologue (void);
+ extern void arm_expand_epilogue (bool);
+@@ -69,7 +69,7 @@ extern int const_ok_for_dimode_op (HOST_WIDE_INT, enum rtx_code);
+ extern int arm_split_constant (RTX_CODE, machine_mode, rtx,
+ 			       HOST_WIDE_INT, rtx, rtx, int);
+ extern int legitimate_pic_operand_p (rtx);
+-extern rtx legitimize_pic_address (rtx, machine_mode, rtx);
++extern rtx legitimize_pic_address (rtx, machine_mode, rtx, rtx, bool);
+ extern rtx legitimize_tls_address (rtx, rtx);
+ extern bool arm_legitimate_address_p (machine_mode, rtx, bool);
+ extern int arm_legitimate_address_outer_p (machine_mode, rtx, RTX_CODE, int);
+diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
+index 8393f0b87f3..12417de5102 100644
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -7379,21 +7379,34 @@ legitimate_pic_operand_p (rtx x)
+   return 1;
+ }
+ 
+-/* Record that the current function needs a PIC register.  Initialize
+-   cfun->machine->pic_reg if we have not already done so.  */
++/* Record that the current function needs a PIC register.  If PIC_REG is null,
++   a new pseudo is allocated as PIC register, otherwise PIC_REG is used.  In
++   both case cfun->machine->pic_reg is initialized if we have not already done
++   so.  COMPUTE_NOW decide whether and where to set the PIC register.  If true,
++   PIC register is reloaded in the current position of the instruction stream
++   irregardless of whether it was loaded before.  Otherwise, it is only loaded
++   if not already done so (crtl->uses_pic_offset_table is null).  Note that
++   nonnull PIC_REG is only supported iff COMPUTE_NOW is true and null PIC_REG
++   is only supported iff COMPUTE_NOW is false.  */
+ 
+ static void
+-require_pic_register (void)
++require_pic_register (rtx pic_reg, bool compute_now)
+ {
++  gcc_assert (compute_now == (pic_reg != NULL_RTX));
++
+   /* A lot of the logic here is made obscure by the fact that this
+      routine gets called as part of the rtx cost estimation process.
+      We don't want those calls to affect any assumptions about the real
+      function; and further, we can't call entry_of_function() until we
+      start the real expansion process.  */
+-  if (!crtl->uses_pic_offset_table)
++  if (!crtl->uses_pic_offset_table || compute_now)
+     {
+-      gcc_assert (can_create_pseudo_p ());
++      gcc_assert (can_create_pseudo_p ()
++		  || (pic_reg != NULL_RTX
++		      && REG_P (pic_reg)
++		      && GET_MODE (pic_reg) == Pmode));
+       if (arm_pic_register != INVALID_REGNUM
++	  && !compute_now
+ 	  && !(TARGET_THUMB1 && arm_pic_register > LAST_LO_REGNUM))
+ 	{
+ 	  if (!cfun->machine->pic_reg)
+@@ -7409,8 +7422,10 @@ require_pic_register (void)
+ 	{
+ 	  rtx_insn *seq, *insn;
+ 
++	  if (pic_reg == NULL_RTX)
++	    pic_reg = gen_reg_rtx (Pmode);
+ 	  if (!cfun->machine->pic_reg)
+-	    cfun->machine->pic_reg = gen_reg_rtx (Pmode);
++	    cfun->machine->pic_reg = pic_reg;
+ 
+ 	  /* Play games to avoid marking the function as needing pic
+ 	     if we are being called as part of the cost-estimation
+@@ -7421,11 +7436,12 @@ require_pic_register (void)
+ 	      start_sequence ();
+ 
+ 	      if (TARGET_THUMB1 && arm_pic_register != INVALID_REGNUM
+-		  && arm_pic_register > LAST_LO_REGNUM)
++		  && arm_pic_register > LAST_LO_REGNUM
++		  && !compute_now)
+ 		emit_move_insn (cfun->machine->pic_reg,
+ 				gen_rtx_REG (Pmode, arm_pic_register));
+ 	      else
+-		arm_load_pic_register (0UL);
++		arm_load_pic_register (0UL, pic_reg);
+ 
+ 	      seq = get_insns ();
+ 	      end_sequence ();
+@@ -7438,16 +7454,33 @@ require_pic_register (void)
+ 	         we can't yet emit instructions directly in the final
+ 		 insn stream.  Queue the insns on the entry edge, they will
+ 		 be committed after everything else is expanded.  */
+-	      insert_insn_on_edge (seq,
+-				   single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun)));
++	      if (currently_expanding_to_rtl)
++		insert_insn_on_edge (seq,
++				     single_succ_edge
++				     (ENTRY_BLOCK_PTR_FOR_FN (cfun)));
++	      else
++		emit_insn (seq);
+ 	    }
+ 	}
+     }
+ }
+ 
++/* Legitimize PIC load to ORIG into REG.  If REG is NULL, a new pseudo is
++   created to hold the result of the load.  If not NULL, PIC_REG indicates
++   which register to use as PIC register, otherwise it is decided by register
++   allocator.  COMPUTE_NOW forces the PIC register to be loaded at the current
++   location in the instruction stream, irregardless of whether it was loaded
++   previously.  Note that nonnull PIC_REG is only supported iff COMPUTE_NOW is
++   true and null PIC_REG is only supported iff COMPUTE_NOW is false.
++
++   Returns the register REG into which the PIC load is performed.  */
++
+ rtx
+-legitimize_pic_address (rtx orig, machine_mode mode, rtx reg)
++legitimize_pic_address (rtx orig, machine_mode mode, rtx reg, rtx pic_reg,
++			bool compute_now)
+ {
++  gcc_assert (compute_now == (pic_reg != NULL_RTX));
++
+   if (GET_CODE (orig) == SYMBOL_REF
+       || GET_CODE (orig) == LABEL_REF)
+     {
+@@ -7480,9 +7513,12 @@ legitimize_pic_address (rtx orig, machine_mode mode, rtx reg)
+ 	  rtx mem;
+ 
+ 	  /* If this function doesn't have a pic register, create one now.  */
+-	  require_pic_register ();
++	  require_pic_register (pic_reg, compute_now);
++
++	  if (pic_reg == NULL_RTX)
++	    pic_reg = cfun->machine->pic_reg;
+ 
+-	  pat = gen_calculate_pic_address (reg, cfun->machine->pic_reg, orig);
++	  pat = gen_calculate_pic_address (reg, pic_reg, orig);
+ 
+ 	  /* Make the MEM as close to a constant as possible.  */
+ 	  mem = SET_SRC (pat);
+@@ -7531,9 +7567,11 @@ legitimize_pic_address (rtx orig, machine_mode mode, rtx reg)
+ 
+       gcc_assert (GET_CODE (XEXP (orig, 0)) == PLUS);
+ 
+-      base = legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg);
++      base = legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg,
++				     pic_reg, compute_now);
+       offset = legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode,
+-				       base == reg ? 0 : reg);
++				       base == reg ? 0 : reg, pic_reg,
++				       compute_now);
+ 
+       if (CONST_INT_P (offset))
+ 	{
+@@ -7633,16 +7671,17 @@ static GTY(()) int pic_labelno;
+    low register.  */
+ 
+ void
+-arm_load_pic_register (unsigned long saved_regs ATTRIBUTE_UNUSED)
++arm_load_pic_register (unsigned long saved_regs ATTRIBUTE_UNUSED, rtx pic_reg)
+ {
+-  rtx l1, labelno, pic_tmp, pic_rtx, pic_reg;
++  rtx l1, labelno, pic_tmp, pic_rtx;
+ 
+   if (crtl->uses_pic_offset_table == 0 || TARGET_SINGLE_PIC_BASE)
+     return;
+ 
+   gcc_assert (flag_pic);
+ 
+-  pic_reg = cfun->machine->pic_reg;
++  if (pic_reg == NULL_RTX)
++    pic_reg = cfun->machine->pic_reg;
+   if (TARGET_VXWORKS_RTP)
+     {
+       pic_rtx = gen_rtx_SYMBOL_REF (Pmode, VXWORKS_GOTT_BASE);
+@@ -8718,7 +8757,8 @@ arm_legitimize_address (rtx x, rtx orig_x, machine_mode mode)
+     {
+       /* We need to find and carefully transform any SYMBOL and LABEL
+ 	 references; so go back to the original address expression.  */
+-      rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX);
++      rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX, NULL_RTX,
++					  false /*compute_now*/);
+ 
+       if (new_x != orig_x)
+ 	x = new_x;
+@@ -8786,7 +8826,8 @@ thumb_legitimize_address (rtx x, rtx orig_x, machine_mode mode)
+     {
+       /* We need to find and carefully transform any SYMBOL and LABEL
+ 	 references; so go back to the original address expression.  */
+-      rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX);
++      rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX, NULL_RTX,
++					  false /*compute_now*/);
+ 
+       if (new_x != orig_x)
+ 	x = new_x;
+@@ -18074,7 +18115,7 @@ arm_emit_call_insn (rtx pat, rtx addr, bool sibcall)
+ 	  ? !targetm.binds_local_p (SYMBOL_REF_DECL (addr))
+ 	  : !SYMBOL_REF_LOCAL_P (addr)))
+     {
+-      require_pic_register ();
++      require_pic_register (NULL_RTX, false /*compute_now*/);
+       use_reg (&CALL_INSN_FUNCTION_USAGE (insn), cfun->machine->pic_reg);
+     }
+ 
+@@ -22006,7 +22047,7 @@ arm_expand_prologue (void)
+       mask &= THUMB2_WORK_REGS;
+       if (!IS_NESTED (func_type))
+ 	mask |= (1 << IP_REGNUM);
+-      arm_load_pic_register (mask);
++      arm_load_pic_register (mask, NULL_RTX);
+     }
+ 
+   /* If we are profiling, make sure no instructions are scheduled before
+@@ -25237,7 +25278,7 @@ thumb1_expand_prologue (void)
+   /* Load the pic register before setting the frame pointer,
+      so we can use r7 as a temporary work register.  */
+   if (flag_pic && arm_pic_register != INVALID_REGNUM)
+-    arm_load_pic_register (live_regs_mask);
++    arm_load_pic_register (live_regs_mask, NULL_RTX);
+ 
+   if (!frame_pointer_needed && CALLER_INTERWORKING_SLOT_SIZE > 0)
+     emit_move_insn (gen_rtx_REG (Pmode, ARM_HARD_FRAME_POINTER_REGNUM),
+diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
+index c8dc9474b1b..f6196e93168 100644
+--- a/gcc/config/arm/arm.md
++++ b/gcc/config/arm/arm.md
+@@ -6021,7 +6021,8 @@
+       operands[1] = legitimize_pic_address (operands[1], SImode,
+ 					    (!can_create_pseudo_p ()
+ 					     ? operands[0]
+-					     : 0));
++					     : NULL_RTX), NULL_RTX,
++					    false /*compute_now*/);
+   }
+   "
+ )
+@@ -6309,7 +6310,7 @@
+   /* r3 is clobbered by set/longjmp, so we can use it as a scratch
+      register.  */
+   if (arm_pic_register != INVALID_REGNUM)
+-    arm_load_pic_register (1UL << 3);
++    arm_load_pic_register (1UL << 3, NULL_RTX);
+   DONE;
+ }")
+ 
+@@ -8634,6 +8635,164 @@
+    (set_attr "conds" "clob")]
+ )
+ 
++;; Named patterns for stack smashing protection.
++(define_expand "stack_protect_combined_set"
++  [(parallel
++     [(set (match_operand:SI 0 "memory_operand" "")
++	   (unspec:SI [(match_operand:SI 1 "guard_operand" "")]
++		      UNSPEC_SP_SET))
++      (clobber (match_scratch:SI 2 ""))
++      (clobber (match_scratch:SI 3 ""))])]
++  ""
++  ""
++)
++
++;; Use a separate insn from the above expand to be able to have the mem outside
++;; the operand #1 when register allocation comes. This is needed to avoid LRA
++;; try to reload the guard since we need to control how PIC access is done in
++;; the -fpic/-fPIC case (see COMPUTE_NOW parameter when calling
++;; legitimize_pic_address ()).
++(define_insn_and_split "*stack_protect_combined_set_insn"
++  [(set (match_operand:SI 0 "memory_operand" "=m,m")
++	(unspec:SI [(mem:SI (match_operand:SI 1 "guard_addr_operand" "X,X"))]
++		   UNSPEC_SP_SET))
++   (clobber (match_scratch:SI 2 "=&l,&r"))
++   (clobber (match_scratch:SI 3 "=&l,&r"))]
++  ""
++  "#"
++  "reload_completed"
++  [(parallel [(set (match_dup 0) (unspec:SI [(mem:SI (match_dup 2))]
++					    UNSPEC_SP_SET))
++	      (clobber (match_dup 2))])]
++  "
++{
++  if (flag_pic)
++    {
++      /* Forces recomputing of GOT base now.  */
++      legitimize_pic_address (operands[1], SImode, operands[2], operands[3],
++			      true /*compute_now*/);
++    }
++  else
++    {
++      if (address_operand (operands[1], SImode))
++	operands[2] = operands[1];
++      else
++	{
++	  rtx mem = XEXP (force_const_mem (SImode, operands[1]), 0);
++	  emit_move_insn (operands[2], mem);
++	}
++    }
++}"
++  [(set_attr "arch" "t1,32")]
++)
++
++(define_insn "*stack_protect_set_insn"
++  [(set (match_operand:SI 0 "memory_operand" "=m,m")
++	(unspec:SI [(mem:SI (match_operand:SI 1 "register_operand" "+&l,&r"))]
++	 UNSPEC_SP_SET))
++   (clobber (match_dup 1))]
++  ""
++  "@
++   ldr\\t%1, [%1]\;str\\t%1, %0\;movs\t%1,#0
++   ldr\\t%1, [%1]\;str\\t%1, %0\;mov\t%1,#0"
++  [(set_attr "length" "8,12")
++   (set_attr "conds" "clob,nocond")
++   (set_attr "type" "multiple")
++   (set_attr "arch" "t1,32")]
++)
++
++(define_expand "stack_protect_combined_test"
++  [(parallel
++     [(set (pc)
++	   (if_then_else
++		(eq (match_operand:SI 0 "memory_operand" "")
++		    (unspec:SI [(match_operand:SI 1 "guard_operand" "")]
++			       UNSPEC_SP_TEST))
++		(label_ref (match_operand 2))
++		(pc)))
++      (clobber (match_scratch:SI 3 ""))
++      (clobber (match_scratch:SI 4 ""))
++      (clobber (reg:CC CC_REGNUM))])]
++  ""
++  ""
++)
++
++;; Use a separate insn from the above expand to be able to have the mem outside
++;; the operand #1 when register allocation comes. This is needed to avoid LRA
++;; try to reload the guard since we need to control how PIC access is done in
++;; the -fpic/-fPIC case (see COMPUTE_NOW parameter when calling
++;; legitimize_pic_address ()).
++(define_insn_and_split "*stack_protect_combined_test_insn"
++  [(set (pc)
++	(if_then_else
++		(eq (match_operand:SI 0 "memory_operand" "m,m")
++		    (unspec:SI [(mem:SI (match_operand:SI 1 "guard_addr_operand" "X,X"))]
++			       UNSPEC_SP_TEST))
++		(label_ref (match_operand 2))
++		(pc)))
++   (clobber (match_scratch:SI 3 "=&l,&r"))
++   (clobber (match_scratch:SI 4 "=&l,&r"))
++   (clobber (reg:CC CC_REGNUM))]
++  ""
++  "#"
++  "reload_completed"
++  [(const_int 0)]
++{
++  rtx eq;
++
++  if (flag_pic)
++    {
++      /* Forces recomputing of GOT base now.  */
++      legitimize_pic_address (operands[1], SImode, operands[3], operands[4],
++			      true /*compute_now*/);
++    }
++  else
++    {
++      if (address_operand (operands[1], SImode))
++	operands[3] = operands[1];
++      else
++	{
++	  rtx mem = XEXP (force_const_mem (SImode, operands[1]), 0);
++	  emit_move_insn (operands[3], mem);
++	}
++    }
++  if (TARGET_32BIT)
++    {
++      emit_insn (gen_arm_stack_protect_test_insn (operands[4], operands[0],
++						  operands[3]));
++      rtx cc_reg = gen_rtx_REG (CC_Zmode, CC_REGNUM);
++      eq = gen_rtx_EQ (CC_Zmode, cc_reg, const0_rtx);
++      emit_jump_insn (gen_arm_cond_branch (operands[2], eq, cc_reg));
++    }
++  else
++    {
++      emit_insn (gen_thumb1_stack_protect_test_insn (operands[4], operands[0],
++						     operands[3]));
++      eq = gen_rtx_EQ (VOIDmode, operands[4], const0_rtx);
++      emit_jump_insn (gen_cbranchsi4 (eq, operands[4], const0_rtx,
++				      operands[2]));
++    }
++  DONE;
++}
++  [(set_attr "arch" "t1,32")]
++)
++
++(define_insn "arm_stack_protect_test_insn"
++  [(set (reg:CC_Z CC_REGNUM)
++	(compare:CC_Z (unspec:SI [(match_operand:SI 1 "memory_operand" "m,m")
++				  (mem:SI (match_operand:SI 2 "register_operand" "+l,r"))]
++				 UNSPEC_SP_TEST)
++		      (const_int 0)))
++   (clobber (match_operand:SI 0 "register_operand" "=&l,&r"))
++   (clobber (match_dup 2))]
++  "TARGET_32BIT"
++  "ldr\t%0, [%2]\;ldr\t%2, %1\;eors\t%0, %2, %0"
++  [(set_attr "length" "8,12")
++   (set_attr "conds" "set")
++   (set_attr "type" "multiple")
++   (set_attr "arch" "t,32")]
++)
++
+ (define_expand "casesi"
+   [(match_operand:SI 0 "s_register_operand" "")	; index to jump on
+    (match_operand:SI 1 "const_int_operand" "")	; lower bound
+diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
+index 7e198f9bce4..69718ee9c7a 100644
+--- a/gcc/config/arm/predicates.md
++++ b/gcc/config/arm/predicates.md
+@@ -31,6 +31,23 @@
+ 	      || REGNO_REG_CLASS (REGNO (op)) != NO_REGS));
+ })
+ 
++; Predicate for stack protector guard's address in
++; stack_protect_combined_set_insn and stack_protect_combined_test_insn patterns
++(define_predicate "guard_addr_operand"
++  (match_test "true")
++{
++  return (CONSTANT_ADDRESS_P (op)
++	  || !targetm.cannot_force_const_mem (mode, op));
++})
++
++; Predicate for stack protector guard in stack_protect_combined_set and
++; stack_protect_combined_test patterns
++(define_predicate "guard_operand"
++  (match_code "mem")
++{
++  return guard_addr_operand (XEXP (op, 0), mode);
++})
++
+ (define_predicate "imm_for_neon_inv_logic_operand"
+   (match_code "const_vector")
+ {
+diff --git a/gcc/config/arm/thumb1.md b/gcc/config/arm/thumb1.md
+index 19dcdbcdd73..cd199c9c529 100644
+--- a/gcc/config/arm/thumb1.md
++++ b/gcc/config/arm/thumb1.md
+@@ -1962,4 +1962,17 @@
+   }"
+   [(set_attr "type" "mov_reg")]
+ )
++
++(define_insn "thumb1_stack_protect_test_insn"
++  [(set (match_operand:SI 0 "register_operand" "=&l")
++	(unspec:SI [(match_operand:SI 1 "memory_operand" "m")
++		    (mem:SI (match_operand:SI 2 "register_operand" "+l"))]
++	 UNSPEC_SP_TEST))
++   (clobber (match_dup 2))]
++  "TARGET_THUMB1"
++  "ldr\t%0, [%2]\;ldr\t%2, %1\;eors\t%0, %2, %0"
++  [(set_attr "length" "8")
++   (set_attr "conds" "set")
++   (set_attr "type" "multiple")]
++)
+ 
+diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md
+index 19416736ef9..8f9dbcb08dc 100644
+--- a/gcc/config/arm/unspecs.md
++++ b/gcc/config/arm/unspecs.md
+@@ -86,6 +86,9 @@
+   UNSPEC_PROBE_STACK    ; Probe stack memory reference
+   UNSPEC_NONSECURE_MEM	; Represent non-secure memory in ARMv8-M with
+ 			; security extension
++  UNSPEC_SP_SET		; Represent the setting of stack protector's canary
++  UNSPEC_SP_TEST	; Represent the testing of stack protector's canary
++			; against the guard.
+ ])
+ 
+ (define_c_enum "unspec" [
+diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
+index 295fc1f1143..895309b2f3c 100644
+--- a/gcc/doc/md.texi
++++ b/gcc/doc/md.texi
+@@ -7450,22 +7450,61 @@ builtins.
+ The get/set patterns have a single output/input operand respectively,
+ with @var{mode} intended to be @code{Pmode}.
+ 
++@cindex @code{stack_protect_combined_set} instruction pattern
++@item @samp{stack_protect_combined_set}
++This pattern, if defined, moves a @code{ptr_mode} value from an address
++whose declaration RTX is given in operand 1 to the memory in operand 0
++without leaving the value in a register afterward.  If several
++instructions are needed by the target to perform the operation (eg. to
++load the address from a GOT entry then load the @code{ptr_mode} value
++and finally store it), it is the backend's responsibility to ensure no
++intermediate result gets spilled.  This is to avoid leaking the value
++some place that an attacker might use to rewrite the stack guard slot
++after having clobbered it.
++
++If this pattern is not defined, then the address declaration is
++expanded first in the standard way and a @code{stack_protect_set}
++pattern is then generated to move the value from that address to the
++address in operand 0.
++
+ @cindex @code{stack_protect_set} instruction pattern
+ @item @samp{stack_protect_set}
+-This pattern, if defined, moves a @code{ptr_mode} value from the memory
+-in operand 1 to the memory in operand 0 without leaving the value in
+-a register afterward.  This is to avoid leaking the value some place
+-that an attacker might use to rewrite the stack guard slot after
+-having clobbered it.
++This pattern, if defined, moves a @code{ptr_mode} value from the valid
++memory location in operand 1 to the memory in operand 0 without leaving
++the value in a register afterward.  This is to avoid leaking the value
++some place that an attacker might use to rewrite the stack guard slot
++after having clobbered it.
++
++Note: on targets where the addressing modes do not allow to load
++directly from stack guard address, the address is expanded in a standard
++way first which could cause some spills.
+ 
+ If this pattern is not defined, then a plain move pattern is generated.
+ 
++@cindex @code{stack_protect_combined_test} instruction pattern
++@item @samp{stack_protect_combined_test}
++This pattern, if defined, compares a @code{ptr_mode} value from an
++address whose declaration RTX is given in operand 1 with the memory in
++operand 0 without leaving the value in a register afterward and
++branches to operand 2 if the values were equal.  If several
++instructions are needed by the target to perform the operation (eg. to
++load the address from a GOT entry then load the @code{ptr_mode} value
++and finally store it), it is the backend's responsibility to ensure no
++intermediate result gets spilled.  This is to avoid leaking the value
++some place that an attacker might use to rewrite the stack guard slot
++after having clobbered it.
++
++If this pattern is not defined, then the address declaration is
++expanded first in the standard way and a @code{stack_protect_test}
++pattern is then generated to compare the value from that address to the
++value at the memory in operand 0.
++
+ @cindex @code{stack_protect_test} instruction pattern
+ @item @samp{stack_protect_test}
+ This pattern, if defined, compares a @code{ptr_mode} value from the
+-memory in operand 1 with the memory in operand 0 without leaving the
+-value in a register afterward and branches to operand 2 if the values
+-were equal.
++valid memory location in operand 1 with the memory in operand 0 without
++leaving the value in a register afterward and branches to operand 2 if
++the values were equal.
+ 
+ If this pattern is not defined, then a plain compare pattern and
+ conditional branch pattern is used.
+diff --git a/gcc/function.c b/gcc/function.c
+index 85a5d9f43f7..69523c1d723 100644
+--- a/gcc/function.c
++++ b/gcc/function.c
+@@ -4937,18 +4937,34 @@ stack_protect_epilogue (void)
+   tree guard_decl = targetm.stack_protect_guard ();
+   rtx_code_label *label = gen_label_rtx ();
+   rtx x, y;
+-  rtx_insn *seq;
++  rtx_insn *seq = NULL;
+ 
+   x = expand_normal (crtl->stack_protect_guard);
+-  if (guard_decl)
+-    y = expand_normal (guard_decl);
++
++  if (targetm.have_stack_protect_combined_test () && guard_decl)
++    {
++      gcc_assert (DECL_P (guard_decl));
++      y = DECL_RTL (guard_decl);
++      /* Allow the target to compute address of Y and compare it with X without
++	 leaking Y into a register.  This combined address + compare pattern
++	 allows the target to prevent spilling of any intermediate results by
++	 splitting it after register allocator.  */
++      seq = targetm.gen_stack_protect_combined_test (x, y, label);
++    }
+   else
+-    y = const0_rtx;
++    {
++      if (guard_decl)
++	y = expand_normal (guard_decl);
++      else
++	y = const0_rtx;
++
++      /* Allow the target to compare Y with X without leaking either into
++	 a register.  */
++      if (targetm.have_stack_protect_test ())
++	seq = targetm.gen_stack_protect_test (x, y, label);
++    }
+ 
+-  /* Allow the target to compare Y with X without leaking either into
+-     a register.  */
+-  if (targetm.have_stack_protect_test ()
+-      && ((seq = targetm.gen_stack_protect_test (x, y, label)) != NULL_RTX))
++  if (seq)
+     emit_insn (seq);
+   else
+     emit_cmp_and_jump_insns (x, y, EQ, NULL_RTX, ptr_mode, 1, label);
+diff --git a/gcc/target-insns.def b/gcc/target-insns.def
+index 9a552c3d11c..d39889b3522 100644
+--- a/gcc/target-insns.def
++++ b/gcc/target-insns.def
+@@ -96,7 +96,9 @@ DEF_TARGET_INSN (sibcall_value, (rtx x0, rtx x1, rtx opt2, rtx opt3,
+ DEF_TARGET_INSN (simple_return, (void))
+ DEF_TARGET_INSN (split_stack_prologue, (void))
+ DEF_TARGET_INSN (split_stack_space_check, (rtx x0, rtx x1))
++DEF_TARGET_INSN (stack_protect_combined_set, (rtx x0, rtx x1))
+ DEF_TARGET_INSN (stack_protect_set, (rtx x0, rtx x1))
++DEF_TARGET_INSN (stack_protect_combined_test, (rtx x0, rtx x1, rtx x2))
+ DEF_TARGET_INSN (stack_protect_test, (rtx x0, rtx x1, rtx x2))
+ DEF_TARGET_INSN (store_multiple, (rtx x0, rtx x1, rtx x2))
+ DEF_TARGET_INSN (tablejump, (rtx x0, rtx x1))
+-- 
+2.21.0
diff --git a/poky/meta/recipes-devtools/gcc/gcc-9.1.inc b/poky/meta/recipes-devtools/gcc/gcc-9.1.inc
index eb25380..4c648a1 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-9.1.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-9.1.inc
@@ -33,7 +33,6 @@
            file://0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
            file://0004-64-bit-multilib-hack.patch \
            file://0005-optional-libstdc.patch \
-           file://0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
            file://0007-COLLECT_GCC_OPTIONS.patch \
            file://0008-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
            file://0009-fortran-cross-compile-hack.patch \
diff --git a/poky/meta/recipes-devtools/gcc/gcc-9.1/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch b/poky/meta/recipes-devtools/gcc/gcc-9.1/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
deleted file mode 100644
index 4a552d5..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc-9.1/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From ca3b3ac12d9b6e1065333dec89e7be2c733509d9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:14:20 +0400
-Subject: [PATCH 06/37] gcc: disable MASK_RELAX_PIC_CALLS bit
-
-The new feature added after 4.3.3
-"http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html"
-will cause cc1plus eat up all the system memory when build webkit-gtk.
-The function mips_get_pic_call_symbol keeps on recursively calling itself.
-Disable this feature to walk aside the bug.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [configuration]
----
- gcc/configure    | 7 -------
- gcc/configure.ac | 7 -------
- 2 files changed, 14 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index 2e08396622e..d36cb51bc2c 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -27509,13 +27509,6 @@ $as_echo_n "checking assembler and linker for explicit JALR relocation... " >&6;
-         rm -f conftest.*
-       fi
-     fi
--    if test $gcc_cv_as_ld_jalr_reloc = yes; then
--      if test x$target_cpu_default = x; then
--        target_cpu_default=MASK_RELAX_PIC_CALLS
--      else
--        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
--      fi
--    fi
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ld_jalr_reloc" >&5
- $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
- 
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 7d34911573e..dfa88c35f3f 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -4816,13 +4816,6 @@ x:
-         rm -f conftest.*
-       fi
-     fi
--    if test $gcc_cv_as_ld_jalr_reloc = yes; then
--      if test x$target_cpu_default = x; then
--        target_cpu_default=MASK_RELAX_PIC_CALLS
--      else
--        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
--      fi
--    fi
-     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
- 
-     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
--- 
-2.20.1
-