 RealView Compiler Reference Guide |
|
Technical Support On-Line Manuals RealView Compiler Reference Guide Preface Introduction Compiler Command-line Options Command-line options ‑Aopt ‑‑[no_]alternative_tokens ‑‑[no_]anachronisms --apcs=qualifer...qualifier ‑‑arm ‑‑asm ‑‑[no_]autoinline ‑‑bigend ‑‑[no_]brief_diagnostics --bss_threshold=num ‑c ‑C ‑‑c90 ‑‑c99 ‑‑[no_]code_gen --[no_]compile_all_input ‑‑cpp ‑‑create_pch=filename ‑Dname[(parm-list)][=def] ‑‑[no_]data_reorder ‑‑[no_]debug ‑‑[no_]debug_macros ‑‑default_extension=ext ‑‑[no_]dep_name ‑‑depend=filename ‑‑depend_format=string --[no_]depend_system_headers ‑‑device=list ‑‑device=name --device_opt=option ‑‑diag_error=tag[,tag,...] ‑‑diag_remark=tag[,tag,... ] ‑‑diag_style={arm|ide|gnu} ‑‑diag_suppress=tag[,tag,...] --diag_suppress=optimizations ‑‑diag_warning=tag[,tag,...] --diag_warning=optimizations ‑‑[no_]dollar ‑‑dwarf2 ‑‑dwarf3 ‑E ‑‑enum_is_int ‑‑errors=filename ‑‑[no_]exceptions ‑‑[no_]exceptions_unwind ‑‑[no_]export_all_vtbl ‑‑[no_]export_defs_implicitly --[no_]extended_initializers ‑‑feedback=filename --[no_]force_new_nothrow ‑‑forceinline ‑‑fpmode=model ‑‑fpu=list ‑‑fpu=name ‑‑[no_]friend_injection ‑‑gnu ‑‑[no_]guiding_decls ‑‑help ‑‑[no_]hide_all ‑Idir[,dir,...] ‑‑[no_]implicit_include --[no_]implicit_include_searches ‑‑[no_]implicit_typename ‑‑info=totals ‑‑[no_]inline ‑‑interleave ‑Jdir[,dir,...] ‑‑kandr_include ‑Lopt ‑‑library_interface=lib --library_type=lib ‑‑list ‑‑littleend ‑‑locale=lang_country ‑‑loose_implicit_cast ‑‑[no_]lower_ropi ‑‑[no_]lower_rwpi ‑M ‑‑md ‑‑message_locale=lang_country[.codepage] ‑‑min_array_alignment=opt ‑‑[no_]multibyte_chars ‑‑[no_]multifile ‑‑[no_]nonstd_qualifier_deduction ‑o filename ‑Onum ‑‑[no_]old_specializations -‑omf_browse ‑Ospace ‑Otime ‑‑[no_]parse_templates ‑‑pch ‑‑pch_dir=dir ‑‑[no_]pch_messages ‑‑[no_]pch_verbose ‑‑pending_instantiations=n ‑‑pointer_alignment=num --[no_]project=filename ‑‑preinclude=filename --[no_]reduce_paths --reinitialize_workdir ‑‑remarks ‑‑[no_]restrict ‑‑[no_]rtti ‑S ‑‑[un]signed_bitfields ‑‑[un]signed_chars ‑‑show_cmdline ‑‑split_ldm ‑‑split_sections ‑‑[no_]strict ‑‑strict_warnings ‑‑sys_include ‑‑thumb ‑Uname ‑‑[no_]unaligned_access ‑‑use_pch=filename ‑‑[no_]using_std ‑‑[no_]vfe ‑‑via=filename --[no_]vla ‑‑vsn ‑W --wchar16 --wchar32 --workdir=directory ‑‑[no_]wrap_diagnostics Language Extensions Compiler-specific Features C and C++ Implementation Details Via File Syntax Standard C Implementation Definition Standard C++ Implementation Definition C and C++ Compiler Implementation Limits | --apcs=qualifer...qualifier2.1.4. --apcs=qualifer...qualifierThis option controls interworking and position independence when generating code. By specifying qualifiers to the â€'â€'apcs commandâ€'line option, you can define the variant of the Procedure Call Standard for the ARM architecture (AAPCS) used by the compiler.
--apcs=qualifer...qualifier
Where qualifier...qualifier denotes a list of qualifiers. There must be: Each instance of qualifier must be one of: /[no]interworkGenerates code with or without ARM/Thumbâ„¢ interworking support. The default is /nointerwork. /[no]ropiEnables or disables the generation of Readâ€'Only Positionâ€'Independent (ROPI) code. The default is /noropi. /[no]pic is an alias for /[no]ropi.
/[no]rwpiEnables or disables the generation of Read/Write Positionâ€'Independent (RWPI) code. The default is /norwpi. /[no]pid is an alias for /[no]rwpi.
NoteYou can alternatively specify multiple qualifiers. For example, --apcs=/nointerwork/noropi/norwpi is equivalent to --apcs=/nointerwork --apcs=noropi/norwpi. If you do not specify an â€'â€'apcs option, the compiler assumes â€'â€'apcs=/nointerwork/noropi/norwpi. /[no]interworkBy default, code is generated: without interworking support, that is /nointerwork, unless the device you select using the â€'â€'device=name option corresponds to architecture ARMv5T or later with interworking support, that is /interwork, for ARMv5T or later. This is because ARMv5T or later provides direct interworking support.
/[no]ropiIf you select the /ropi qualifier to generate ROPI code, the compiler: Noteâ€'â€'apcs=/ropi is not supported when compiling C++.
/[no]rwpiIf you select the /rwpi qualifier to generate RWPI code, the compiler: NoteBecause the â€'â€'lower_rwpi option is the default, code that is not RWPI is automatically transformed into equivalent code that is RWPI. This static initialization is done at runtime by the C++ constructor mechanism, even for C.
There are restrictions when you compile code with /ropi or /rwpi. /ropiThe main restrictions when compiling with /ropi are: The use of â€'â€'apcs=/ropi is not supported when compiling C++. Some constructs that are legal C do not work when compiled for â€'â€'apcs=/ropi. For example:
extern const int ci; // ro
const int *p2 = &ci; // this static initialization
// does not work with â€'â€'apcs=/ropi
To enable such static initializations to work, compile your code using the â€'â€'lower_ropi option. For example:
armcc â€'â€'apcs=/ropi â€'â€'lower_ropi
/rwpiThe main restrictions when compiling with /rwpi are: Some constructs that are legal C do not work when compiled for â€'â€'apcs=/rwpi. For example:
int i; Â Â Â Â Â Â Â Â Â Â Â Â Â Â // rw
int *p1 = &i; Â Â Â Â Â Â Â // this static initialization
                     // does not work with â€'â€'apcs=/rwpi
                     // â€'â€'no_lower_rwpi
To enable such static initializations to work, compile your code using the â€'â€'lower_rwpi option. For example:
armcc â€'â€'apcs=/rwpi
NoteYou do not have to specify â€'â€'lower_rwpi, because this is the default.
|
|