From 56b1e56d2c2fa7611dc87192f26aac1da9fc63df Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 28 Apr 2020 11:56:06 +0100 Subject: [PATCH] Rebase libiberty source with latest changes from gcc. PR 25876 PR demangler/94797 * cp-demangle.c (cplus_demangle_operators): Add ss <=> operator. * testsuite/demangle-expected: Add operator<=> test. --- libiberty/ChangeLog | 55 ++++++---- libiberty/Makefile.in | 5 +- libiberty/aclocal.m4 | 2 + libiberty/configure | 145 ++++++++++++++++++++++++++ libiberty/configure.ac | 3 + libiberty/cp-demangle.c | 1 + libiberty/simple-object.c | 3 + libiberty/testsuite/demangle-expected | 3 + 8 files changed, 196 insertions(+), 21 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index fd31323de78..3b61aaca93c 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,38 +1,53 @@ +2020-04-27 Jakub Jelinek + + PR demangler/94797 + * cp-demangle.c (cplus_demangle_operators): Add ss <=> operator. + * testsuite/demangle-expected: Add operator<=> test. + +2020-04-25 H.J. Lu + + PR bootstrap/94739 + * Makefile.in (COMPILE.c): Add @CET_HOST_FLAGS@. + (configure_deps): Add $(srcdir)/../config/cet.m4 and + $(srcdir)/../config/enable.m4. + * aclocal.m4: Include ../config/cet.m4 and ../config/enable.m4. + * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and + AC_SUBST(CET_HOST_FLAGS). + * configure: Regenerated. + +2020-03-05 Egeyar Bagcioglu + + * simple-object.c (handle_lto_debug_sections): Name + ".GCC.command.line" among debug sections to be copied over + from lto objects. + +2020-03-02 Nick Clifton + + * testsuite/demangle-expected: Update expected demangling of + enable_if pattern. + 2020-03-02 H.J. Lu PR lto/93966 * simple-object.c (handle_lto_debug_sections): Also copy .note.gnu.property section. -2020-02-25 Andrew Burgess +2020-02-12 Sandra Loosemore - * rust-demangle.h: Removed. + PR libstdc++/79193 + PR libstdc++/88999 - Import from gcc mainline: - 2020-02-05 Andrew Burgess + * configure: Regenerated. + +2020-02-05 Andrew Burgess * hashtab.c (htab_remove_elt): Make a parameter const. (htab_remove_elt_with_hash): Likewise. - 2020-01-23 Alexandre Oliva +2020-01-23 Alexandre Oliva * argv.c (writeargv): Output empty args as "". - 2020-01-18 Iain Sandoe - - * cp-demangle.c (cplus_demangle_operators): Add the co_await - operator. - * testsuite/demangle-expected: Test co_await operator mangling. - -2020-02-19 Andrew Burgess - - * configure: Regenerate. - -2020-01-17 Nick Clifton - - * testsuite/demangle-expected: Update expected demangling of - enable_if pattern. - 2020-01-01 Jakub Jelinek Update copyright years. diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in index fe738d0db43..d6b302e02fd 100644 --- a/libiberty/Makefile.in +++ b/libiberty/Makefile.in @@ -112,7 +112,8 @@ installcheck: installcheck-subdir INCDIR=$(srcdir)/$(MULTISRCTOP)../include COMPILE.c = $(CC) -c @DEFS@ $(CFLAGS) $(CPPFLAGS) -I. -I$(INCDIR) \ - $(HDEFINES) @ac_libiberty_warn_cflags@ -D_GNU_SOURCE + $(HDEFINES) @ac_libiberty_warn_cflags@ -D_GNU_SOURCE \ + @CET_HOST_FLAGS@ # Just to make sure we don't use a built-in rule with VPATH .c.$(objext): @@ -481,6 +482,8 @@ config.status: $(srcdir)/configure AUTOCONF = autoconf configure_deps = $(srcdir)/aclocal.m4 \ $(srcdir)/../config/acx.m4 \ + $(srcdir)/../config/cet.m4 \ + $(srcdir)/../config/enable.m4 \ $(srcdir)/../config/no-executables.m4 \ $(srcdir)/../config/override.m4 \ $(srcdir)/../config/picflag.m4 \ diff --git a/libiberty/aclocal.m4 b/libiberty/aclocal.m4 index bf8a907100f..34c0a5bab62 100644 --- a/libiberty/aclocal.m4 +++ b/libiberty/aclocal.m4 @@ -1,4 +1,6 @@ sinclude(../config/acx.m4) +sinclude(../config/cet.m4) +sinclude(../config/enable.m4) sinclude(../config/no-executables.m4) sinclude(../config/override.m4) sinclude(../config/picflag.m4) diff --git a/libiberty/configure b/libiberty/configure index d2413f13acf..2b52ce86c89 100755 --- a/libiberty/configure +++ b/libiberty/configure @@ -626,6 +626,7 @@ pexecute target_header_dir CHECK LIBOBJS +CET_HOST_FLAGS NOASANFLAG PICFLAG INSTALL_DATA @@ -710,6 +711,7 @@ enable_maintainer_mode enable_multilib enable_install_libiberty enable_largefile +enable_cet ' ac_precious_vars='build_alias host_alias @@ -1337,6 +1339,7 @@ Optional Features: --enable-multilib build many library versions (default) --enable-install-libiberty Install headers and library for end users --disable-largefile omit support for large files + --enable-cet enable Intel CET in host libraries [default=auto] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -5264,6 +5267,148 @@ case " ${CFLAGS} " in esac + # Check whether --enable-cet was given. +if test "${enable_cet+set}" = set; then : + enableval=$enable_cet; + case "$enableval" in + yes|no|auto) ;; + *) as_fn_error $? "Unknown argument to enable/disable cet" "$LINENO" 5 ;; + esac + +else + enable_cet=auto +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CET support" >&5 +$as_echo_n "checking for CET support... " >&6; } + +case "$host" in + i[34567]86-*-linux* | x86_64-*-linux*) + may_have_cet=yes + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" + case "$enable_cet" in + auto) + # Check if target supports multi-byte NOPs + # and if assembler supports CET insn. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#if !defined(__SSE2__) +#error target does not support multi-byte NOPs +#else +asm ("setssbsy"); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + enable_cet=yes +else + enable_cet=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + yes) + # Check if assembler supports CET. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +asm ("setssbsy"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + as_fn_error $? "assembler with CET support is required for --enable-cet" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + esac + CFLAGS="$save_CFLAGS" + ;; + *) + may_have_cet=no + enable_cet=no + ;; +esac + +if test x$may_have_cet = xyes; then + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +static void +foo (void) +{ +} + +static void +__attribute__ ((noinline, noclone)) +xxx (void (*f) (void)) +{ + f (); +} + +static void +__attribute__ ((noinline, noclone)) +bar (void) +{ + xxx (foo); +} + +int +main () +{ + bar (); + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + have_cet=no +else + have_cet=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LDFLAGS="$save_LDFLAGS" + if test x$enable_cet = xno -a x$have_cet = xyes; then + as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5 + fi +fi +if test x$enable_cet = xyes; then + CET_HOST_FLAGS="-fcf-protection" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + echo "# Warning: this fragment is automatically generated" > temp-frag if [ -n "${frag}" ] && [ -f "${frag}" ]; then diff --git a/libiberty/configure.ac b/libiberty/configure.ac index f1ce76010c9..4e2599c14a8 100644 --- a/libiberty/configure.ac +++ b/libiberty/configure.ac @@ -243,6 +243,9 @@ case " ${CFLAGS} " in esac AC_SUBST(NOASANFLAG) +GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) +AC_SUBST(CET_HOST_FLAGS) + echo "# Warning: this fragment is automatically generated" > temp-frag if [[ -n "${frag}" ]] && [[ -f "${frag}" ]]; then diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index fc55b7fae1f..cbfb2f937ca 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -1860,6 +1860,7 @@ const struct demangle_operator_info cplus_demangle_operators[] = { "sP", NL ("sizeof..."), 1 }, { "sZ", NL ("sizeof..."), 1 }, { "sc", NL ("static_cast"), 2 }, + { "ss", NL ("<=>"), 2 }, { "st", NL ("sizeof "), 1 }, { "sz", NL ("sizeof "), 1 }, { "tr", NL ("throw"), 0 }, diff --git a/libiberty/simple-object.c b/libiberty/simple-object.c index e6c466ab767..92f5698d0a6 100644 --- a/libiberty/simple-object.c +++ b/libiberty/simple-object.c @@ -301,6 +301,9 @@ handle_lto_debug_sections (const char *name, int rename) COMDAT sections in objects produced by GCC. */ else if (strcmp (name, ".comment") == 0) return strcpy (newname, name); + /* Copy over .GCC.command.line section under the same name if present. */ + else if (strcmp (name, ".GCC.command.line") == 0) + return strcpy (newname, name); free (newname); return NULL; } diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index ccadf84e608..d8e50951f84 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -1453,3 +1453,6 @@ void foo<(void*)0>(enable_if<((void*)0)==(decltype(nullptr)), void>::type*) _ZNK5coro15emptyawEv coro1::empty::operator co_await() const + +_ZNK3FoossERKS_ +Foo::operator<=>(Foo const&) const -- 2.30.2