Commit Graph

46 Commits

Author SHA1 Message Date
GCC Administrator
8761284fd7 Daily bump. 2022-11-24 00:17:47 +00:00
Marek Polacek
04711f5189 Revert "configure: Implement --enable-host-pie"
This reverts commit 251c72a68a.
2022-11-22 21:10:31 -05:00
Marek Polacek
251c72a68a configure: Implement --enable-host-pie
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.
2022-11-22 20:32:18 -05:00
GCC Administrator
58b67140de Daily bump. 2022-06-04 00:16:27 +00:00
Alexandre Oliva
39ab2e4c39 libcody: fix nonportable shell code in revision.stamp build rule
Two non-portable shell constructs have been long present in libcody's
build rule for revision.stamp: $() instead of ``, and += to append to
a shell variable.  The former seems to work even when bash is
operating as /bin/sh, but += doesn't, and it ends up trying to run
revision+=M as a command name, and issuing an error as that command is
(hopefully) not found.

This patch replaces both constructs with more portable ones.


for  libcody/ChangeLog

	* Makefile.in (revision.stamp): Replace $() and += with more
	portable shell constructs.
2022-06-03 03:59:01 -03:00
GCC Administrator
8ca61ad148 Daily bump. 2022-03-19 00:16:22 +00:00
Iain Sandoe
99fcd602a8 libcody: Do not use a dummy port number in getaddrinfo().
the getaddrinfo() requires either a non-null name for the server or
a port service / number.  In the code that opens a connection we have
been calling this with a dummy port number of "0".  Unfortunately this
triggers a bug in some BSD versions and OSes importing that code.

In this part of the code we do not really need a port number, since it
is not reasonable to open a connection to an unspecified host.

Setting hints info field to 0, and the servname parm to nullptr works
around the BSD bug in this case.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

libcody/ChangeLog:

	* netclient.cc (OpenInet6): Do not provide a dummy port number
	in the getaddrinfo() call.
2022-03-18 15:23:23 +00:00
Jakub Jelinek
877e3c2abf Update Copyright in ChangeLog files
Do this separately from all other Copyright updates, as ChangeLog files
can be modified only separately.
2022-01-03 10:31:39 +01:00
GCC Administrator
cf82e8d964 Daily bump. 2021-11-02 00:16:32 +00:00
Martin Liska
7a71ea4df7 libcody: add mostlyclean Makefile target
PR other/102657

libcody/ChangeLog:

	* Makefile.in: Add mostlyclean Makefile target.
2021-11-01 04:47:38 +01:00
GCC Administrator
ae5c540662 Daily bump. 2021-10-22 00:16:31 +00:00
Jonathan Wakely
e6d1003543 libcody: Avoid double-free
If the listen call fails then 'goto fail' will jump to that label and
use freeaddrinfo again. Set the pointer to null to prevent that.

libcody/ChangeLog:

	* netserver.cc (ListenInet6): Set pointer to null after
	deallocation.
2021-10-21 22:23:00 +01:00
GCC Administrator
8cac6af6f8 Daily bump. 2021-04-07 00:16:39 +00:00
Nathan Sidwell
86532e5419 libcody: Remove FSF license
Apparently this was never needed.

	libcody/
	* LICENSE.gcc: Delete.
2021-04-06 05:07:17 -07:00
GCC Administrator
6851dda2e7 Daily bump. 2021-01-13 00:16:36 +00:00
Nathan Sidwell
e2aa8a5f98 libcody: Simplify configure [PR 98414, 98509]
Libcody's configurey was overly 'clever'.  That didn't play well with
GCC's structure.  This removes lots of that overengineering, using
libcpp as an example.

	libcody/
	* Makefile.in: Remove auto parallelize, swallow Makesub.in. Don't
	check compiler name here.
	* Makesub.in: Delete.
	* build-aux/config.guess: Delete.
	* build-aux/config.sub: Delete.
	* build-aux/install-sh: Delete.
	* dox.cfg.in: Delete.
	* gdbinit.in: Delete.
	* internal.hh (BuildNote): Delete.
	* fatal.cc (BuildNote): Delete.
	* config.m4: Remove unneeded fns.
	* configure.ac: Remove unneccessary checks and configures.
	* configure: Rebuilt.
	* config.h.in: Rebuilt.
2021-01-12 10:32:27 -08:00
GCC Administrator
942ae5be66 Daily bump. 2021-01-07 00:16:19 +00:00
John David Anglin
6d0b075d66 Fix libcody build on hppa*-*-hpux11.11.
2021-01-06  John David Anglin  <danglin@gcc.gnu.org>

libcody/ChangeLog:

	PR bootstrap/98506
	* resolver.cc: Only use fstatat when _POSIX_C_SOURCE >= 200809L.
2021-01-06 13:58:56 +00:00
GCC Administrator
7e73f51157 Daily bump. 2021-01-05 00:16:42 +00:00
Nathan Sidwell
6288183377 [libcody] Remove some std::move [PR 98368]
Compiling on clang showed a couple of pessimizations.  Fixed thusly.

	libcody/
	* client.cc (Client::ProcessResponse): Remove std::move
	inside ?:
	c++tools/
	* resolver.cc (module_resolver::cmi_response): Remove
	std::move of temporary.
2021-01-04 06:38:52 -08:00
Mateusz Wajchęprzełóż
6bbc196c64 [libcody] Windows absdir fix
An obvious thinko in dirve name check :(

	libcody/
	* resolver.cc (IsAbsDir): Fix string indexing.

Signed-off-by: Nathan Sidwell <nathan@acm.org>
2021-01-04 08:59:10 -05:00
Jakub Jelinek
c48514bea6 Update Copyright in ChangeLog files
Do this separately from all other Copyright updates, as ChangeLog files
can be modified only separately.
2021-01-04 09:35:45 +01:00
GCC Administrator
85d8ebcfc2 Daily bump. 2020-12-24 00:16:26 +00:00
Nathan Sidwell
16929214fd libcody: Remove testsuite [PR 98318]
libcody's testsuite is not very portable, and is testing a host
library, so will do weird things on cross compiling, I think.  Let's
just drop it.

	libcody/
	* Makefile.in (LDFLAGS): Drop -L..
	* tests/01-serialize/connect.cc: Delete.
	* tests/01-serialize/decoder.cc: Delete.
	* tests/01-serialize/encoder.cc: Delete.
	* tests/02-comms/client-1.cc: Delete.
	* tests/02-comms/pivot-1.cc: Delete.
	* tests/02-comms/server-1.cc: Delete.
	* tests/Makesub.in: Delete.
	* tests/jouster: Delete.
2020-12-23 08:07:16 -08:00
GCC Administrator
1a5e728a54 Daily bump. 2020-12-22 00:16:23 +00:00
Nathan Sidwell
1467a5c5ab bootstrap: std:stoul non-portable [PR 98412]
Fix some more system-specific issues.  Not everyone's C++11 is the same :(

	PR bootstrap/98412
	libcody/
	* client.cc: Include cstdlib.
	* server.cc: Include cstdlib.
	gcc/cp/
	* mapper-client.cc: INCLUDE_STRING, INCLUDE_VECTOR.
	(module_client::open_module_client): Avoid std::stoul.
	* mapper-resolver.cc: INCLUDE_STRING, INCLUDE_VECTOR.
2020-12-21 09:20:15 -08:00
Gerald Pfeifer
cf22f78ff6 libcody: Include <netinet/in.h> as needed
libcody as originally added to GCC fail to build on *-unknown-freebsd11.4
and presumably others:

  c++ -std=c++11 -g -include config.h -I ... -MMD -MP -MF netclient.d -c
    -o netclient.o
  .../libcody/netclient.cc:114:3: error: unknown type sockaddr_in6 addr;
                                                      ^~~~~~~~~~~~

sockaddr_in6 is declared in /usr/include/netinet6/in6.h,
which is included by /usr/include/netinet/in.h.

Indeed, per https://man7.org/linux/man-pages/man7/ipv6.7.html

    #include <sys/socket.h>
    #include <netinet/in.h>

should be included, and our own gcc/ada/gsocket.h also has

    #if !(defined (VMS) || defined (__MINGW32__))
    #include <sys/socket.h>
    #include <sys/un.h>
    #include <netinet/in.h>
    :
    #endif

libcody/ChangeLog:

2020-12-21  Gerald Pfeifer  <gerald@pfeifer.com>

	* netserver.cc: Include <netinet/in.h>.
2020-12-21 17:11:43 +01:00
Nathan Sidwell
626b63d63a libcody: Add ranlib
Add RANLIB.

	libcody/
	* Makefile.in (RANLIB): New var.
	* Makesub.in (libcody.a): Apply RANLIB.
	* configure.ac: Call AC_PROG_RANLIB.
	* configure: Rebuilt.
2020-12-21 06:30:59 -08:00
Nathan Sidwell
119d7478d1 libcody: to_string is not always available [PR 98412]
to_string is not always available, so don't use it.

	libcody/
	* buffer.cc (MessageBuffer::AppendInteger): Workaround
	to_string's non-ubiquity.
2020-12-21 05:42:03 -08:00
Nathan Sidwell
31705b068f libcody: Add netinet.h
We explicitly need to inlude netinet.h, (despite what happened on my test systems)

	libcody/
	* netclient.cc: Add netinet.h.
2020-12-21 05:42:03 -08:00
GCC Administrator
cd69e3d5cd Daily bump. 2020-12-18 00:16:30 +00:00
Nathan Sidwell
d1ad55c4e0 libcody: Allow PIC [PR 98324]
While this doesn't fix 98324, it was an omission.  Cribbed code from
libcpp to build libcody as PIC.

	libcody/
	* configure.ac: Add --enable-host-shared.
	* Makefile.in: Add FLAGPIC.
	* configure: Regenerated.
2020-12-17 09:56:42 -08:00
Nathan Sidwell
5357b1620c libcody: Remove nop asm
This asm was a useful place for gdb to drop a breakpoint and make it
clear where you were when debugging.  I took a punt that 'surely every
arch has a nop instruction'. Well, no, some apparently have nops with
operands (what, do nothing harder? :)

	libcody/
	* fatal.cc (HCF): Remove nop breakpoint lander.
2020-12-17 05:35:37 -08:00
GCC Administrator
eefe499fdf Daily bump. 2020-12-17 00:16:37 +00:00
Nathan Sidwell
b7b6879f0b c++: Another solaris header use [PR 98315]
Rather than early-include sys/socket.h, let's allow the includer to
tell cody no networking.

	libcody/
	* cody.hh: Allow user to set CODY_NETWORKING.
	gcc/cp/
	* mapper-resolver.cc: Remove early include of
	sys/socket.h.  Specify no CODY_NETWORKING instead.
	* module.cc: Specify no CODY_NETWORKING.
2020-12-16 11:57:31 -08:00
Jakub Jelinek
652702b0c9 libcody: fix --enable-checking=... follow-up [PR98311]
> The -enable-checking configure code in libcody didn't play well with
> us.  This just uses libcpp's configurey for that piece.

This doesn't set is_release anywhere, which means when --enable-checking*
or --disable-checking isn't specified, it always treats it as
--enable-checking=yes, while the normal gcc behavior is treat only trunk
as --enable-checking=yes and treat release branches as
--enable-checking=release by default.

On the other side, nothing uses those ac_assert_checking and
ac_valgrind_checking variables, so it is a waste to compute those.

2020-12-16  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac: Compute is_release.
	(NMS_ENABLE_CHECKING): Simplify but not computing ac_assert_checking
	and ac_valgrind_checking the code doesn't use.
	* configure: Regenerated.
2020-12-16 18:21:32 +01:00
Jonathan Wakely
4e42f6ebf4 libcody: Fix build for older GCC versions
Before CWG DR 1955 the controlling expression for an #elif must be
syntactically correct, meaning this won't compile with C++11 compilers
such as gcc 4.8:

The solution is to define __has_include(X) as 0 for compilers that don't
support it.

The second problem is that when <source_location> is found, it is used
without the std:: qualification.

libcody/ChangeLog:

	* internal.hh: Define fallback macros for __has_builtin and
	__has_include. Use __has_builtin for __builtin_FILE and
	__builtin_LINE. Define alias for std::source_location.
2020-12-16 14:33:26 +00:00
Nathan Sidwell
4be6c4e2a4 libcody: fix --enable-checking=... [PR 98311]
The -enable-checking configure code in libcody didn't play well with
us.  This just uses libcpp's configurey for that piece.

	libcody/
	* configure.ac: Use libcpp's enable-checking code.
	* configure: Rebuilt.
2020-12-16 06:20:20 -08:00
Nathan Sidwell
6d972f5183 libcody: More dashism
There were still some dash-killing uses of +=.  Fixed thusly.

	* config.m4: Replace V+="..." with V="$V..."
	* configure: Rebuilt.
2020-12-16 06:03:38 -08:00
GCC Administrator
6e9d865119 Daily bump. 2020-12-16 00:16:31 +00:00
Marek Polacek
65eac818db cody: Remove unused variable.
libcody/ChangeLog:

	* buffer.cc (MessageBuffer::Lex): Remove unused variable.
2020-12-15 17:04:17 -05:00
Nathan Sidwell
4f0c800ba6 libcody: Work with older gccs
Older GCCs don't have all the exciting options we have now.  let's just
turn them off.

	libcody/
	* Makefile.in: Disable some flags.
2020-12-15 13:48:15 -08:00
Nathan Sidwell
a582a319c1 Fix dashism
I missed some other places that used +=

	* config.m4: Avoid var+=...
	* configure: Rebuilt
2020-12-15 11:37:52 -08:00
Nathan Sidwell
e48456f568 libcody: Fix for dash
Apparently 'var+=...' is not a dash thing.  Fixed thusly.

	* config.m4: Avoid non-dash idiom
	* configure: Rebuilt.
2020-12-15 11:29:44 -08:00
Jakub Jelinek
30c41abc41 c++: Add changelog files in c++tools/ and libcody/ directories
Add ChangeLog files, so that update_version_git can then fill those in.
2020-12-15 17:39:12 +01:00
Nathan Sidwell
362303298a Add libcody
In order to separate compiler from build system, C++ Modules, as
implemented in GCC introduces a communication channel between those
two entities.  This is implemented by libcody.  It is anticipated that
other implementations will also implement this protocol, or use
libcody to provide it.

	* Makefile.def: Add libcody.
	* configure.ac: Add libcody.
	* Makefile.in: Regenerated.
	* configure: Regenerated.
	gcc/
	* Makefile.in (CODYINC, CODYLIB, CODYLIB_H): New. Use them.
	libcody/
	* configure.ac: New.
	* CMakeLists.txt: New.
	* CODING.md: New.
	* CONTRIB.md: New.
	* LICENSE: New.
	* LICENSE.gcc: New.
	* Makefile.in: New.
	* Makesub.in: New.
	* README.md: New.
	* buffer.cc: New.
	* build-aux/config.guess: New.
	* build-aux/config.sub: New.
	* build-aux/install-sh: New.
	* client.cc: New.
	* cmake/libcody-config-ix.cmake
	* cody.hh: New.
	* config.h.in: New.
	* config.m4: New.
	* configure: New.
	* configure.ac: New.
	* dox.cfg.in: New.
	* fatal.cc: New.
	* gdbinit.in: New.
	* internal.hh: New.
	* netclient.cc: New.
	* netserver.cc: New.
	* packet.cc: New.
	* resolver.cc: New.
	* server.cc: New.
	* tests/01-serialize/connect.cc: New.
	* tests/01-serialize/decoder.cc: New.
	* tests/01-serialize/encoder.cc: New.
	* tests/02-comms/client-1.cc: New.
	* tests/02-comms/pivot-1.cc: New.
	* tests/02-comms/server-1.cc: New.
	* tests/Makesub.in: New.
	* tests/jouster: New.
2020-12-15 07:09:59 -08:00