12306火车票订票官网下载12346(Server)

首页教程更新时间:2023-05-25 03:29:29

ubuntu信息如下。

root@hanyw:~# root@hanyw:~# LSB_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy root@hanyw:~# root@hanyw:~# root@hanyw:~# uname -r 5.15.0-53-generic

GCC帮助手册的第19小节,第12288~13288行,如下。

12228 Use a simple check for control speculation. This option is on by default. 12229 -msched-stop-bits-after-every-cycle 12230 Place a stop bit after every cycle when scheduling. This option is on by default. 12231 -msched-fp-mem-deps-zero-cost 12232 Assume that floating-point stores and loads are not likely to cause a conflict when placed into the same 12233 instruction group. This option is disabled by default. 12234 -msel-sched-dont-check-control-spec 12235 Generate checks for control speculation in selective scheduling. This flag is disabled by default. 12236 -msched-max-memory-insns=max-insns 12237 Limit on the number of memory insns per instruction group, giving lower priority to subsequent memory insns 12238 attempting to schedule in the same instruction group. Frequently useful to prevent cache bank conflicts. 12239 The default value is 1. 12240 -msched-max-memory-insns-hard-limit 12241 Makes the limit specified by msched-max-memory-insns a hard limit, disallowing more than that number in an 12242 instruction group. Otherwise, the limit is "soft", meaning that non-memory operations are preferred when 12243 the limit is reached, but memory operations may still be scheduled. 12244 LM32 Options 12245 These -m options are defined for the LatticeMico32 architecture: 12246 -mbarrel-shift-enabled 12247 Enable barrel-shift instructions. 12248 -mdivide-enabled 12249 Enable divide and modulus instructions. 12250 -mmultiply-enabled 12251 Enable multiply instructions. 12252 -msign-extend-enabled 12253 Enable sign extend instructions. 12254 -muser-enabled 12255 Enable user-defined instructions. 12256 M32C Options 12257 -mcpu=name 12258 Select the CPU for which code is generated. name may be one of r8c for the R8C/Tiny series, m16c for the 12259 M16C (up to /60) series, m32cm for the M16C/80 series, or m32c for the M32C/80 series. 12260 -msim 12261 Specifies that the program will be run on the simulator. This causes an alternate runtime library to be 12262 linked in which supports, for example, file I/O. You must not use this option when generating programs 12263 that will run on real hardware; you must provide your own runtime library for whatever I/O functions are 12264 needed. 12265 -memregs=number 12266 Specifies the number of memory-based pseudo-registers GCC uses during code generation. These pseudo- 12267 registers are used like real registers, so there is a tradeoff between GCC's ability to fit the code into 12268 available registers, and the performance penalty of using memory instead of registers. Note that all 12269 modules in a program must be compiled with the same value for this option. Because of that, you must not 12270 use this option with GCC's default runtime libraries. 12271 M32R/D Options 12272 These -m options are defined for Renesas M32R/D architectures: 12273 -m32r2 12274 Generate code for the M32R/2. 12275 -m32rx 12276 Generate code for the M32R/X. 12277 -m32r 12278 Generate code for the M32R. This is the default. 12279 -mmodel=small 12280 Assume all objects live in the lower 16MB of memory (so that their addresses can be loaded with the "ld24" 12281 instruction), and assume all subroutines are reachable with the "bl" instruction. This is the default. 12282 The addressability of a particular object can be set with the "model" attribute. 12283 -mmodel=medium 12284 Assume objects may be anywhere in the 32-bit address space (the compiler generates "seth/add3" instructions 12285 to load their addresses), and assume all subroutines are reachable with the "bl" instruction. 12286 -mmodel=large 12287 Assume objects may be anywhere in the 32-bit address space (the compiler generates "seth/add3" instructions 12288 to load their addresses), and assume subroutines may not be reachable with the "bl" instruction (the 12289 compiler generates the much slower "seth/add3/jl" instruction sequence). 12290 -msdata=none 12291 Disable use of the small data area. Variables are put into one of ".data", ".bss", or ".rodata" (unless 12292 the "section" attribute has been specified). This is the default. 12293 The small data area consists of sections ".sdata" and ".sbss". Objects may be explicitly put in the small 12294 data area with the "section" attribute using one of these sections. 12295 -msdata=sdata 12296 Put small global and static data in the small data area, but do not generate special code to reference 12297 them. 12298 -msdata=use 12299 Put small global and static data in the small data area, and generate special instructions to reference 12300 them. 12301 -G num 12302 Put global and static objects less than or equal to num bytes into the small data or BSS sections instead 12303 of the normal data or BSS sections. The default value of num is 8. The -msdata option must be set to one 12304 of sdata or use for this option to have any effect. 12305 All modules should be compiled with the same -G num value. Compiling with different values of num may or 12306 may not work; if it doesn't the linker gives an error message---incorrect code is not generated. 12307 -mdebug 12308 Makes the M32R-specific code in the compiler display some statistics that might help in debugging programs. 12309 -malign-loops 12310 Align all loops to a 32-byte boundary. 12311 -mno-align-loops 12312 Do not enforce a 32-byte alignment for loops. This is the default. 12313 -missue-rate=number 12314 Issue number instructions per cycle. number can only be 1 or 2. 12315 -mbranch-cost=number 12316 number can only be 1 or 2. If it is 1 then branches are preferred over conditional code, if it is 2, then 12317 the opposite applies. 12318 -mflush-trap=number 12319 Specifies the trap number to use to flush the cache. The default is 12. Valid numbers are between 0 and 12320 15 inclusive. 12321 -mno-flush-trap 12322 Specifies that the cache cannot be flushed by using a trap. 12323 -mflush-func=name 12324 Specifies the name of the operating system function to call to flush the cache. The default is 12325 _flush_cache, but a function call is only used if a trap is not available. 12326 -mno-flush-func 12327 Indicates that there is no OS function for flushing the cache. 12328 M680x0 Options 12329 These are the -m options defined for M680x0 and ColdFire processors. The default settings depend on which 12330 architecture was selected when the compiler was configured; the defaults for the most common choices are given 12331 below. 12332 -march=arch 12333 Generate code for a specific M680x0 or ColdFire instruction set architecture. Permissible values of arch 12334 for M680x0 architectures are: 68000, 68010, 68020, 68030, 68040, 68060 and cpu32. ColdFire architectures 12335 are selected according to Freescale's ISA classification and the permissible values are: isaa, isaaplus, 12336 isab and isac. 12337 GCC defines a macro "__mcfarch__" whenever it is generating code for a ColdFire target. The arch in this 12338 macro is one of the -march arguments given above. 12339 When used together, -march and -mtune select code that runs on a family of similar processors but that is 12340 optimized for a particular microarchitecture. 12341 -mcpu=cpu 12342 Generate code for a specific M680x0 or ColdFire processor. The M680x0 cpus are: 68000, 68010, 68020, 12343 68030, 68040, 68060, 68302, 68332 and cpu32. The ColdFire cpus are given by the table below, which also 12344 classifies the CPUs into families: 12345 Family : -mcpu arguments 12346 51 : 51 51ac 51ag 51cn 51em 51je 51jf 51jg 51jm 51mm 51qe 51qm 12347 5206 : 5202 5204 5206 12348 5206e : 5206e 12349 5208 : 5207 5208 12350 5211a : 5210a 5211a 12351 5213 : 5211 5212 5213 12352 5216 : 5214 5216 12353 52235 : 52230 52231 52232 52233 52234 52235 12354 5225 : 5224 5225 12355 52259 : 52252 52254 52255 52256 52258 52259 12356 5235 : 5232 5233 5234 5235 523x 12357 5249 : 5249 12358 5250 : 5250 12359 5271 : 5270 5271 12360 5272 : 5272 12361 5275 : 5274 5275 12362 5282 : 5280 5281 5282 528x 12363 53017 : 53011 53012 53013 53014 53015 53016 53017 12364 5307 : 5307 12365 5329 : 5327 5328 5329 532x 12366 5373 : 5372 5373 537x 12367 5407 : 5407 12368 5475 : 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485 12369 -mcpu=cpu overrides -march=arch if arch is compatible with cpu. Other combinations of -mcpu and -march are 12370 rejected. 12371 GCC defines the macro "__mcf_cpu_cpu" when ColdFire target cpu is selected. It also defines 12372 "__mcf_family_family", where the value of family is given by the table above. 12373 -mtune=tune 12374 Tune the code for a particular microarchitecture within the constraints set by -march and -mcpu. The 12375 M680x0 microarchitectures are: 68000, 68010, 68020, 68030, 68040, 68060 and cpu32. The ColdFire 12376 microarchitectures are: cfv1, cfv2, cfv3, cfv4 and cfv4e. 12377 You can also use -mtune=68020-40 for code that needs to run relatively well on 68020, 68030 and 68040 12378 targets. -mtune=68020-60 is similar but includes 68060 targets as well. These two options select the same 12379 tuning decisions as -m68020-40 and -m68020-60 respectively. 12380 GCC defines the macros "__mcarch" and "__mcarch__" when tuning for 680x0 architecture arch. It also 12381 defines "mcarch" unless either -ansi or a non-GNU -std option is used. If GCC is tuning for a range of 12382 architectures, as selected by -mtune=68020-40 or -mtune=68020-60, it defines the macros for every 12383 architecture in the range. 12384 GCC also defines the macro "__muarch__" when tuning for ColdFire microarchitecture uarch, where uarch is 12385 one of the arguments given above. 12386 -m68000 12387 -mc68000 12388 Generate output for a 68000. This is the default when the compiler is configured for 68000-based systems. 12389 It is equivalent to -march=68000. 12390 Use this option for microcontrollers with a 68000 or EC000 core, including the 68008, 68302, 68306, 68307, 12391 68322, 68328 and 68356. 12392 -m68010 12393 Generate output for a 68010. This is the default when the compiler is configured for 68010-based systems. 12394 It is equivalent to -march=68010. 12395 -m68020 12396 -mc68020 12397 Generate output for a 68020. This is the default when the compiler is configured for 68020-based systems. 12398 It is equivalent to -march=68020. 12399 -m68030 12400 Generate output for a 68030. This is the default when the compiler is configured for 68030-based systems. 12401 It is equivalent to -march=68030. 12402 -m68040 12403 Generate output for a 68040. This is the default when the compiler is configured for 68040-based systems. 12404 It is equivalent to -march=68040. 12405 This option inhibits the use of 68881/68882 instructions that have to be emulated by software on the 68040. 12406 Use this option if your 68040 does not have code to emulate those instructions. 12407 -m68060 12408 Generate output for a 68060. This is the default when the compiler is configured for 68060-based systems. 12409 It is equivalent to -march=68060. 12410 This option inhibits the use of 68020 and 68881/68882 instructions that have to be emulated by software on 12411 the 68060. Use this option if your 68060 does not have code to emulate those instructions. 12412 -mcpu32 12413 Generate output for a CPU32. This is the default when the compiler is configured for CPU32-based systems. 12414 It is equivalent to -march=cpu32. 12415 Use this option for microcontrollers with a CPU32 or CPU32 core, including the 68330, 68331, 68332, 68333, 12416 68334, 68336, 68340, 68341, 68349 and 68360. 12417 -m5200 12418 Generate output for a 520X ColdFire CPU. This is the default when the compiler is configured for 12419 520X-based systems. It is equivalent to -mcpu=5206, and is now deprecated in favor of that option. 12420 Use this option for microcontroller with a 5200 core, including the MCF5202, MCF5203, MCF5204 and MCF5206. 12421 -m5206e 12422 Generate output for a 5206e ColdFire CPU. The option is now deprecated in favor of the equivalent 12423 -mcpu=5206e. 12424 -m528x 12425 Generate output for a member of the ColdFire 528X family. The option is now deprecated in favor of the 12426 equivalent -mcpu=528x. 12427 -m5307 12428 Generate output for a ColdFire 5307 CPU. The option is now deprecated in favor of the equivalent 12429 -mcpu=5307. 12430 -m5407 12431 Generate output for a ColdFire 5407 CPU. The option is now deprecated in favor of the equivalent 12432 -mcpu=5407. 12433 -mcfv4e 12434 Generate output for a ColdFire V4e family CPU (e.g. 547x/548x). This includes use of hardware floating- 12435 point instructions. The option is equivalent to -mcpu=547x, and is now deprecated in favor of that option. 12436 -m68020-40 12437 Generate output for a 68040, without using any of the new instructions. This results in code that can run 12438 relatively efficiently on either a 68020/68881 or a 68030 or a 68040. The generated code does use the 12439 68881 instructions that are emulated on the 68040. 12440 The option is equivalent to -march=68020 -mtune=68020-40. 12441 -m68020-60 12442 Generate output for a 68060, without using any of the new instructions. This results in code that can run 12443 relatively efficiently on either a 68020/68881 or a 68030 or a 68040. The generated code does use the 12444 68881 instructions that are emulated on the 68060. 12445 The option is equivalent to -march=68020 -mtune=68020-60. 12446 -mhard-float 12447 -m68881 12448 Generate floating-point instructions. This is the default for 68020 and above, and for ColdFire devices 12449 that have an FPU. It defines the macro "__HAVE_68881__" on M680x0 targets and "__mcffpu__" on ColdFire 12450 targets. 12451 -msoft-float 12452 Do not generate floating-point instructions; use library calls instead. This is the default for 68000, 12453 68010, and 68832 targets. It is also the default for ColdFire devices that have no FPU. 12454 -mdiv 12455 -mno-div 12456 Generate (do not generate) ColdFire hardware divide and remainder instructions. If -march is used without 12457 -mcpu, the default is "on" for ColdFire architectures and "off" for M680x0 architectures. Otherwise, the 12458 default is taken from the target CPU (either the default CPU, or the one specified by -mcpu). For example, 12459 the default is "off" for -mcpu=5206 and "on" for -mcpu=5206e. 12460 GCC defines the macro "__mcfhwdiv__" when this option is enabled. 12461 -mshort 12462 Consider type "int" to be 16 bits wide, like "short int". Additionally, parameters passed on the stack are 12463 also aligned to a 16-bit boundary even on targets whose API mandates promotion to 32-bit. 12464 -mno-short 12465 Do not consider type "int" to be 16 bits wide. This is the default. 12466 -mnobitfield 12467 -mno-bitfield 12468 Do not use the bit-field instructions. The -m68000, -mcpu32 and -m5200 options imply -mnobitfield. 12469 -mbitfield 12470 Do use the bit-field instructions. The -m68020 option implies -mbitfield. This is the default if you use 12471 a configuration designed for a 68020. 12472 -mrtd 12473 Use a different function-calling convention, in which functions that take a fixed number of arguments 12474 return with the "rtd" instruction, which pops their arguments while returning. This saves one instruction 12475 in the caller since there is no need to pop the arguments there. 12476 This calling convention is incompatible with the one normally used on Unix, so you cannot use it if you 12477 need to call libraries compiled with the Unix compiler. 12478 Also, you must provide function prototypes for all functions that take variable numbers of arguments 12479 (including "printf"); otherwise incorrect code is generated for calls to those functions. 12480 In addition, seriously incorrect code results if you call a function with too many arguments. (Normally, 12481 extra arguments are harmlessly ignored.) 12482 The "rtd" instruction is supported by the 68010, 68020, 68030, 68040, 68060 and CPU32 processors, but not 12483 by the 68000 or 5200. 12484 The default is -mno-rtd. 12485 -malign-int 12486 -mno-align-int 12487 Control whether GCC aligns "int", "long", "long long", "float", "double", and "long double" variables on a 12488 32-bit boundary (-malign-int) or a 16-bit boundary (-mno-align-int). Aligning variables on 32-bit 12489 boundaries produces code that runs somewhat faster on processors with 32-bit busses at the expense of more 12490 memory. 12491 Warning: if you use the -malign-int switch, GCC aligns structures containing the above types differently 12492 than most published application binary interface specifications for the m68k. 12493 Use the pc-relative addressing mode of the 68000 directly, instead of using a global offset table. At 12494 present, this option implies -fpic, allowing at most a 16-bit offset for pc-relative addressing. -fPIC is 12495 not presently supported with -mpcrel, though this could be supported for 68020 and higher processors. 12496 -mno-strict-align 12497 -mstrict-align 12498 Do not (do) assume that unaligned memory references are handled by the system. 12499 -msep-data 12500 Generate code that allows the data segment to be located in a different area of memory from the text 12501 segment. This allows for execute-in-place in an environment without virtual memory management. This 12502 option implies -fPIC. 12503 -mno-sep-data 12504 Generate code that assumes that the data segment follows the text segment. This is the default. 12505 -mid-shared-library 12506 Generate code that supports shared libraries via the library ID method. This allows for execute-in-place 12507 and shared libraries in an environment without virtual memory management. This option implies -fPIC. 12508 -mno-id-shared-library 12509 Generate code that doesn't assume ID-based shared libraries are being used. This is the default. 12510 -mshared-library-id=n 12511 Specifies the identification number of the ID-based shared library being compiled. Specifying a value of 0 12512 generates more compact code; specifying other values forces the allocation of that number to the current 12513 library, but is no more space- or time-efficient than omitting this option. 12514 -mxgot 12515 -mno-xgot 12516 When generating position-independent code for ColdFire, generate code that works if the GOT has more than 12517 8192 entries. This code is larger and slower than code generated without this option. On M680x0 12518 processors, this option is not needed; -fPIC suffices. 12519 GCC normally uses a single instruction to load values from the GOT. While this is relatively efficient, it 12520 only works if the GOT is smaller than about 64k. Anything larger causes the linker to report an error such 12521 as: 12522 relocation truncated to fit: R_68K_GOT16O foobar 12523 If this happens, you should recompile your code with -mxgot. It should then work with very large GOTs. 12524 However, code generated with -mxgot is less efficient, since it takes 4 instructions to fetch the value of 12525 a global symbol. 12526 Note that some linkers, including newer versions of the GNU linker, can create multiple GOTs and sort GOT 12527 entries. If you have such a linker, you should only need to use -mxgot when compiling a single object file 12528 that accesses more than 8192 GOT entries. Very few do. 12529 These options have no effect unless GCC is generating position-independent code. 12530 -mlong-jump-table-offsets 12531 Use 32-bit offsets in "switch" tables. The default is to use 16-bit offsets. 12532 MCore Options 12533 These are the -m options defined for the Motorola M*Core processors. 12534 -mhardlit 12535 -mno-hardlit 12536 Inline constants into the code stream if it can be done in two instructions or less. 12537 -mdiv 12538 -mno-div 12539 Use the divide instruction. (Enabled by default). 12540 -mrelax-immediate 12541 -mno-relax-immediate 12542 Allow arbitrary-sized immediates in bit operations. 12543 -mwide-bitfields 12544 -mno-wide-bitfields 12545 Always treat bit-fields as "int"-sized. 12546 -m4byte-functions 12547 -mno-4byte-functions 12548 Force all functions to be aligned to a 4-byte boundary. 12549 -mcallgraph-data 12550 -mno-callgraph-data 12551 Emit callgraph information. 12552 -mslow-bytes 12553 -mno-slow-bytes 12554 Prefer word access when reading byte quantities. 12555 -mlittle-endian 12556 -mbig-endian 12557 Generate code for a little-endian target. 12558 -m210 12559 -m340 12560 Generate code for the 210 processor. 12561 -mno-lsim 12562 Assume that runtime support has been provided and so omit the simulator library (libsim.a) from the linker 12563 command line. 12564 -mstack-increment=size 12565 Set the maximum amount for a single stack increment operation. Large values can increase the speed of 12566 programs that contain functions that need a large amount of stack space, but they can also trigger a 12567 segmentation fault if the stack is extended too much. The default value is 0x1000. 12568 MeP Options 12569 -mabsdiff 12570 Enables the "abs" instruction, which is the absolute difference between two registers. 12571 -mall-opts 12572 Enables all the optional instructions---average, multiply, divide, bit operations, leading zero, absolute 12573 difference, min/max, clip, and saturation. 12574 -maverage 12575 Enables the "ave" instruction, which computes the average of two registers. 12576 -mbased=n 12577 Variables of size n bytes or smaller are placed in the ".based" section by default. Based variables use 12578 the $tp register as a base register, and there is a 128-byte limit to the ".based" section. 12579 -mbitops 12580 Enables the bit operation instructions---bit test ("btstm"), set ("bsetm"), clear ("bclrm"), invert 12581 ("bnotm"), and test-and-set ("tas"). 12582 -mc=name 12583 Selects which section constant data is placed in. name may be tiny, near, or far. 12584 -mclip 12585 Enables the "clip" instruction. Note that -mclip is not useful unless you also provide -mminmax. 12586 -mconfig=name 12587 Selects one of the built-in core configurations. Each MeP chip has one or more modules in it; each module 12588 has a core CPU and a variety of coprocessors, optional instructions, and peripherals. The "MeP-Integrator" 12589 tool, not part of GCC, provides these configurations through this option; using this option is the same as 12590 using all the corresponding command-line options. The default configuration is default. 12591 -mcop 12592 Enables the coprocessor instructions. By default, this is a 32-bit coprocessor. Note that the coprocessor 12593 is normally enabled via the -mconfig= option. 12594 -mcop32 12595 Enables the 32-bit coprocessor's instructions. 12596 -mcop64 12597 Enables the 64-bit coprocessor's instructions. 12598 -mivc2 12599 Enables IVC2 scheduling. IVC2 is a 64-bit VLIW coprocessor. 12600 -mdc 12601 Causes constant variables to be placed in the ".near" section. 12602 -mdiv 12603 Enables the "div" and "divu" instructions. 12604 -meb 12605 Generate big-endian code. 12606 -mel 12607 Generate little-endian code. 12608 -mio-volatile 12609 Tells the compiler that any variable marked with the "io" attribute is to be considered volatile. 12610 -ml Causes variables to be assigned to the ".far" section by default. 12611 -mleadz 12612 Enables the "leadz" (leading zero) instruction. 12613 -mm Causes variables to be assigned to the ".near" section by default. 12614 -mminmax 12615 Enables the "min" and "max" instructions. 12616 -mmult 12617 Enables the multiplication and multiply-accumulate instructions. 12618 -mno-opts 12619 Disables all the optional instructions enabled by -mall-opts. 12620 -mrepeat 12621 Enables the "repeat" and "erepeat" instructions, used for low-overhead looping. 12622 -ms Causes all variables to default to the ".tiny" section. Note that there is a 65536-byte limit to this 12623 section. Accesses to these variables use the %gp base register. 12624 -msatur 12625 Enables the saturation instructions. Note that the compiler does not currently generate these itself, but 12626 this option is included for compatibility with other tools, like "as". 12627 -msdram 12628 Link the SDRAM-based runtime instead of the default ROM-based runtime. 12629 -msim 12630 Link the simulator run-time libraries. 12631 -msimnovec 12632 Link the simulator runtime libraries, excluding built-in support for reset and exception vectors and 12633 tables. 12634 -mtf 12635 Causes all functions to default to the ".far" section. Without this option, functions default to the 12636 ".near" section. 12637 -mtiny=n 12638 Variables that are n bytes or smaller are allocated to the ".tiny" section. These variables use the $gp 12639 base register. The default for this option is 4, but note that there's a 65536-byte limit to the ".tiny" 12640 section. 12641 MicroBlaze Options 12642 -msoft-float 12643 Use software emulation for floating point (default). 12644 -mhard-float 12645 Use hardware floating-point instructions. 12646 -mmemcpy 12647 Do not optimize block moves, use "memcpy". 12648 -mno-clearbss 12649 This option is deprecated. Use -fno-zero-initialized-in-bss instead. 12650 -mcpu=cpu-type 12651 Use features of, and schedule code for, the given CPU. Supported values are in the format vX.YY.Z, where X 12652 is a major version, YY is the minor version, and Z is compatibility code. Example values are v3.00.a, 12653 v4.00.b, v5.00.a, v5.00.b, v6.00.a. 12654 -mxl-soft-mul 12655 Use software multiply emulation (default). 12656 -mxl-soft-div 12657 Use software emulation for divides (default). 12658 -mxl-barrel-shift 12659 Use the hardware barrel shifter. 12660 -mxl-pattern-compare 12661 Use pattern compare instructions. 12662 -msmall-divides 12663 Use table lookup optimization for small signed integer divisions. 12664 -mxl-stack-check 12665 This option is deprecated. Use -fstack-check instead. 12666 -mxl-gp-opt 12667 Use GP-relative ".sdata"/".sbss" sections. 12668 -mxl-multiply-high 12669 Use multiply high instructions for high part of 32x32 multiply. 12670 -mxl-float-convert 12671 Use hardware floating-point conversion instructions. 12672 -mxl-float-sqrt 12673 Use hardware floating-point square root instruction. 12674 -mbig-endian 12675 Generate code for a big-endian target. 12676 -mlittle-endian 12677 Generate code for a little-endian target. 12678 -mxl-reorder 12679 Use reorder instructions (swap and byte reversed load/store). 12680 -mxl-mode-app-model 12681 Select application model app-model. Valid models are 12682 executable 12683 normal executable (default), uses startup code crt0.o. 12684 -mpic-data-is-text-relative 12685 Assume that the displacement between the text and data segments is fixed at static link time. This 12686 allows data to be referenced by offset from start of text address instead of GOT since PC-relative 12687 addressing is not supported. 12688 xmdstub 12689 for use with Xilinx Microprocessor Debugger (XMD) based software intrusive debug agent called xmdstub. 12690 This uses startup file crt1.o and sets the start address of the program to 0x800. 12691 bootstrap 12692 for applications that are loaded using a bootloader. This model uses startup file crt2.o which does 12693 not contain a processor reset vector handler. This is suitable for transferring control on a processor 12694 reset to the bootloader rather than the application. 12695 novectors 12696 for applications that do not require any of the MicroBlaze vectors. This option may be useful for 12697 applications running within a monitoring application. This model uses crt3.o as a startup file. 12698 Option -xl-mode-app-model is a deprecated alias for -mxl-mode-app-model. 12699 MIPS Options 12700 -EB Generate big-endian code. 12701 -EL Generate little-endian code. This is the default for mips*el-*-* configurations. 12702 -march=arch 12703 Generate code that runs on arch, which can be the name of a generic MIPS ISA, or the name of a particular 12704 processor. The ISA names are: mips1, mips2, mips3, mips4, mips32, mips32r2, mips32r3, mips32r5, mips32r6, 12705 mips64, mips64r2, mips64r3, mips64r5 and mips64r6. The processor names are: 4kc, 4km, 4kp, 4ksc, 4kec, 12706 4kem, 4kep, 4ksd, 5kc, 5kf, 20kc, 24kc, 24kf2_1, 24kf1_1, 24kec, 24kef2_1, 24kef1_1, 34kc, 34kf2_1, 12707 34kf1_1, 34kn, 74kc, 74kf2_1, 74kf1_1, 74kf3_2, 1004kc, 1004kf2_1, 1004kf1_1, i6400, i6500, interaptiv, 12708 loongson2e, loongson2f, loongson3a, gs464, gs464e, gs264e, m4k, m14k, m14kc, m14ke, m14kec, m5100, m5101, 12709 octeon, octeon , octeon2, octeon3, orion, p5600, p6600, r2000, r3000, r3900, r4000, r4400, r4600, r4650, 12710 r4700, r5900, r6000, r8000, rm7000, rm9000, r10000, r12000, r14000, r16000, sb1, sr71000, vr4100, vr4111, 12711 vr4120, vr4130, vr4300, vr5000, vr5400, vr5500, xlr and xlp. The special value from-abi selects the most 12712 compatible architecture for the selected ABI (that is, mips1 for 32-bit ABIs and mips3 for 64-bit ABIs). 12713 The native Linux/GNU toolchain also supports the value native, which selects the best architecture option 12714 for the host processor. -march=native has no effect if GCC does not recognize the processor. 12715 In processor names, a final 000 can be abbreviated as k (for example, -march=r2k). Prefixes are optional, 12716 and vr may be written r. 12717 Names of the form nf2_1 refer to processors with FPUs clocked at half the rate of the core, names of the 12718 form nf1_1 refer to processors with FPUs clocked at the same rate as the core, and names of the form nf3_2 12719 refer to processors with FPUs clocked a ratio of 3:2 with respect to the core. For compatibility reasons, 12720 nf is accepted as a synonym for nf2_1 while nx and bfx are accepted as synonyms for nf1_1. 12721 GCC defines two macros based on the value of this option. The first is "_MIPS_ARCH", which gives the name 12722 of target architecture, as a string. The second has the form "_MIPS_ARCH_foo", where foo is the 12723 capitalized value of "_MIPS_ARCH". For example, -march=r2000 sets "_MIPS_ARCH" to "r2000" and defines the 12724 macro "_MIPS_ARCH_R2000". 12725 Note that the "_MIPS_ARCH" macro uses the processor names given above. In other words, it has the full 12726 prefix and does not abbreviate 000 as k. In the case of from-abi, the macro names the resolved 12727 architecture (either "mips1" or "mips3"). It names the default architecture when no -march option is 12728 given. 12729 -mtune=arch 12730 Optimize for arch. Among other things, this option controls the way instructions are scheduled, and the 12731 perceived cost of arithmetic operations. The list of arch values is the same as for -march. 12732 When this option is not used, GCC optimizes for the processor specified by -march. By using -march and 12733 -mtune together, it is possible to generate code that runs on a family of processors, but optimize the code 12734 for one particular member of that family. 12735 -mtune defines the macros "_MIPS_TUNE" and "_MIPS_TUNE_foo", which work in the same way as the -march ones 12736 described above. 12737 -mips1 12738 Equivalent to -march=mips1. 12739 -mips2 12740 Equivalent to -march=mips2. 12741 -mips3 12742 Equivalent to -march=mips3. 12743 -mips4 12744 Equivalent to -march=mips4. 12745 -mips32 12746 Equivalent to -march=mips32. 12747 -mips32r3 12748 Equivalent to -march=mips32r3. 12749 -mips32r5 12750 Equivalent to -march=mips32r5. 12751 -mips32r6 12752 Equivalent to -march=mips32r6. 12753 -mips64 12754 Equivalent to -march=mips64. 12755 -mips64r2 12756 Equivalent to -march=mips64r2. 12757 -mips64r3 12758 Equivalent to -march=mips64r3. 12759 -mips64r5 12760 Equivalent to -march=mips64r5. 12761 -mips64r6 12762 Equivalent to -march=mips64r6. 12763 -mips16 12764 -mno-mips16 12765 Generate (do not generate) MIPS16 code. If GCC is targeting a MIPS32 or MIPS64 architecture, it makes use 12766 of the MIPS16e ASE. 12767 MIPS16 code generation can also be controlled on a per-function basis by means of "mips16" and "nomips16" 12768 attributes. 12769 -mflip-mips16 12770 Generate MIPS16 code on alternating functions. This option is provided for regression testing of mixed 12771 MIPS16/non-MIPS16 code generation, and is not intended for ordinary use in compiling user code. 12772 -minterlink-compressed 12773 -mno-interlink-compressed 12774 Require (do not require) that code using the standard (uncompressed) MIPS ISA be link-compatible with 12775 MIPS16 and microMIPS code, and vice versa. 12776 For example, code using the standard ISA encoding cannot jump directly to MIPS16 or microMIPS code; it must 12777 either use a call or an indirect jump. -minterlink-compressed therefore disables direct jumps unless GCC 12778 knows that the target of the jump is not compressed. 12779 -minterlink-mips16 12780 -mno-interlink-mips16 12781 Aliases of -minterlink-compressed and -mno-interlink-compressed. These options predate the microMIPS ASE 12782 and are retained for backwards compatibility. 12783 -mabi=32 12784 -mabi=o64 12785 -mabi=n32 12786 -mabi=64 12787 -mabi=eabi 12788 Generate code for the given ABI. 12789 Note that the EABI has a 32-bit and a 64-bit variant. GCC normally generates 64-bit code when you select a 12790 64-bit architecture, but you can use -mgp32 to get 32-bit code instead. 12791 For information about the O64 ABI, see <http://gcc.gnu.org/projects/mipso64-abi.html>. 12792 GCC supports a variant of the o32 ABI in which floating-point registers are 64 rather than 32 bits wide. 12793 You can select this combination with -mabi=32 -mfp64. This ABI relies on the "mthc1" and "mfhc1" 12794 instructions and is therefore only supported for MIPS32R2, MIPS32R3 and MIPS32R5 processors. 12795 The register assignments for arguments and return values remain the same, but each scalar value is passed 12796 in a single 64-bit register rather than a pair of 32-bit registers. For example, scalar floating-point 12797 values are returned in $f0 only, not a $f0/$f1 pair. The set of call-saved registers also remains the same 12798 in that the even-numbered double-precision registers are saved. 12799 Two additional variants of the o32 ABI are supported to enable a transition from 32-bit to 64-bit 12800 registers. These are FPXX (-mfpxx) and FP64A (-mfp64 -mno-odd-spreg). The FPXX extension mandates that 12801 all code must execute correctly when run using 32-bit or 64-bit registers. The code can be interlinked 12802 with either FP32 or FP64, but not both. The FP64A extension is similar to the FP64 extension but forbids 12803 the use of odd-numbered single-precision registers. This can be used in conjunction with the "FRE" mode of 12804 FPUs in MIPS32R5 processors and allows both FP32 and FP64A code to interlink and run in the same process 12805 without changing FPU modes. 12806 -mabicalls 12807 -mno-abicalls 12808 Generate (do not generate) code that is suitable for SVR4-style dynamic objects. -mabicalls is the default 12809 for SVR4-based systems. 12810 -mshared 12811 -mno-shared 12812 Generate (do not generate) code that is fully position-independent, and that can therefore be linked into 12813 shared libraries. This option only affects -mabicalls. 12814 All -mabicalls code has traditionally been position-independent, regardless of options like -fPIC and 12815 -fpic. However, as an extension, the GNU toolchain allows executables to use absolute accesses for 12816 locally-binding symbols. It can also use shorter GP initialization sequences and generate direct calls to 12817 locally-defined functions. This mode is selected by -mno-shared. 12818 -mno-shared depends on binutils 2.16 or higher and generates objects that can only be linked by the GNU 12819 linker. However, the option does not affect the ABI of the final executable; it only affects the ABI of 12820 relocatable objects. Using -mno-shared generally makes executables both smaller and quicker. 12821 -mshared is the default. 12822 -mplt 12823 -mno-plt 12824 Assume (do not assume) that the static and dynamic linkers support PLTs and copy relocations. This option 12825 only affects -mno-shared -mabicalls. For the n64 ABI, this option has no effect without -msym32. 12826 You can make -mplt the default by configuring GCC with --with-mips-plt. The default is -mno-plt otherwise. 12827 -mxgot 12828 -mno-xgot 12829 Lift (do not lift) the usual restrictions on the size of the global offset table. 12830 GCC normally uses a single instruction to load values from the GOT. While this is relatively efficient, it 12831 only works if the GOT is smaller than about 64k. Anything larger causes the linker to report an error such 12832 as: 12833 relocation truncated to fit: R_MIPS_GOT16 foobar 12834 If this happens, you should recompile your code with -mxgot. This works with very large GOTs, although the 12835 code is also less efficient, since it takes three instructions to fetch the value of a global symbol. 12836 Note that some linkers can create multiple GOTs. If you have such a linker, you should only need to use 12837 -mxgot when a single object file accesses more than 64k's worth of GOT entries. Very few do. 12838 These options have no effect unless GCC is generating position independent code. 12839 -mgp32 12840 Assume that general-purpose registers are 32 bits wide. 12841 -mgp64 12842 Assume that general-purpose registers are 64 bits wide. 12843 -mfp32 12844 Assume that floating-point registers are 32 bits wide. 12845 -mfp64 12846 Assume that floating-point registers are 64 bits wide. 12847 -mfpxx 12848 Do not assume the width of floating-point registers. 12849 -mhard-float 12850 Use floating-point coprocessor instructions. 12851 -msoft-float 12852 Do not use floating-point coprocessor instructions. Implement floating-point calculations using library 12853 calls instead. 12854 -mno-float 12855 Equivalent to -msoft-float, but additionally asserts that the program being compiled does not perform any 12856 floating-point operations. This option is presently supported only by some bare-metal MIPS configurations, 12857 where it may select a special set of libraries that lack all floating-point support (including, for 12858 example, the floating-point "printf" formats). If code compiled with -mno-float accidentally contains 12859 floating-point operations, it is likely to suffer a link-time or run-time failure. 12860 -msingle-float 12861 Assume that the floating-point coprocessor only supports single-precision operations. 12862 -mdouble-float 12863 Assume that the floating-point coprocessor supports double-precision operations. This is the default. 12864 -modd-spreg 12865 -mno-odd-spreg 12866 Enable the use of odd-numbered single-precision floating-point registers for the o32 ABI. This is the 12867 default for processors that are known to support these registers. When using the o32 FPXX ABI, 12868 -mno-odd-spreg is set by default. 12869 -mabs=2008 12870 -mabs=legacy 12871 These options control the treatment of the special not-a-number (NaN) IEEE 754 floating-point data with the 12872 "abs.fmt" and "neg.fmt" machine instructions. 12873 By default or when -mabs=legacy is used the legacy treatment is selected. In this case these instructions 12874 are considered arithmetic and avoided where correct operation is required and the input operand might be a 12875 NaN. A longer sequence of instructions that manipulate the sign bit of floating-point datum manually is 12876 used instead unless the -ffinite-math-only option has also been specified. 12877 The -mabs=2008 option selects the IEEE 754-2008 treatment. In this case these instructions are considered 12878 non-arithmetic and therefore operating correctly in all cases, including in particular where the input 12879 operand is a NaN. These instructions are therefore always used for the respective operations. 12880 -mnan=2008 12881 -mnan=legacy 12882 These options control the encoding of the special not-a-number (NaN) IEEE 754 floating-point data. 12883 The -mnan=legacy option selects the legacy encoding. In this case quiet NaNs (qNaNs) are denoted by the 12884 first bit of their trailing significand field being 0, whereas signaling NaNs (sNaNs) are denoted by the 12885 first bit of their trailing significand field being 1. 12886 The -mnan=2008 option selects the IEEE 754-2008 encoding. In this case qNaNs are denoted by the first bit 12887 of their trailing significand field being 1, whereas sNaNs are denoted by the first bit of their trailing 12888 significand field being 0. 12889 The default is -mnan=legacy unless GCC has been configured with --with-nan=2008. 12890 -mllsc 12891 -mno-llsc 12892 Use (do not use) ll, sc, and sync instructions to implement atomic memory built-in functions. When neither 12893 option is specified, GCC uses the instructions if the target architecture supports them. 12894 -mllsc is useful if the runtime environment can emulate the instructions and -mno-llsc can be useful when 12895 compiling for nonstandard ISAs. You can make either option the default by configuring GCC with --with-llsc 12896 and --without-llsc respectively. --with-llsc is the default for some configurations; see the installation 12897 documentation for details. 12898 -mdsp 12899 -mno-dsp 12900 Use (do not use) revision 1 of the MIPS DSP ASE. 12901 This option defines the preprocessor macro "__mips_dsp". It also defines "__mips_dsp_rev" to 1. 12902 -mdspr2 12903 -mno-dspr2 12904 Use (do not use) revision 2 of the MIPS DSP ASE. 12905 This option defines the preprocessor macros "__mips_dsp" and "__mips_dspr2". It also defines 12906 "__mips_dsp_rev" to 2. 12907 -msmartmips 12908 -mno-smartmips 12909 Use (do not use) the MIPS SmartMIPS ASE. 12910 -mpaired-single 12911 -mno-paired-single 12912 Use (do not use) paired-single floating-point instructions. 12913 This option requires hardware floating-point support to be enabled. 12914 -mdmx 12915 -mno-mdmx 12916 Use (do not use) MIPS Digital Media Extension instructions. This option can only be used when generating 12917 64-bit code and requires hardware floating-point support to be enabled. 12918 -mips3d 12919 -mno-mips3d 12920 Use (do not use) the MIPS-3D ASE. The option -mips3d implies -mpaired-single. 12921 -mmicromips 12922 -mno-micromips 12923 Generate (do not generate) microMIPS code. 12924 MicroMIPS code generation can also be controlled on a per-function basis by means of "micromips" and 12925 "nomicromips" attributes. 12926 -mmt 12927 -mno-mt 12928 Use (do not use) MT Multithreading instructions. 12929 -mmcu 12930 -mno-mcu 12931 Use (do not use) the MIPS MCU ASE instructions. 12932 -meva 12933 -mno-eva 12934 Use (do not use) the MIPS Enhanced Virtual Addressing instructions. 12935 -mvirt 12936 -mno-virt 12937 Use (do not use) the MIPS Virtualization (VZ) instructions. 12938 -mxpa 12939 -mno-xpa 12940 Use (do not use) the MIPS eXtended Physical Address (XPA) instructions. 12941 -mcrc 12942 -mno-crc 12943 Use (do not use) the MIPS Cyclic Redundancy Check (CRC) instructions. 12944 -mginv 12945 -mno-ginv 12946 Use (do not use) the MIPS Global INValidate (GINV) instructions. 12947 -mloongson-mmi 12948 -mno-loongson-mmi 12949 Use (do not use) the MIPS Loongson MultiMedia extensions Instructions (MMI). 12950 -mloongson-ext 12951 -mno-loongson-ext 12952 Use (do not use) the MIPS Loongson EXTensions (EXT) instructions. 12953 -mloongson-ext2 12954 -mno-loongson-ext2 12955 Use (do not use) the MIPS Loongson EXTensions r2 (EXT2) instructions. 12956 -mlong64 12957 Force "long" types to be 64 bits wide. See -mlong32 for an explanation of the default and the way that the 12958 pointer size is determined. 12959 -mlong32 12960 Force "long", "int", and pointer types to be 32 bits wide. 12961 The default size of "int"s, "long"s and pointers depends on the ABI. All the supported ABIs use 32-bit 12962 "int"s. The n64 ABI uses 64-bit "long"s, as does the 64-bit EABI; the others use 32-bit "long"s. Pointers 12963 are the same size as "long"s, or the same size as integer registers, whichever is smaller. 12964 -msym32 12965 -mno-sym32 12966 Assume (do not assume) that all symbols have 32-bit values, regardless of the selected ABI. This option is 12967 useful in combination with -mabi=64 and -mno-abicalls because it allows GCC to generate shorter and faster 12968 references to symbolic addresses. 12969 -G num 12970 Put definitions of externally-visible data in a small data section if that data is no bigger than num 12971 bytes. GCC can then generate more efficient accesses to the data; see -mgpopt for details. 12972 The default -G option depends on the configuration. 12973 -mlocal-sdata 12974 -mno-local-sdata 12975 Extend (do not extend) the -G behavior to local data too, such as to static variables in C. -mlocal-sdata 12976 is the default for all configurations. 12977 If the linker complains that an application is using too much small data, you might want to try rebuilding 12978 the less performance-critical parts with -mno-local-sdata. You might also want to build large libraries 12979 with -mno-local-sdata, so that the libraries leave more room for the main program. 12980 -mextern-sdata 12981 -mno-extern-sdata 12982 Assume (do not assume) that externally-defined data is in a small data section if the size of that data is 12983 within the -G limit. -mextern-sdata is the default for all configurations. 12984 If you compile a module Mod with -mextern-sdata -G num -mgpopt, and Mod references a variable Var that is 12985 no bigger than num bytes, you must make sure that Var is placed in a small data section. If Var is defined 12986 by another module, you must either compile that module with a high-enough -G setting or attach a "section" 12987 attribute to Var's definition. If Var is common, you must link the application with a high-enough -G 12988 setting. 12989 The easiest way of satisfying these restrictions is to compile and link every module with the same -G 12990 option. However, you may wish to build a library that supports several different small data limits. You 12991 can do this by compiling the library with the highest supported -G setting and additionally using 12992 -mno-extern-sdata to stop the library from making assumptions about externally-defined data. 12993 -mgpopt 12994 -mno-gpopt 12995 Use (do not use) GP-relative accesses for symbols that are known to be in a small data section; see -G, 12996 -mlocal-sdata and -mextern-sdata. -mgpopt is the default for all configurations. 12997 -mno-gpopt is useful for cases where the $gp register might not hold the value of "_gp". For example, if 12998 the code is part of a library that might be used in a boot monitor, programs that call boot monitor 12999 routines pass an unknown value in $gp. (In such situations, the boot monitor itself is usually compiled 13000 with -G0.) 13001 -mno-gpopt implies -mno-local-sdata and -mno-extern-sdata. 13002 -membedded-data 13003 -mno-embedded-data 13004 Allocate variables to the read-only data section first if possible, then next in the small data section if 13005 possible, otherwise in data. This gives slightly slower code than the default, but reduces the amount of 13006 RAM required when executing, and thus may be preferred for some embedded systems. 13007 -muninit-const-in-rodata 13008 -mno-uninit-const-in-rodata 13009 Put uninitialized "const" variables in the read-only data section. This option is only meaningful in 13010 conjunction with -membedded-data. 13011 -mcode-readable=setting 13012 Specify whether GCC may generate code that reads from executable sections. There are three possible 13013 settings: 13014 -mcode-readable=yes 13015 Instructions may freely access executable sections. This is the default setting. 13016 -mcode-readable=pcrel 13017 MIPS16 PC-relative load instructions can access executable sections, but other instructions must not do 13018 so. This option is useful on 4KSc and 4KSd processors when the code TLBs have the Read Inhibit bit 13019 set. It is also useful on processors that can be configured to have a dual instruction/data SRAM 13020 interface and that, like the M4K, automatically redirect PC-relative loads to the instruction RAM. 13021 -mcode-readable=no 13022 Instructions must not access executable sections. This option can be useful on targets that are 13023 configured to have a dual instruction/data SRAM interface but that (unlike the M4K) do not 13024 automatically redirect PC-relative loads to the instruction RAM. 13025 -msplit-addresses 13026 -mno-split-addresses 13027 Enable (disable) use of the "%hi()" and "%lo()" assembler relocation operators. This option has been 13028 superseded by -mexplicit-relocs but is retained for backwards compatibility. 13029 -mexplicit-relocs 13030 -mno-explicit-relocs 13031 Use (do not use) assembler relocation operators when dealing with symbolic addresses. The alternative, 13032 selected by -mno-explicit-relocs, is to use assembler macros instead. 13033 -mexplicit-relocs is the default if GCC was configured to use an assembler that supports relocation 13034 operators. 13035 -mcheck-zero-division 13036 -mno-check-zero-division 13037 Trap (do not trap) on integer division by zero. 13038 The default is -mcheck-zero-division. 13039 -mdivide-traps 13040 -mdivide-breaks 13041 MIPS systems check for division by zero by generating either a conditional trap or a break instruction. 13042 Using traps results in smaller code, but is only supported on MIPS II and later. Also, some versions of 13043 the Linux kernel have a bug that prevents trap from generating the proper signal ("SIGFPE"). Use 13044 -mdivide-traps to allow conditional traps on architectures that support them and -mdivide-breaks to force 13045 the use of breaks. 13046 The default is usually -mdivide-traps, but this can be overridden at configure time using 13047 --with-divide=breaks. Divide-by-zero checks can be completely disabled using -mno-check-zero-division. 13048 -mload-store-pairs 13049 -mno-load-store-pairs 13050 Enable (disable) an optimization that pairs consecutive load or store instructions to enable load/store 13051 bonding. This option is enabled by default but only takes effect when the selected architecture is known 13052 to support bonding. 13053 -mmemcpy 13054 -mno-memcpy 13055 Force (do not force) the use of "memcpy" for non-trivial block moves. The default is -mno-memcpy, which 13056 allows GCC to inline most constant-sized copies. 13057 -mlong-calls 13058 -mno-long-calls 13059 Disable (do not disable) use of the "jal" instruction. Calling functions using "jal" is more efficient but 13060 requires the caller and callee to be in the same 256 megabyte segment. 13061 This option has no effect on abicalls code. The default is -mno-long-calls. 13062 -mmad 13063 -mno-mad 13064 Enable (disable) use of the "mad", "madu" and "mul" instructions, as provided by the R4650 ISA. 13065 -mimadd 13066 -mno-imadd 13067 Enable (disable) use of the "madd" and "msub" integer instructions. The default is -mimadd on 13068 architectures that support "madd" and "msub" except for the 74k architecture where it was found to generate 13069 slower code. 13070 -mfused-madd 13071 -mno-fused-madd 13072 Enable (disable) use of the floating-point multiply-accumulate instructions, when they are available. The 13073 default is -mfused-madd. 13074 On the R8000 CPU when multiply-accumulate instructions are used, the intermediate product is calculated to 13075 infinite precision and is not subject to the FCSR Flush to Zero bit. This may be undesirable in some 13076 circumstances. On other processors the result is numerically identical to the equivalent computation using 13077 separate multiply, add, subtract and negate instructions. 13078 -nocpp 13079 Tell the MIPS assembler to not run its preprocessor over user assembler files (with a .s suffix) when 13080 assembling them. 13081 -mfix-24k 13082 -mno-fix-24k 13083 Work around the 24K E48 (lost data on stores during refill) errata. The workarounds are implemented by the 13084 assembler rather than by GCC. 13085 -mfix-r4000 13086 -mno-fix-r4000 13087 Work around certain R4000 CPU errata: 13088 - A double-word or a variable shift may give an incorrect result if executed immediately after starting 13089 an integer division. 13090 - A double-word or a variable shift may give an incorrect result if executed while an integer 13091 multiplication is in progress. 13092 - An integer division may give an incorrect result if started in a delay slot of a taken branch or a 13093 jump. 13094 -mfix-r4400 13095 -mno-fix-r4400 13096 Work around certain R4400 CPU errata: 13097 - A double-word or a variable shift may give an incorrect result if executed immediately after starting 13098 an integer division. 13099 -mfix-r10000 13100 -mno-fix-r10000 13101 Work around certain R10000 errata: 13102 - "ll"/"sc" sequences may not behave atomically on revisions prior to 3.0. They may deadlock on 13103 revisions 2.6 and earlier. 13104 This option can only be used if the target architecture supports branch-likely instructions. -mfix-r10000 13105 is the default when -march=r10000 is used; -mno-fix-r10000 is the default otherwise. 13106 -mfix-r5900 13107 -mno-fix-r5900 13108 Do not attempt to schedule the preceding instruction into the delay slot of a branch instruction placed at 13109 the end of a short loop of six instructions or fewer and always schedule a "nop" instruction there instead. 13110 The short loop bug under certain conditions causes loops to execute only once or twice, due to a hardware 13111 bug in the R5900 chip. The workaround is implemented by the assembler rather than by GCC. 13112 -mfix-rm7000 13113 -mno-fix-rm7000 13114 Work around the RM7000 "dmult"/"dmultu" errata. The workarounds are implemented by the assembler rather 13115 than by GCC. 13116 -mfix-vr4120 13117 -mno-fix-vr4120 13118 Work around certain VR4120 errata: 13119 - "dmultu" does not always produce the correct result. 13120 - "div" and "ddiv" do not always produce the correct result if one of the operands is negative. 13121 The workarounds for the division errata rely on special functions in libgcc.a. At present, these functions 13122 are only provided by the "mips64vr*-elf" configurations. 13123 Other VR4120 errata require a NOP to be inserted between certain pairs of instructions. These errata are 13124 handled by the assembler, not by GCC itself. 13125 -mfix-vr4130 13126 Work around the VR4130 "mflo"/"mfhi" errata. The workarounds are implemented by the assembler rather than 13127 by GCC, although GCC avoids using "mflo" and "mfhi" if the VR4130 "macc", "macchi", "dmacc" and "dmacchi" 13128 instructions are available instead. 13129 -mfix-sb1 13130 -mno-fix-sb1 13131 Work around certain SB-1 CPU core errata. (This flag currently works around the SB-1 revision 2 "F1" and 13132 "F2" floating-point errata.) 13133 -mr10k-cache-barrier=setting 13134 Specify whether GCC should insert cache barriers to avoid the side effects of speculation on R10K 13135 processors. 13136 In common with many processors, the R10K tries to predict the outcome of a conditional branch and 13137 speculatively executes instructions from the "taken" branch. It later aborts these instructions if the 13138 predicted outcome is wrong. However, on the R10K, even aborted instructions can have side effects. 13139 This problem only affects kernel stores and, depending on the system, kernel loads. As an example, a 13140 speculatively-executed store may load the target memory into cache and mark the cache line as dirty, even 13141 if the store itself is later aborted. If a DMA operation writes to the same area of memory before the 13142 "dirty" line is flushed, the cached data overwrites the DMA-ed data. See the R10K processor manual for a 13143 full description, including other potential problems. 13144 One workaround is to insert cache barrier instructions before every memory access that might be 13145 speculatively executed and that might have side effects even if aborted. -mr10k-cache-barrier=setting 13146 controls GCC's implementation of this workaround. It assumes that aborted accesses to any byte in the 13147 following regions does not have side effects: 13148 1. the memory occupied by the current function's stack frame; 13149 2. the memory occupied by an incoming stack argument; 13150 3. the memory occupied by an object with a link-time-constant address. 13151 It is the kernel's responsibility to ensure that speculative accesses to these regions are indeed safe. 13152 If the input program contains a function declaration such as: 13153 void foo (void); 13154 then the implementation of "foo" must allow "j foo" and "jal foo" to be executed speculatively. GCC honors 13155 this restriction for functions it compiles itself. It expects non-GCC functions (such as hand-written 13156 assembly code) to do the same. 13157 The option has three forms: 13158 -mr10k-cache-barrier=load-store 13159 Insert a cache barrier before a load or store that might be speculatively executed and that might have 13160 side effects even if aborted. 13161 -mr10k-cache-barrier=store 13162 Insert a cache barrier before a store that might be speculatively executed and that might have side 13163 effects even if aborted. 13164 -mr10k-cache-barrier=none 13165 Disable the insertion of cache barriers. This is the default setting. 13166 -mflush-func=func 13167 -mno-flush-func 13168 Specifies the function to call to flush the I and D caches, or to not call any such function. If called, 13169 the function must take the same arguments as the common "_flush_func", that is, the address of the memory 13170 range for which the cache is being flushed, the size of the memory range, and the number 3 (to flush both 13171 caches). The default depends on the target GCC was configured for, but commonly is either "_flush_func" or 13172 "__cpu_flush". 13173 mbranch-cost=num 13174 Set the cost of branches to roughly num "simple" instructions. This cost is only a heuristic and is not 13175 guaranteed to produce consistent results across releases. A zero cost redundantly selects the default, 13176 which is based on the -mtune setting. 13177 -mbranch-likely 13178 -mno-branch-likely 13179 Enable or disable use of Branch Likely instructions, regardless of the default for the selected 13180 architecture. By default, Branch Likely instructions may be generated if they are supported by the 13181 selected architecture. An exception is for the MIPS32 and MIPS64 architectures and processors that 13182 implement those architectures; for those, Branch Likely instructions are not be generated by default 13183 because the MIPS32 and MIPS64 architectures specifically deprecate their use. 13184 -mcompact-branches=never 13185 -mcompact-branches=optimal 13186 -mcompact-branches=always 13187 These options control which form of branches will be generated. The default is -mcompact-branches=optimal. 13188 The -mcompact-branches=never option ensures that compact branch instructions will never be generated. 13189 The -mcompact-branches=always option ensures that a compact branch instruction will be generated if 13190 available. If a compact branch instruction is not available, a delay slot form of the branch will be used 13191 instead. 13192 This option is supported from MIPS Release 6 onwards. 13193 The -mcompact-branches=optimal option will cause a delay slot branch to be used if one is available in the 13194 current ISA and the delay slot is successfully filled. If the delay slot is not filled, a compact branch 13195 will be chosen if one is available. 13196 -mfp-exceptions 13197 -mno-fp-exceptions 13198 Specifies whether FP exceptions are enabled. This affects how FP instructions are scheduled for some 13199 processors. The default is that FP exceptions are enabled. 13200 For instance, on the SB-1, if FP exceptions are disabled, and we are emitting 64-bit code, then we can use 13201 both FP pipes. Otherwise, we can only use one FP pipe. 13202 -mvr4130-align 13203 -mno-vr4130-align 13204 The VR4130 pipeline is two-way superscalar, but can only issue two instructions together if the first one 13205 is 8-byte aligned. When this option is enabled, GCC aligns pairs of instructions that it thinks should 13206 execute in parallel. 13207 This option only has an effect when optimizing for the VR4130. It normally makes code faster, but at the 13208 expense of making it bigger. It is enabled by default at optimization level -O3. 13209 -msynci 13210 -mno-synci 13211 Enable (disable) generation of "synci" instructions on architectures that support it. The "synci" 13212 instructions (if enabled) are generated when "__builtin___clear_cache" is compiled. 13213 This option defaults to -mno-synci, but the default can be overridden by configuring GCC with --with-synci. 13214 When compiling code for single processor systems, it is generally safe to use "synci". However, on many 13215 multi-core (SMP) systems, it does not invalidate the instruction caches on all cores and may lead to 13216 undefined behavior. 13217 -mrelax-pic-calls 13218 -mno-relax-pic-calls 13219 Try to turn PIC calls that are normally dispatched via register $25 into direct calls. This is only 13220 possible if the linker can resolve the destination at link time and if the destination is within range for 13221 a direct call. 13222 -mrelax-pic-calls is the default if GCC was configured to use an assembler and a linker that support the 13223 ".reloc" assembly directive and -mexplicit-relocs is in effect. With -mno-explicit-relocs, this 13224 optimization can be performed by the assembler and the linker alone without help from the compiler. 13225 -mmcount-ra-address 13226 -mno-mcount-ra-address 13227 Emit (do not emit) code that allows "_mcount" to modify the calling function's return address. When 13228 enabled, this option extends the usual "_mcount" interface with a new ra-address parameter, which has type,

图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
漫威未来之战iPad版V2.1.5
漫威未来之战iPad版V2.1.5
下载
律动之星
律动之星
下载
蠕虫狂奔
蠕虫狂奔
下载
助理来也
助理来也
下载
蜀山仙剑派
蜀山仙剑派
下载
鲜果连连看HD
鲜果连连看HD
下载
NBA2K17多项修改器
NBA2K17多项修改器
下载
Cas(图片缩略图生成工具)2.20免安装版
Cas(图片缩略图生成工具)2.20免安装版
下载
飞船DJ
飞船DJ
下载
怪物猎人世界再不斩大剑MOD
怪物猎人世界再不斩大剑MOD
下载
海蓝抢票王
海蓝抢票王
下载
VR范儿iPad版V1.0.0
VR范儿iPad版V1.0.0
下载
角色地图
角色地图
下载
连连看5
连连看5
下载
健康保健品网
健康保健品网
下载
辐射4阳光潮汐拖车公园MOD
辐射4阳光潮汐拖车公园MOD
下载