Skip to content
Snippets Groups Projects
  1. Jun 16, 2023
  2. Jun 15, 2023
    • Marek Polacek's avatar
      configure: Implement --enable-host-pie · b6cb10af
      Marek Polacek authored
      [ This is my third attempt to add this configure option.  The first
      version was approved but it came too late in the development cycle.
      The second version was also approved, but I had to revert it:
      <https://gcc.gnu.org/pipermail/gcc-patches/2022-November/607082.html>.
      I've fixed the problem (by moving $(PICFLAG) from INTERNAL_CFLAGS to
      ALL_COMPILERFLAGS).  Another change is that since r13-4536 I no longer
      need to touch Makefile.def, so this patch is simplified. ]
      
      This patch implements the --enable-host-pie configure option which
      makes the compiler executables PIE.  This can be used to enhance
      protection against ROP attacks, and can be viewed as part of a wider
      trend to harden binaries.
      
      It is similar to the option --enable-host-shared, except that --e-h-s
      won't add -shared to the linker flags whereas --e-h-p will add -pie.
      It is different from --enable-default-pie because that option just
      adds an implicit -fPIE/-pie when the compiler is invoked, but the
      compiler itself isn't PIE.
      
      Since r12-5768-gfe7c3ecf, PCH works well with PIE, so there are no PCH
      regressions.
      
      When building the compiler, the build process may use various in-tree
      libraries; these need to be built with -fPIE so that it's possible to
      use them when building a PIE.  For instance, when --with-included-gettext
      is in effect, intl object files must be compiled with -fPIE.  Similarly,
      when building in-tree gmp, isl, mpfr and mpc, they must be compiled with
      -fPIE.
      
      With this patch and --enable-host-pie used to configure gcc:
      
      $ file gcc/cc1{,plus,obj,gm2} gcc/f951 gcc/lto1 gcc/cpp gcc/go1 gcc/rust1 gcc/gnat1
      gcc/cc1:     ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=98e22cde129d304aa6f33e61b1c39e144aeb135e, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/cc1plus: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=859d1ea37e43dfe50c18fd4e3dd9a34bb1db8f77, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/cc1obj:  ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=1964f8ecee6163182bc26134e2ac1f324816e434, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/cc1gm2:  ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a396672c7ff913d21855829202e7b02ecf42ff4c, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/f951:    ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=59c523db893186547ac75c7a71f48be0a461c06b, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/lto1:    ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=084a7b77df7be2d63c2d4c655b5bbc3fcdb6038d, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/cpp:     ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=3503bf8390d219a10d6653b8560aa21158132168, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/go1:     ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=988cc673af4fba5dcb482f4b34957b99050a68c5, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/rust1:   ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b6a5d3d514446c4dcdee0707f086ab9b274a8a3c, for GNU/Linux 3.2.0, with debug_info, not stripped
      gcc/gnat1:   ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bb11ccdc2c366fe3fe0980476bcd8ca19b67f9dc, for GNU/Linux 3.2.0, with debug_info, not stripped
      
      I plan to add an option to link with -Wl,-z,now.
      
      Bootstrapped on x86_64-pc-linux-gnu with --with-included-gettext
      --enable-host-pie as well as without --enable-host-pie.  Also tested
      on a Debian system where the system gcc was configured with
      --enable-default-pie.
      
      Co-Authored by: Iain Sandoe  <iain@sandoe.co.uk>
      
      ChangeLog:
      
      	* configure.ac (--enable-host-pie): New check.  Set PICFLAG after this
      	check.
      	* configure: Regenerate.
      
      c++tools/ChangeLog:
      
      	* Makefile.in: Rename PIEFLAG to PICFLAG.  Set LD_PICFLAG.  Use it.
      	Use pic/libiberty.a if PICFLAG is set.
      	* configure.ac (--enable-default-pie): Set PICFLAG instead of PIEFLAG.
      	(--enable-host-pie): New check.
      	* configure: Regenerate.
      
      fixincludes/ChangeLog:
      
      	* Makefile.in: Set and use PICFLAG and LD_PICFLAG.  Use the "pic"
      	build of libiberty if PICFLAG is set.
      	* configure.ac:
      	* configure: Regenerate.
      
      gcc/ChangeLog:
      
      	* Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
      	Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
      	ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
      	check.
      	* configure: Regenerate.
      	* doc/install.texi: Document --enable-host-pie.
      
      gcc/ada/ChangeLog:
      
      	* gcc-interface/Make-lang.in (ALL_ADAFLAGS): Remove NO_PIE_CFLAGS.  Add
      	PICFLAG.  Use PICFLAG when building ada/b_gnat1.o and ada/b_gnatb.o.
      	* gcc-interface/Makefile.in: Use pic/libiberty.a if PICFLAG is set.
      	Remove NO_PIE_FLAG.
      
      gcc/m2/ChangeLog:
      
      	* Make-lang.in: New var, GM2_PICFLAGS.  Use it.
      
      gcc/d/ChangeLog:
      
      	* Make-lang.in: Remove NO_PIE_CFLAGS.
      
      intl/ChangeLog:
      
      	* Makefile.in: Use @PICFLAG@ in COMPILE as well.
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      
      libcody/ChangeLog:
      
      	* Makefile.in: Pass LD_PICFLAG to LDFLAGS.
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
      	check.
      	* configure: Regenerate.
      
      libcpp/ChangeLog:
      
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      
      libdecnumber/ChangeLog:
      
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      
      libiberty/ChangeLog:
      
      	* configure.ac: Also set shared when enable_host_pie.
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      b6cb10af
  3. Jun 14, 2023
  4. Jun 13, 2023
    • Nathan Sidwell's avatar
      c++: Fix templated convertion operator demangling · 5a897036
      Nathan Sidwell authored
      Instantiations of templated conversion operators failed to demangle
      for cases such as 'operator X<int>', but worked for 'operator X<int>
      &', due to thinking the template instantiation of X was the
      instantiation of the conversion operator itself.
      
      	libiberty/
      	* cp-demangle.c (d_print_conversion): Remove incorrect
      	template instantiation handling.
      	* testsuite/demangle-expected: Add testcases.
      5a897036
  5. Jun 08, 2023
  6. Jun 07, 2023
    • Costas Argyris's avatar
      libiberty: writeargv: Simplify function error mode. · 3fe017ee
      Costas Argyris authored
      You are right, this is also a remnant of the old function design
      that I completely missed.    Here is the follow-up patch for that.
      
      Thanks for pointing it out.
      
      Costas
      
      On Tue, 6 Jun 2023 at 04:12, Jeff Law <jeffreyalaw@gmail.com> wrote:
      
          On 6/5/23 08:37, Costas Argyris via Gcc-patches wrote:
          > writeargv can be simplified by getting rid of the error exit mode
          > that was only relevant many years ago when the function used
          > to open the file descriptor internally.
          [ ... ]
          Thanks.  I've pushed this to the trunk.
      
          You could (as a follow-up) simplify it even further.  There's no need
          for the status variable as far as I can tell.  You could just have the
          final return be "return 0;" instead of "return status;".
      
      libiberty/
      	* argv.c (writeargv): Constant propagate "0" for "status",
      	simplifying the code slightly.
      3fe017ee
    • GCC Administrator's avatar
      Daily bump. · 4f0d4825
      GCC Administrator authored
      4f0d4825
  7. Jun 06, 2023
    • Costas Argyris's avatar
      libiberty: writeargv: Simplify function error mode. · 4d1e4ce9
      Costas Argyris authored
      writeargv can be simplified by getting rid of the error exit mode
      that was only relevant many years ago when the function used
      to open the file descriptor internally.
      
      0001-libiberty-writeargv-Simplify-function-error-mode.patch
      
      From 1271552baee5561fa61652f4ca7673c9667e4f8f Mon Sep 17 00:00:00 2001
      From: Costas Argyris <costas.argyris@gmail.com>
      Date: Mon, 5 Jun 2023 15:02:06 +0100
      Subject: [PATCH] libiberty: writeargv: Simplify function error mode.
      
      The goto-based error mode was based on a previous version
      of the function where it was responsible for opening the
      file, so it had to close it upon any exit:
      
      https://inbox.sourceware.org/gcc-patches/20070417200340.GM9017@sparrowhawk.codesourcery.com/
      
      
      
      (thanks pinskia)
      
      This is no longer the case though since now the function
      takes the file descriptor as input, so the exit mode on
      error can be just a simple return 1 statement.
      
      libiberty/
      	* argv.c (writeargv): Simplify & remove gotos.
      
      Signed-off-by: default avatarCostas Argyris <costas.argyris@gmail.com>
      4d1e4ce9
    • GCC Administrator's avatar
      Daily bump. · 14da7648
      GCC Administrator authored
      14da7648
  8. Jun 05, 2023
  9. Jun 04, 2023
  10. Jun 03, 2023
    • Patrick Palka's avatar
      c++: mangle noexcept-expr [PR70790] · 999e617d
      Patrick Palka authored
      This implements noexcept(expr) mangling and demangling as per the
      Itanium ABI.
      
      	PR c++/70790
      
      gcc/cp/ChangeLog:
      
      	* mangle.cc (write_expression): Handle NOEXCEPT_EXPR.
      
      libiberty/ChangeLog:
      
      	* cp-demangle.c (cplus_demangle_operators): Add the noexcept
      	operator.
      	(d_print_comp_inner) <case DEMANGLE_COMPONENT_UNARY>: Always
      	print parens around the operand of noexcept too.
      	* testsuite/demangle-expected: Test noexcept operator
      	demangling.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/abi/mangle78.C: New test.
      999e617d
  11. Apr 03, 2023
  12. Apr 02, 2023
    • Jakub Jelinek's avatar
      libiberty: Make strstr.c in libiberty ANSI compliant · 1719fa40
      Jakub Jelinek authored
      On Fri, Nov 13, 2020 at 11:53:43AM -0700, Jeff Law via Gcc-patches wrote:
      >
      > On 5/1/20 6:06 PM, Seija Kijin via Gcc-patches wrote:
      > > The original code in libiberty says "FIXME" and then says it has not been
      > > validated to be ANSI compliant. However, this patch changes the function to
      > > match implementations that ARE compliant, and such code is in the public
      > > domain.
      > >
      > > I ran the test results, and there are no test failures.
      >
      > Thanks.  This seems to be the standard "simple" strstr implementation. 
      > There's significantly faster implementations available, but I doubt it's
      > worth the effort as the version in this file only gets used if there is
      > no system strstr.c.
      
      Except that PR109306 says the new version is non-compliant and
      is certainly slower than what we used to have.  The only problem I see
      on the old version (sure, it is not very fast version) is that for
      strstr ("abcd", "") it returned "abcd"+4 rather than "abcd" because
      strchr in that case changed p to point to the last character and then
      strncmp returned 0.
      
      The question reported in PR109306 is whether memcmp is required not to
      access characters beyond the first difference or not.
      For all of memcmp/strcmp/strncmp, C17 says:
      "The sign of a nonzero value returned by the comparison functions memcmp, strcmp, and strncmp
      is determined by the sign of the difference between the values of the first pair of characters (both
      interpreted as unsigned char) that differ in the objects being compared."
      but then in memcmp description says:
      "The memcmp function compares the first n characters of the object pointed to by s1 to the first n
      characters of the object pointed to by s2."
      rather than something similar to strncmp wording:
      "The strncmp function compares not more than n characters (characters that follow a null character
      are not compared) from the array pointed to by s1 to the array pointed to by
      s2."
      So, while for strncmp it seems clearly well defined when there is zero
      terminator before reaching the n, for memcmp it is unclear if say
      int
      memcmp (const void *s1, const void *s2, size_t n)
      {
        int ret = 0;
        size_t i;
        const unsigned char *p1 = (const unsigned char *) s1;
        const unsigned char *p2 = (const unsigned char *) s2;
      
        for (i = n; i; i--)
          if (p1[i - 1] != p2[i - 1])
            ret = p1[i - 1] < p2[i - 1] ? -1 : 1;
        return ret;
      }
      wouldn't be valid implementation (one which always compares all characters
      and just returns non-zero from the first one that differs).
      
      So, shouldn't we just revert and handle the len == 0 case correctly?
      
      I think almost nothing really uses it, but still, the old version
      at least worked nicer with a fast strchr.
      Could as well strncmp (p + 1, s2 + 1, len - 1) if that is preferred
      because strchr already compared the first character.
      
      2023-04-02  Jakub Jelinek  <jakub@redhat.com>
      
      	PR other/109306
      	* strstr.c: Revert the 2020-11-13 changes.
      	(strstr): Return s1 if len is 0.
      1719fa40
  13. Mar 31, 2023
  14. Mar 30, 2023
    • Gerald Pfeifer's avatar
      libiberty: Remove a reference to the Glibc manual · 83d2b1cc
      Gerald Pfeifer authored
      longjmp is not specific to Glibc, and GCC supports lots of systems
      that do not use Glibc. Plus this link has been broken in the web
      version for ages without a good way to fix.
      
      libiberty/ChangeLog:
      
      	* obstacks.texi (Preparing for Obstacks): Remove a (broken)
      	reference to the Glibc manual.
      83d2b1cc
  15. Mar 04, 2023
  16. Mar 03, 2023
  17. Feb 12, 2023
  18. Feb 11, 2023
  19. Jan 16, 2023
  20. Jan 08, 2023
  21. Jan 07, 2023
    • LIU Hao's avatar
      Always define `WIN32_LEAN_AND_MEAN` before <windows.h> · 902c7559
      LIU Hao authored
      Recently, mingw-w64 has got updated <msxml.h> from Wine which is included
      indirectly by <windows.h> if `WIN32_LEAN_AND_MEAN` is not defined. The
      `IXMLDOMDocument` class has a member function named `abort()`, which gets
      affected by our `abort()` macro in "system.h".
      
      `WIN32_LEAN_AND_MEAN` should, nevertheless, always be defined. This
      can exclude 'APIs such as Cryptography, DDE, RPC, Shell, and Windows
      Sockets' [1], and speed up compilation of these files a bit.
      
      [1] https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
      
      gcc/
      
      	PR middle-end/108300
      	* config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
      	before <windows.h>.
      	* diagnostic-color.cc: Likewise.
      	* plugin.cc: Likewise.
      	* prefix.cc: Likewise.
      
      gcc/ada/
      
      	PR middle-end/108300
      	* adaint.c: Define `WIN32_LEAN_AND_MEAN` before `#include
      	<windows.h>`.
      	* cio.c: Likewise.
      	* ctrl_c.c: Likewise.
      	* expect.c: Likewise.
      	* gsocket.h: Likewise.
      	* mingw32.h: Likewise.
      	* mkdir.c: Likewise.
      	* rtfinal.c: Likewise.
      	* rtinit.c: Likewise.
      	* seh_init.c: Likewise.
      	* sysdep.c: Likewise.
      	* terminals.c: Likewise.
      	* tracebak.c: Likewise.
      
      gcc/jit/
      
      	PR middle-end/108300
      	* jit-w32.h: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      
      libatomic/
      
      	PR middle-end/108300
      	* config/mingw/lock.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libffi/
      
      	PR middle-end/108300
      	* src/aarch64/ffi.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libgcc/
      
      	PR middle-end/108300
      	* config/i386/enable-execute-stack-mingw32.c: Define
      	`WIN32_LEAN_AND_MEAN` before <windows.h>.
      	* libgcc2.c: Likewise.
      	* unwind-generic.h: Likewise.
      
      libgfortran/
      
      	PR middle-end/108300
      	* intrinsics/sleep.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libgomp/
      
      	PR middle-end/108300
      	* config/mingw32/proc.c: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      
      libiberty/
      
      	PR middle-end/108300
      	* make-temp-file.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      	* pex-win32.c: Likewise.
      
      libssp/
      
      	PR middle-end/108300
      	* ssp.c: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      
      libstdc++-v3/
      
      	PR middle-end/108300
      	* src/c++11/system_error.cc: Define `WIN32_LEAN_AND_MEAN` before
      	<windows.h>.
      	* src/c++11/thread.cc: Likewise.
      	* src/c++17/fs_ops.cc: Likewise.
      	* src/filesystem/ops.cc: Likewise.
      
      libvtv/
      
      	PR middle-end/108300
      	* vtv_malloc.cc: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
      	* vtv_rts.cc: Likewise.
      	* vtv_utils.cc: Likewise.
      902c7559
  22. Nov 24, 2022
  23. Nov 23, 2022
    • Marek Polacek's avatar
      Revert "configure: Implement --enable-host-pie" · 04711f51
      Marek Polacek authored
      This reverts commit 251c72a6.
      04711f51
    • Marek Polacek's avatar
      configure: Implement --enable-host-pie · 251c72a6
      Marek Polacek authored
      This patch implements the --enable-host-pie configure option which
      makes the compiler executables PIE.  This can be used to enhance
      protection against ROP attacks, and can be viewed as part of a wider
      trend to harden binaries.
      
      It is similar to the option --enable-host-shared, except that --e-h-s
      won't add -shared to the linker flags whereas --e-h-p will add -pie.
      It is different from --enable-default-pie because that option just
      adds an implicit -fPIE/-pie when the compiler is invoked, but the
      compiler itself isn't PIE.
      
      Since r12-5768-gfe7c3ecf, PCH works well with PIE, so there are no PCH
      regressions.
      
      When building the compiler, the build process may use various in-tree
      libraries; these need to be built with -fPIE so that it's possible to
      use them when building a PIE.  For instance, when --with-included-gettext
      is in effect, intl object files must be compiled with -fPIE.  Similarly,
      when building in-tree gmp, isl, mpfr and mpc, they must be compiled with
      -fPIE.
      
      I plan to add an option to link with -Wl,-z,now.
      
      ChangeLog:
      
      	* Makefile.def: Pass $(PICFLAG) to AM_CFLAGS for gmp, mpfr, mpc, and
      	isl.
      	* Makefile.in: Regenerate.
      	* Makefile.tpl: Set PICFLAG.
      	* configure.ac (--enable-host-pie): New check.  Set PICFLAG after this
      	check.
      	* configure: Regenerate.
      
      c++tools/ChangeLog:
      
      	* Makefile.in: Rename PIEFLAG to PICFLAG.  Set LD_PICFLAG.  Use it.
      	Use pic/libiberty.a if PICFLAG is set.
      	* configure.ac (--enable-default-pie): Set PICFLAG instead of PIEFLAG.
      	(--enable-host-pie): New check.
      	* configure: Regenerate.
      
      fixincludes/ChangeLog:
      
      	* Makefile.in: Set and use PICFLAG and LD_PICFLAG.  Use the "pic"
      	build of libiberty if PICFLAG is set.
      	* configure.ac:
      	* configure: Regenerate.
      
      gcc/ChangeLog:
      
      	* Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
      	Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
      	ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
      	check.
      	* configure: Regenerate.
      	* doc/install.texi: Document --enable-host-pie.
      
      gcc/d/ChangeLog:
      
      	* Make-lang.in: Remove NO_PIE_CFLAGS.
      
      intl/ChangeLog:
      
      	* Makefile.in: Use @PICFLAG@ in COMPILE as well.
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      
      libcody/ChangeLog:
      
      	* Makefile.in: Pass LD_PICFLAG to LDFLAGS.
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
      	check.
      	* configure: Regenerate.
      
      libcpp/ChangeLog:
      
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      
      libdecnumber/ChangeLog:
      
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      
      libiberty/ChangeLog:
      
      	* configure.ac: Also set shared when enable_host_pie.
      	* configure: Regenerate.
      
      zlib/ChangeLog:
      
      	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
      	(--enable-host-pie): New check.  Set PICFLAG after this check.
      	* configure: Regenerate.
      251c72a6
  24. Nov 21, 2022
  25. Nov 16, 2022
  26. Nov 15, 2022
    • Nathan Sidwell's avatar
      demangler: Templated lambda demangling · 46c3d9c8
      Nathan Sidwell authored
      Templated lambdas have a template-head, which is part of their
      signature.  GCC ABI 18 mangles that into the lambda name.  This adds
      support to the demangler.  We have to introduce artificial template
      parameter names, as we need to refer to them from later components of
      the lambda signature. We use $T:n, $N:n and $TT:n for type, non-type
      and template parameters.  Non-type parameter names are not shown in
      the strictly correct location -- for instance 'int (&NT) ()' would be
      shown as 'int (&) $N:n'.  That's unfortunate, but an orthogonal issue.
      The 'is_lambda_arg' field is now repurposed as indicating the number
      of explicit template parameters (1-based).
      
      	include/
      	* demangle.h (enum demangle_component_type): Add
      	DEMANGLE_COMPONENT_TEMPLATE_HEAD,
      	DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM,
      	DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM,
      	DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM,
      	DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM.
      	libiberty/
      	* cp-demangle.c (struct d_print_info): Rename is_lambda_arg to
      	lambda_tpl_parms.  Augment semantics.
      	(d_make_comp): Add checks for new components.
      	(d_template_parm, d_template_head): New.
      	(d_lambda): Add templated lambda support.
      	(d_print_init): Adjust.
      	(d_print_lambda_parm_name): New.
      	(d_print_comp_inner): Support templated lambdas,
      	* testsuite/demangle-expected: Add testcases.
      46c3d9c8
    • GCC Administrator's avatar
      Daily bump. · 83d400bd
      GCC Administrator authored
      83d400bd
  27. Nov 14, 2022
  28. Nov 13, 2022
    • Martin Liska's avatar
      configure: always set SPHINX_BUILD · 5e749ee3
      Martin Liska authored
      During the Sphinx-migration development, I used
      SPHINX_BUILD='' in order to skip building info and manual
      pages in gcc folder. However, we've got HAS_SPHINX_BUILD
      which is the correct flag for that.
      
      With the patch, one will get a nicer error message when
      sphinx-build is missing and one builds (explicitly) a target which
      depends on it.
      
      	PR other/107620
      
      gcc/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Always set sphinx-build.
      
      libgomp/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Always set sphinx-build.
      
      libiberty/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Always set sphinx-build.
      
      libitm/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Always set sphinx-build.
      
      libquadmath/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Always set sphinx-build.
      5e749ee3
Loading