📄 sysv4.h
字号:
%{shared:-Bshareable %{h*} %{soname*}} \ %{!shared: \ %{!static: \ %{rdynamic: -export-dynamic} \ %{!dynamic-linker: -dynamic-linker /usr/libexec/ld-elf.so.1}} \ %{static:-Bstatic}} \ %{symbolic:-Bsymbolic}"/* GNU/Linux support. */#ifdef USE_GNULIBC_1#define LIB_LINUX_SPEC "%{mnewlib: --start-group -llinux -lc --end-group } \%{!mnewlib: -lc }"#else#define LIB_LINUX_SPEC "%{mnewlib: --start-group -llinux -lc --end-group } \%{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } \%{profile:-lc_p} %{!profile:-lc}}}"#endif#ifdef USE_GNULIBC_1#define STARTFILE_LINUX_SPEC "\%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \%{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} \%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"#else#define STARTFILE_LINUX_SPEC "\%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \%{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} \%{static:crtbeginT.o%s} \%{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"#endif#define ENDFILE_LINUX_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} \%{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s}"#define LINK_START_LINUX_SPEC ""#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"#if !defined(USE_GNULIBC_1) && defined(HAVE_LD_EH_FRAME_HDR)# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "#endif#ifdef USE_GNULIBC_1#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \%{!undef: \ %{!ansi: \ %{!std=*:-Dunix -D__unix -Dlinux -D__linux} \ %{std=gnu*:-Dunix -D__unix -Dlinux -D__linux}}} \-Asystem=unix -Asystem=posix"#else#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \%{!undef: \ %{!ansi: \ %{!std=*:-Dunix -D__unix -Dlinux -D__linux} \ %{std=gnu*:-Dunix -D__unix -Dlinux -D__linux}}} \-Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}"#endif/* GNU/Hurd support. */#define LIB_GNU_SPEC "%{mnewlib: --start-group -lgnu -lc --end-group } \%{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } \%{profile:-lc_p} %{!profile:-lc}}}"#define STARTFILE_GNU_SPEC "\%{!shared: %{!static: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}} \%{static: %{pg:gcrt0.o%s} %{!pg:%{p:gcrt0.o%s} %{!p:crt0.o%s}}} \%{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} \%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"#define ENDFILE_GNU_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} \%{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s}"#define LINK_START_GNU_SPEC ""#define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"#define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \%{!undef: \ %{!ansi: -Dunix -D__unix}} \-Asystem=gnu -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}"/* NetBSD support. */#define LIB_NETBSD_SPEC "\%{profile:-lgmon -lc_p} %{!profile:-lc}"#define STARTFILE_NETBSD_SPEC "\ncrti.o%s crt0.o%s \%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"#define ENDFILE_NETBSD_SPEC "\%{!shared:crtend.o%s} %{shared:crtendS.o%s} \ncrtn.o%s"#define LINK_START_NETBSD_SPEC "\"#define LINK_OS_NETBSD_SPEC "\%{!shared: %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}"#define CPP_OS_NETBSD_SPEC "\-D__powerpc__ -D__NetBSD__ -D__ELF__ -D__KPRINTF_ATTRIBUTE__"/* RTEMS support. */ #define CPP_OS_RTEMS_SPEC "\%{!mcpu*: %{!Dppc*: %{!Dmpc*: -Dmpc750} } }\%{mcpu=403: %{!Dppc*: %{!Dmpc*: -Dppc403} } } \%{mcpu=505: %{!Dppc*: %{!Dmpc*: -Dmpc505} } } \%{mcpu=601: %{!Dppc*: %{!Dmpc*: -Dppc601} } } \%{mcpu=602: %{!Dppc*: %{!Dmpc*: -Dppc602} } } \%{mcpu=603: %{!Dppc*: %{!Dmpc*: -Dppc603} } } \%{mcpu=603e: %{!Dppc*: %{!Dmpc*: -Dppc603e} } } \%{mcpu=604: %{!Dppc*: %{!Dmpc*: -Dmpc604} } } \%{mcpu=750: %{!Dppc*: %{!Dmpc*: -Dmpc750} } } \%{mcpu=821: %{!Dppc*: %{!Dmpc*: -Dmpc821} } } \%{mcpu=860: %{!Dppc*: %{!Dmpc*: -Dmpc860} } }" /* VxWorks support. *//* VxWorks does all the library stuff itself. */#define LIB_VXWORKS_SPEC ""/* VxWorks provides the functionality of crt0.o and friends itself. */#define STARTFILE_VXWORKS_SPEC ""#define ENDFILE_VXWORKS_SPEC ""/* Because it uses ld -r, vxworks has no start/end files, nor starting address. */#define LINK_START_VXWORKS_SPEC ""#define LINK_OS_VXWORKS_SPEC "-r"#define CPP_OS_VXWORKS_SPEC "\-DCPU_FAMILY=PPC \%{!mcpu*: \ %{mpowerpc*: -DCPU=PPC603} \ %{!mno-powerpc: -DCPU=PPC603}} \%{mcpu=powerpc: -DCPU=PPC603} \%{mcpu=401: -DCPU=PPC403} \%{mcpu=403: -DCPU=PPC403} \%{mcpu=405: -DCPU=PPC405} \%{mcpu=601: -DCPU=PPC601} \%{mcpu=602: -DCPU=PPC603} \%{mcpu=603: -DCPU=PPC603} \%{mcpu=603e: -DCPU=PPC603} \%{mcpu=ec603e: -DCPU=PPC603} \%{mcpu=604: -DCPU=PPC604} \%{mcpu=604e: -DCPU=PPC604} \%{mcpu=620: -DCPU=PPC604} \%{mcpu=740: -DCPU=PPC603} \%{mcpu=7450: -DCPU=PPC603} \%{mcpu=750: -DCPU=PPC603} \%{mcpu=801: -DCPU=PPC603} \%{mcpu=821: -DCPU=PPC603} \%{mcpu=823: -DCPU=PPC603} \%{mcpu=860: -DCPU=PPC603}"/* WindISS support. */#define LIB_WINDISS_SPEC "--start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group"#define CPP_OS_WINDISS_SPEC "\-D__rtasim \-D__EABI__ \-D__ppc \%{!msoft-float: -D__hardfp} \"#define STARTFILE_WINDISS_SPEC "crt0.o%s crtbegin.o%s"#define ENDFILE_WINDISS_SPEC "crtend.o%s"#define LINK_START_WINDISS_SPEC ""#define LINK_OS_WINDISS_SPEC ""/* Define any extra SPECS that the compiler needs to generate. *//* Override rs6000.h definition. */#undef SUBTARGET_EXTRA_SPECS#define SUBTARGET_EXTRA_SPECS \ { "cpp_sysv", CPP_SYSV_SPEC }, \ { "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \ { "lib_ads", LIB_ADS_SPEC }, \ { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ { "lib_mvme", LIB_MVME_SPEC }, \ { "lib_sim", LIB_SIM_SPEC }, \ { "lib_freebsd", LIB_FREEBSD_SPEC }, \ { "lib_gnu", LIB_GNU_SPEC }, \ { "lib_linux", LIB_LINUX_SPEC }, \ { "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_vxworks", LIB_VXWORKS_SPEC }, \ { "lib_windiss", LIB_WINDISS_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \ { "startfile_ads", STARTFILE_ADS_SPEC }, \ { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ { "startfile_mvme", STARTFILE_MVME_SPEC }, \ { "startfile_sim", STARTFILE_SIM_SPEC }, \ { "startfile_freebsd", STARTFILE_FREEBSD_SPEC }, \ { "startfile_gnu", STARTFILE_GNU_SPEC }, \ { "startfile_linux", STARTFILE_LINUX_SPEC }, \ { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_vxworks", STARTFILE_VXWORKS_SPEC }, \ { "startfile_windiss", STARTFILE_WINDISS_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \ { "endfile_ads", ENDFILE_ADS_SPEC }, \ { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ { "endfile_mvme", ENDFILE_MVME_SPEC }, \ { "endfile_sim", ENDFILE_SIM_SPEC }, \ { "endfile_freebsd", ENDFILE_FREEBSD_SPEC }, \ { "endfile_gnu", ENDFILE_GNU_SPEC }, \ { "endfile_linux", ENDFILE_LINUX_SPEC }, \ { "endfile_netbsd", ENDFILE_NETBSD_SPEC }, \ { "endfile_vxworks", ENDFILE_VXWORKS_SPEC }, \ { "endfile_windiss", ENDFILE_WINDISS_SPEC }, \ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \ { "link_path", LINK_PATH_SPEC }, \ { "link_shlib", LINK_SHLIB_SPEC }, \ { "link_target", LINK_TARGET_SPEC }, \ { "link_start", LINK_START_SPEC }, \ { "link_start_ads", LINK_START_ADS_SPEC }, \ { "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \ { "link_start_mvme", LINK_START_MVME_SPEC }, \ { "link_start_sim", LINK_START_SIM_SPEC }, \ { "link_start_freebsd", LINK_START_FREEBSD_SPEC }, \ { "link_start_gnu", LINK_START_GNU_SPEC }, \ { "link_start_linux", LINK_START_LINUX_SPEC }, \ { "link_start_netbsd", LINK_START_NETBSD_SPEC }, \ { "link_start_vxworks", LINK_START_VXWORKS_SPEC }, \ { "link_start_windiss", LINK_START_WINDISS_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \ { "link_os", LINK_OS_SPEC }, \ { "link_os_ads", LINK_OS_ADS_SPEC }, \ { "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \ { "link_os_mvme", LINK_OS_MVME_SPEC }, \ { "link_os_sim", LINK_OS_SIM_SPEC }, \ { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ { "link_os_linux", LINK_OS_LINUX_SPEC }, \ { "link_os_gnu", LINK_OS_GNU_SPEC }, \ { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ { "link_os_windiss", LINK_OS_WINDISS_SPEC }, \ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ { "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \ { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ { "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \ { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ { "cpp_os_sim", CPP_OS_SIM_SPEC }, \ { "cpp_os_freebsd", CPP_OS_FREEBSD_SPEC }, \ { "cpp_os_gnu", CPP_OS_GNU_SPEC }, \ { "cpp_os_linux", CPP_OS_LINUX_SPEC }, \ { "cpp_os_netbsd", CPP_OS_NETBSD_SPEC }, \ { "cpp_os_rtems", CPP_OS_RTEMS_SPEC }, \ { "cpp_os_vxworks", CPP_OS_VXWORKS_SPEC }, \ { "cpp_os_windiss", CPP_OS_WINDISS_SPEC }, \ { "cpp_os_default", CPP_OS_DEFAULT_SPEC },/* Define this macro as a C expression for the initializer of an array of string to tell the driver program which options are defaults for this target and thus do not need to be handled specially when using `MULTILIB_OPTIONS'. Do not define this macro if `MULTILIB_OPTIONS' is not defined in the target makefile fragment or if none of the options listed in `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */#define MULTILIB_DEFAULTS { "mbig", "mcall-sysv" }/* Define this macro if the code for function profiling should come before the function prologue. Normally, the profiling code comes after. */#define PROFILE_BEFORE_PROLOGUE 1/* Function name to call to do profiling. */#define RS6000_MCOUNT "_mcount"/* Define this macro (to a value of 1) if you want to support the Win32 style pragmas #pragma pack(push,<n>)' and #pragma pack(pop)'. The pack(push,<n>) pragma specifies the maximum alignment (in bytes) of fields within a structure, in much the same way as the __aligned__' and __packed__' __attribute__'s do. A pack value of zero resets the behavior to the default. Successive invocations of this pragma cause the previous values to be stacked, so that invocations of #pragma pack(pop)' will return to the previous value. */#define HANDLE_PRAGMA_PACK_PUSH_POP 1/* Define library calls for quad FP operations. These are all part of the PowerPC 32bit ABI. */#define ADDTF3_LIBCALL "_q_add"#define DIVTF3_LIBCALL "_q_div"#define EXTENDDFTF2_LIBCALL "_q_dtoq"#define EQTF2_LIBCALL "_q_feq"#define GETF2_LIBCALL "_q_fge"#define GTTF2_LIBCALL "_q_fgt"#define LETF2_LIBCALL "_q_fle"#define LTTF2_LIBCALL "_q_flt"#define NETF2_LIBCALL "_q_fne"#define FLOATSITF2_LIBCALL "_q_itoq"#define MULTF3_LIBCALL "_q_mul"#define NEGTF2_LIBCALL "_q_neg"#define TRUNCTFDF2_LIBCALL "_q_qtod"#define FIX_TRUNCTFSI2_LIBCALL "_q_qtoi"#define TRUNCTFSF2_LIBCALL "_q_qtos"#define FIXUNS_TRUNCTFSI2_LIBCALL "_q_qtou"#define SQRTTF_LIBCALL "_q_sqrt"#define EXTENDSFTF2_LIBCALL "_q_stoq"#define SUBTF3_LIBCALL "_q_sub"#define FLOATUNSSITF2_LIBCALL "_q_utoq"#define INIT_TARGET_OPTABS \ do { \ if (TARGET_HARD_FLOAT) \ { \ add_optab->handlers[(int) TFmode].libfunc \ = init_one_libfunc (ADDTF3_LIBCALL); \ sub_optab->handlers[(int) TFmode].libfunc \ = init_one_libfunc (SUBTF3_LIBCALL); \ neg_optab->handlers[(int) TFmode].libfunc \ = init_one_libfunc (NEGTF2_LIBCALL); \ smul_optab->handlers[(int) TFmode].libfunc \ = init_one_libfunc (MULTF3_LIBCALL); \ sdiv_optab->handlers[(int) TFmode].libfunc \ = init_one_libfunc (DIVTF3_LIBCALL); \ eqtf2_libfunc = init_one_libfunc (EQTF2_LIBCALL); \ netf2_libfunc = init_one_libfunc (NETF2_LIBCALL); \ gttf2_libfunc = init_one_libfunc (GTTF2_LIBCALL); \ getf2_libfunc = init_one_libfunc (GETF2_LIBCALL); \ lttf2_libfunc = init_one_libfunc (LTTF2_LIBCALL); \ letf2_libfunc = init_one_libfunc (LETF2_LIBCALL); \ trunctfsf2_libfunc = init_one_libfunc (TRUNCTFSF2_LIBCALL); \ trunctfdf2_libfunc = init_one_libfunc (TRUNCTFDF2_LIBCALL); \ extendsftf2_libfunc = init_one_libfunc (EXTENDSFTF2_LIBCALL); \ extenddftf2_libfunc = init_one_libfunc (EXTENDDFTF2_LIBCALL); \ floatsitf_libfunc = init_one_libfunc (FLOATSITF2_LIBCALL); \ fixtfsi_libfunc = init_one_libfunc (FIX_TRUNCTFSI2_LIBCALL); \ fixunstfsi_libfunc \ = init_one_libfunc (FIXUNS_TRUNCTFSI2_LIBCALL); \ if (TARGET_PPC_GPOPT || TARGET_POWER2) \ sqrt_optab->handlers[(int) TFmode].libfunc \ = init_one_libfunc (SQRTTF_LIBCALL); \ } \ } while (0)/* Select a format to encode pointers in exception handling data. CODE is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is true if the symbol may be affected by dynamic relocations. */#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ ((flag_pic || TARGET_RELOCATABLE) \ ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) \ : DW_EH_PE_absptr)#define TARGET_ASM_EXCEPTION_SECTION readonly_data_section#define DOUBLE_INT_ASM_OP "\t.quad\t"/* Generate entries in .fixup for relocatable addresses. */#define RELOCATABLE_NEEDS_FIXUP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -