aboutsummaryrefslogtreecommitdiff
path: root/libcody
AgeCommit message (Collapse)AuthorFilesLines
2023-01-02Update Copyright year in ChangeLog filesJakub Jelinek1-1/+1
2022 -> 2023
2022-11-24Daily bump.GCC Administrator1-0/+19
2022-11-22Revert "configure: Implement --enable-host-pie"Marek Polacek3-54/+4
This reverts commit 251c72a68af3a8b0638705b73ef120ffdf0053eb.
2022-11-22configure: Implement --enable-host-pieMarek Polacek3-4/+54
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-06-04Daily bump.GCC Administrator1-0/+5
2022-06-03libcody: fix nonportable shell code in revision.stamp build ruleAlexandre Oliva1-2/+2
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-03-19Daily bump.GCC Administrator1-0/+5
2022-03-18libcody: Do not use a dummy port number in getaddrinfo().Iain Sandoe1-4/+2
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-01-03Update Copyright in ChangeLog filesJakub Jelinek1-1/+1
Do this separately from all other Copyright updates, as ChangeLog files can be modified only separately.
2021-11-02Daily bump.GCC Administrator1-0/+5
2021-11-01libcody: add mostlyclean Makefile targetMartin Liska1-6/+14
PR other/102657 libcody/ChangeLog: * Makefile.in: Add mostlyclean Makefile target.
2021-10-22Daily bump.GCC Administrator1-0/+5
2021-10-21libcody: Avoid double-freeJonathan Wakely1-0/+1
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-04-07Daily bump.GCC Administrator1-0/+4
2021-04-06libcody: Remove FSF licenseNathan Sidwell1-29/+0
Apparently this was never needed. libcody/ * LICENSE.gcc: Delete.
2021-01-13Daily bump.GCC Administrator1-0/+17
2021-01-12libcody: Simplify configure [PR 98414, 98509]Nathan Sidwell13-6874/+48
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-07Daily bump.GCC Administrator1-0/+5
2021-01-06Fix libcody build on hppa*-*-hpux11.11.John David Anglin1-1/+3
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-05Daily bump.GCC Administrator1-0/+9
2021-01-04[libcody] Remove some std::move [PR 98368]Nathan Sidwell1-2/+1
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[libcody] Windows absdir fixMateusz Wajchęprzełóż1-2/+2
An obvious thinko in dirve name check :( libcody/ * resolver.cc (IsAbsDir): Fix string indexing. Signed-off-by: Nathan Sidwell <nathan@acm.org>
2021-01-04Update Copyright in ChangeLog filesJakub Jelinek1-1/+1
Do this separately from all other Copyright updates, as ChangeLog files can be modified only separately.
2020-12-24Daily bump.GCC Administrator1-0/+12
2020-12-23libcody: Remove testsuite [PR 98318]Nathan Sidwell9-440/+1
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-22Daily bump.GCC Administrator1-0/+26
2020-12-21bootstrap: std:stoul non-portable [PR 98412]Nathan Sidwell2-0/+2
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-21libcody: Include <netinet/in.h> as neededGerald Pfeifer1-0/+1
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-21libcody: Add ranlibNathan Sidwell4-0/+96
Add RANLIB. libcody/ * Makefile.in (RANLIB): New var. * Makesub.in (libcody.a): Apply RANLIB. * configure.ac: Call AC_PROG_RANLIB. * configure: Rebuilt.
2020-12-21libcody: to_string is not always available [PR 98412]Nathan Sidwell1-1/+7
to_string is not always available, so don't use it. libcody/ * buffer.cc (MessageBuffer::AppendInteger): Workaround to_string's non-ubiquity.
2020-12-21libcody: Add netinet.hNathan Sidwell1-0/+1
We explicitly need to inlude netinet.h, (despite what happened on my test systems) libcody/ * netclient.cc: Add netinet.h.
2020-12-18Daily bump.GCC Administrator1-0/+10
2020-12-17libcody: Allow PIC [PR 98324]Nathan Sidwell3-1/+19
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-17libcody: Remove nop asmNathan Sidwell1-1/+2
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-17Daily bump.GCC Administrator1-0/+27
2020-12-16c++: Another solaris header use [PR 98315]Nathan Sidwell1-0/+4
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-16libcody: fix --enable-checking=... follow-up [PR98311]Jakub Jelinek2-16/+20
> 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-16libcody: Fix build for older GCC versionsJonathan Wakely1-2/+13
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-16libcody: fix --enable-checking=... [PR 98311]Nathan Sidwell2-20/+79
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-16libcody: More dashismNathan Sidwell2-14/+16
There were still some dash-killing uses of +=. Fixed thusly. * config.m4: Replace V+="..." with V="$V..." * configure: Rebuilt.
2020-12-16Daily bump.GCC Administrator1-0/+58
2020-12-15cody: Remove unused variable.Marek Polacek1-1/+0
libcody/ChangeLog: * buffer.cc (MessageBuffer::Lex): Remove unused variable.
2020-12-15libcody: Work with older gccsNathan Sidwell1-1/+5
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-15Fix dashismNathan Sidwell2-4/+4
I missed some other places that used += * config.m4: Avoid var+=... * configure: Rebuilt
2020-12-15libcody: Fix for dashNathan Sidwell2-2/+4
Apparently 'var+=...' is not a dash thing. Fixed thusly. * config.m4: Avoid non-dash idiom * configure: Rebuilt.
2020-12-15c++: Add changelog files in c++tools/ and libcody/ directoriesJakub Jelinek1-0/+6
Add ChangeLog files, so that update_version_git can then fill those in.
2020-12-15Add libcodyNathan Sidwell36-0/+15137
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.