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.
This commit is contained in:
parent
39663298b5
commit
b6f4b00011
4 changed files with 35 additions and 3 deletions
|
@ -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*)
|
||||
|
|
|
@ -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
|
||||
|
|
25
gcc/config/vxworks-smp.opt
Normal file
25
gcc/config/vxworks-smp.opt
Normal file
|
@ -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.
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue