diff options
author | Alexandre Oliva <oliva@adacore.com> | 2023-08-03 03:34:31 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2023-08-03 03:34:31 -0300 |
commit | b6f4b00011690415eb037a5c6f3e605f46d4d392 (patch) | |
tree | 617033ae6f553ebd775aa060530b2dbcaa1d1a0f /gcc | |
parent | 39663298b5934831a0125e12f113ebd83248c3be (diff) | |
download | gcc-b6f4b00011690415eb037a5c6f3e605f46d4d392.zip gcc-b6f4b00011690415eb037a5c6f3e605f46d4d392.tar.gz gcc-b6f4b00011690415eb037a5c6f3e605f46d4d392.tar.bz2 |
Introduce -msmp to select /lib_smp/ on ppc-vx6
The .spec files used for linking on ppc-vx6, when the rtp-smp runtime
is selected, add -L flags for /lib_smp/ and /lib/.
There was a problem, though: although /lib_smp/ and /lib/ were to be
searched in this order, and the specs files do that correctly, the
compiler would search /lib/ first regardless, because
STARTFILE_PREFIX_SPEC said so, and specs files cannot override that.
With this patch, we arrange for the presence of -msmp to affect
STARTFILE_PREFIX_SPEC, so that the compiler searches /lib_smp/ rather
than /lib/ for crt files. A separate patch for GNAT ensures that when
the rtp-smp runtime is selected, -msmp is passed to the compiler
driver for linking, along with the --specs flags.
for gcc/ChangeLog
* config/vxworks-smp.opt: New. Introduce -msmp.
* config.gcc: Enable it on powerpc* vxworks prior to 7r*.
* config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
lib_smp when -msmp is present in the command line.
* doc/invoke.texi: Document it.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config.gcc | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/vxworks.h | 2 | ||||
-rw-r--r-- | gcc/config/vxworks-smp.opt | 25 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 9 |
4 files changed, 35 insertions, 3 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc index eba69a4..7438e0be 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3046,7 +3046,7 @@ powerpc*-wrs-vxworks7r*) powerpc-wrs-vxworks*) tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h" tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks" - extra_options="${extra_options} rs6000/sysv4.opt" + extra_options="${extra_options} rs6000/sysv4.opt vxworks-smp.opt" extra_headers="${extra_headers} ppc-asm.h" case ${target} in *-vxworksmils*) diff --git a/gcc/config/rs6000/vxworks.h b/gcc/config/rs6000/vxworks.h index 690e924..f38b4bd 100644 --- a/gcc/config/rs6000/vxworks.h +++ b/gcc/config/rs6000/vxworks.h @@ -206,7 +206,7 @@ along with GCC; see the file COPYING3. If not see #undef STARTFILE_PREFIX_SPEC #define STARTFILE_PREFIX_SPEC \ - "%{mrtp:%{!shared:/lib/usr/lib/ppc/PPC32/common}}" + "%{mrtp:%{!shared:/lib%{msmp:_smp}/usr/lib/ppc/PPC32/common}}" /* For aggregates passing, use the same, consistent ABI as Linux. */ #define AGGREGATE_PADDING_FIXED 0 diff --git a/gcc/config/vxworks-smp.opt b/gcc/config/vxworks-smp.opt new file mode 100644 index 0000000..5ef1521 --- /dev/null +++ b/gcc/config/vxworks-smp.opt @@ -0,0 +1,25 @@ +; Options for VxWorks configurations where smp/!smp variants of the +; system libraries are installed in separate locations. +; +; Copyright (C) 2023 Free Software Foundation, Inc. +; Contributed by AdaCore. +; +; This file is part of GCC. +; +; GCC is free software; you can redistribute it and/or modify it under +; the terms of the GNU General Public License as published by the Free +; Software Foundation; either version 3, or (at your option) any later +; version. +; +; GCC is distributed in the hope that it will be useful, but WITHOUT ANY +; WARRANTY; without even the implied warranty of MERCHANTABILITY or +; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +; for more details. +; +; You should have received a copy of the GNU General Public License +; along with GCC; see the file COPYING3. If not see +; <http://www.gnu.org/licenses/>. + +msmp +Driver Target RejectNegative +Select VxWorks SMP C runtimes for linking. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 104766f..adb10a3 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1403,7 +1403,7 @@ See RS/6000 and PowerPC Options. -mpointer-size=@var{size}} @emph{VxWorks Options} -@gccoptlist{-mrtp -non-static -Bstatic -Bdynamic +@gccoptlist{-mrtp -msmp -non-static -Bstatic -Bdynamic -Xbind-lazy -Xbind-now} @emph{x86 Options} @@ -32442,6 +32442,13 @@ GCC can generate code for both VxWorks kernels and real time processes (RTPs). This option switches from the former to the latter. It also defines the preprocessor macro @code{__RTP__}. +@opindex msmp +@item -msmp +Select SMP runtimes for linking. Not available on architectures other +than PowerPC, nor on VxWorks version 7 or later, in which the selection +is part of the VxWorks build configuration and the library paths are the +same for either choice. + @opindex non-static @item -non-static Link an RTP executable against shared libraries rather than static |