]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/doc/gcc/gcc-command-options/machine-dependent-options/hppa-options.rst
sphinx: add missing trailing newline
[thirdparty/gcc.git] / gcc / doc / gcc / gcc-command-options / machine-dependent-options / hppa-options.rst
CommitLineData
c63539ff
ML
1..
2 Copyright 1988-2022 Free Software Foundation, Inc.
3 This is part of the GCC manual.
4 For copying conditions, see the copyright.rst file.
5
6.. program:: HPPA
7
8.. index:: HPPA Options
9
10.. _hppa-options:
11
12HPPA Options
13^^^^^^^^^^^^
14
15These :samp:`-m` options are defined for the HPPA family of computers:
16
17.. option:: -march={architecture-type}
18
19 Generate code for the specified architecture. The choices for
20 :samp:`{architecture-type}` are :samp:`1.0` for PA 1.0, :samp:`1.1` for PA
21 1.1, and :samp:`2.0` for PA 2.0 processors. Refer to
22 :samp:`/usr/lib/sched.models` on an HP-UX system to determine the proper
23 architecture option for your machine. Code compiled for lower numbered
24 architectures runs on higher numbered architectures, but not the
25 other way around.
26
27.. option:: -mpa-risc-1-0, -mpa-risc-1-1, -mpa-risc-2-0
28
29 Synonyms for :option:`-march=1.0`, :option:`-march=1.1`, and :option:`-march=2.0` respectively.
30
31.. option:: -mcaller-copies
32
33 The caller copies function arguments passed by hidden reference. This
34 option should be used with care as it is not compatible with the default
35 32-bit runtime. However, only aggregates larger than eight bytes are
36 passed by hidden reference and the option provides better compatibility
37 with OpenMP.
38
39.. option:: -mjump-in-delay
40
41 This option is ignored and provided for compatibility purposes only.
42
43.. option:: -mdisable-fpregs
44
45 Prevent floating-point registers from being used in any manner. This is
46 necessary for compiling kernels that perform lazy context switching of
47 floating-point registers. If you use this option and attempt to perform
48 floating-point operations, the compiler aborts.
49
50.. option:: -mdisable-indexing
51
52 Prevent the compiler from using indexing address modes. This avoids some
53 rather obscure problems when compiling MIG generated code under MACH.
54
55.. option:: -mno-space-regs
56
57 Generate code that assumes the target has no space registers. This allows
58 GCC to generate faster indirect calls and use unscaled index address modes.
59
60 Such code is suitable for level 0 PA systems and kernels.
61
62.. option:: -mspace-regs
63
64 Default setting; overrides :option:`-mno-space-regs`.
65
66.. option:: -mfast-indirect-calls
67
68 Generate code that assumes calls never cross space boundaries. This
69 allows GCC to emit code that performs faster indirect calls.
70
71 This option does not work in the presence of shared libraries or nested
72 functions.
73
74.. option:: -mfixed-range={register-range}
75
76 Generate code treating the given register range as fixed registers.
77 A fixed register is one that the register allocator cannot use. This is
78 useful when compiling kernel code. A register range is specified as
79 two registers separated by a dash. Multiple register ranges can be
80 specified separated by a comma.
81
82.. option:: -mlong-load-store
83
84 Generate 3-instruction load and store sequences as sometimes required by
85 the HP-UX 10 linker. This is equivalent to the :samp:`+k` option to
86 the HP compilers.
87
88.. option:: -mportable-runtime
89
90 Use the portable calling conventions proposed by HP for ELF systems.
91
92.. option:: -mgas
93
94 Enable the use of assembler directives only GAS understands.
95
96.. option:: -mschedule={cpu-type}
97
98 Schedule code according to the constraints for the machine type
99 :samp:`{cpu-type}`. The choices for :samp:`{cpu-type}` are :samp:`700`
100 :samp:`7100`, :samp:`7100LC`, :samp:`7200`, :samp:`7300` and :samp:`8000`. Refer
101 to :samp:`/usr/lib/sched.models` on an HP-UX system to determine the
102 proper scheduling option for your machine. The default scheduling is
103 :samp:`8000`.
104
105.. option:: -mlinker-opt
106
107 Enable the optimization pass in the HP-UX linker. Note this makes symbolic
108 debugging impossible. It also triggers a bug in the HP-UX 8 and HP-UX 9
109 linkers in which they give bogus error messages when linking some programs.
110
111.. option:: -msoft-float
112
113 Generate output containing library calls for floating point.
114
115 .. warning::
116
117 The requisite libraries are not available for all HPPA
118 targets. Normally the facilities of the machine's usual C compiler are
119 used, but this cannot be done directly in cross-compilation. You must make
120 your own arrangements to provide suitable library functions for
121 cross-compilation.
122
123 :option:`-msoft-float` changes the calling convention in the output file;
124 therefore, it is only useful if you compile *all* of a program with
125 this option. In particular, you need to compile :samp:`libgcc.a`, the
126 library that comes with GCC, with :option:`-msoft-float` in order for
127 this to work.
128
129.. option:: -msio
130
131 Generate the predefine, ``_SIO``, for server IO. The default is
132 :option:`-mwsio`. This generates the predefines, ``__hp9000s700``,
133 ``__hp9000s700__`` and ``_WSIO``, for workstation IO. These
134 options are available under HP-UX and HI-UX.
135
136.. option:: -mgnu-ld
137
138 Use options specific to GNU :command:`ld`.
139 This passes :option:`-shared` to :command:`ld` when
140 building a shared library. It is the default when GCC is configured,
141 explicitly or implicitly, with the GNU linker. This option does not
142 affect which :command:`ld` is called; it only changes what parameters
143 are passed to that :command:`ld`.
144 The :command:`ld` that is called is determined by the
145 :option:`--with-ld` configure option, GCC's program search path, and
146 finally by the user's :envvar:`PATH`. The linker used by GCC can be printed
147 using :samp:`which `gcc -print-prog-name=ld``. This option is only available
148 on the 64-bit HP-UX GCC, i.e. configured with :samp:`hppa*64*-*-hpux*`.
149
150.. option:: -mhp-ld
151
152 Use options specific to HP :command:`ld`.
153 This passes :option:`-b` to :command:`ld` when building
154 a shared library and passes +Accept TypeMismatch to :command:`ld` on all
155 links. It is the default when GCC is configured, explicitly or
156 implicitly, with the HP linker. This option does not affect
157 which :command:`ld` is called; it only changes what parameters are passed to that
158 :command:`ld`.
159 The :command:`ld` that is called is determined by the :option:`--with-ld`
160 configure option, GCC's program search path, and finally by the user's
161 :envvar:`PATH`. The linker used by GCC can be printed using :samp:`which
162 `gcc -print-prog-name=ld``. This option is only available on the 64-bit
163 HP-UX GCC, i.e. configured with :samp:`hppa*64*-*-hpux*`.
164
165.. option:: -mlong-calls
166
167 Generate code that uses long call sequences. This ensures that a call
168 is always able to reach linker generated stubs. The default is to generate
169 long calls only when the distance from the call site to the beginning
170 of the function or translation unit, as the case may be, exceeds a
171 predefined limit set by the branch type being used. The limits for
172 normal calls are 7,600,000 and 240,000 bytes, respectively for the
173 PA 2.0 and PA 1.X architectures. Sibcalls are always limited at
174 240,000 bytes.
175
176 Distances are measured from the beginning of functions when using the
177 :option:`-ffunction-sections` option, or when using the :option:`-mgas`
178 and :option:`-mno-portable-runtime` options together under HP-UX with
179 the SOM linker.
180
181 It is normally not desirable to use this option as it degrades
182 performance. However, it may be useful in large applications,
183 particularly when partial linking is used to build the application.
184
185 The types of long calls used depends on the capabilities of the
186 assembler and linker, and the type of code being generated. The
187 impact on systems that support long absolute calls, and long pic
188 symbol-difference or pc-relative calls should be relatively small.
189 However, an indirect call is used on 32-bit ELF systems in pic code
190 and it is quite long.
191
192.. option:: -mno-long-calls
193
194 Default setting; overrides :option:`-mlong-calls`.
195
196.. option:: -munix={unix-std}
197
198 Generate compiler predefines and select a startfile for the specified
199 UNIX standard. The choices for :samp:`{unix-std}` are :samp:`93`, :samp:`95`
200 and :samp:`98`. :samp:`93` is supported on all HP-UX versions. :samp:`95`
201 is available on HP-UX 10.10 and later. :samp:`98` is available on HP-UX
202 11.11 and later. The default values are :samp:`93` for HP-UX 10.00,
203 :samp:`95` for HP-UX 10.10 though to 11.00, and :samp:`98` for HP-UX 11.11
204 and later.
205
206 :option:`-munix=93` provides the same predefines as GCC 3.3 and 3.4.
207 :option:`-munix=95` provides additional predefines for ``XOPEN_UNIX``
208 and ``_XOPEN_SOURCE_EXTENDED``, and the startfile :samp:`unix95.o`.
209 :option:`-munix=98` provides additional predefines for ``_XOPEN_UNIX``,
210 ``_XOPEN_SOURCE_EXTENDED``, ``_INCLUDE__STDC_A1_SOURCE`` and
211 ``_INCLUDE_XOPEN_SOURCE_500``, and the startfile :samp:`unix98.o`.
212
213 It is *important* to note that this option changes the interfaces
214 for various library routines. It also affects the operational behavior
215 of the C library. Thus, *extreme* care is needed in using this
216 option.
217
218 Library code that is intended to operate with more than one UNIX
219 standard must test, set and restore the variable ``__xpg4_extended_mask``
220 as appropriate. Most GNU software doesn't provide this capability.
221
222.. option:: -nolibdld
223
224 Suppress the generation of link options to search libdld.sl when the
225 :option:`-static` option is specified on HP-UX 10 and later.
226
227.. option:: -static
228
229 The HP-UX implementation of setlocale in libc has a dependency on
230 libdld.sl. There isn't an archive version of libdld.sl. Thus,
231 when the :option:`-static` option is specified, special link options
232 are needed to resolve this dependency.
233
234 On HP-UX 10 and later, the GCC driver adds the necessary options to
235 link with libdld.sl when the :option:`-static` option is specified.
236 This causes the resulting binary to be dynamic. On the 64-bit port,
237 the linkers generate dynamic binaries by default in any case. The
238 :option:`-nolibdld` option can be used to prevent the GCC driver from
239 adding these link options.
240
241.. option:: -threads
242
243 Add support for multithreading with the :dfn:`dce thread` library
244 under HP-UX. This option sets flags for both the preprocessor and
3ed1b4ce 245 linker.