diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-09-05 13:03:46 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2014-09-05 13:03:46 +0100 |
commit | 53d68b9f05d0bebdb08573838c92c3dd73b01419 (patch) | |
tree | 71d3ae38a17711fac14acd3253bc2f21685ebb65 /gcc/c-family/c-cppbuiltin.c | |
parent | 02a0ec4a8d8102b3f5f8ef1350bb65cf6c1d22e6 (diff) | |
download | gcc-53d68b9f05d0bebdb08573838c92c3dd73b01419.zip gcc-53d68b9f05d0bebdb08573838c92c3dd73b01419.tar.gz gcc-53d68b9f05d0bebdb08573838c92c3dd73b01419.tar.bz2 |
Use -fbuilding-libgcc for more target macros used in libgcc.
gcc/c-family:
* c-cppbuiltin.c (c_cpp_builtins): Also define
__LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__,
__LIBGCC_EH_FRAME_SECTION_NAME__, __LIBGCC_JCR_SECTION_NAME__,
__LIBGCC_CTORS_SECTION_ASM_OP__, __LIBGCC_DTORS_SECTION_ASM_OP__,
__LIBGCC_TEXT_SECTION_ASM_OP__, __LIBGCC_INIT_SECTION_ASM_OP__,
__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__,
__LIBGCC_STACK_GROWS_DOWNWARD__,
__LIBGCC_DONT_USE_BUILTIN_SETJMP__,
__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__,
__LIBGCC_DWARF_FRAME_REGISTERS__,
__LIBGCC_EH_RETURN_STACKADJ_RTX__, __LIBGCC_JMP_BUF_SIZE__,
__LIBGCC_STACK_POINTER_REGNUM__ and
__LIBGCC_VTABLE_USES_DESCRIPTORS__ for -fbuilding-libgcc.
(builtin_define_with_value): Handle backslash-escaping in string
macro values.
libgcc:
* Makefile.in (CRTSTUFF_CFLAGS): Add -fbuilding-libgcc.
* config/aarch64/linux-unwind.h (STACK_POINTER_REGNUM): Change all
uses to __LIBGCC_STACK_POINTER_REGNUM__.
(DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to
__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
* config/alpha/vms-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN):
Change use to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
* config/cr16/unwind-cr16.c (STACK_GROWS_DOWNWARD): Change all
uses to __LIBGCC_STACK_GROWS_DOWNWARD__.
(DWARF_FRAME_REGISTERS): Change all uses to
__LIBGCC_DWARF_FRAME_REGISTERS__.
(EH_RETURN_STACKADJ_RTX): Change all uses to
__LIBGCC_EH_RETURN_STACKADJ_RTX__.
* config/cr16/unwind-dw2.h (DWARF_FRAME_REGISTERS): Change use to
__LIBGCC_DWARF_FRAME_REGISTERS__. Remove conditional definition.
* config/i386/cygming-crtbegin.c (EH_FRAME_SECTION_NAME): Change
use to __LIBGCC_EH_FRAME_SECTION_NAME__.
(JCR_SECTION_NAME): Change use to __LIBGCC_JCR_SECTION_NAME__.
* config/i386/cygming-crtend.c (EH_FRAME_SECTION_NAME): Change use
to __LIBGCC_EH_FRAME_SECTION_NAME__.
(JCR_SECTION_NAME): Change use to __LIBGCC_JCR_SECTION_NAME__
* config/mips/linux-unwind.h (STACK_POINTER_REGNUM): Change use to
__LIBGCC_STACK_POINTER_REGNUM__.
(DWARF_ALT_FRAME_RETURN_COLUMN): Change all uses to
__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
* config/nios2/linux-unwind.h (STACK_POINTER_REGNUM): Change use
to __LIBGCC_STACK_POINTER_REGNUM__.
* config/pa/hpux-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change
all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
* config/pa/linux-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN): Change
all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
* config/rs6000/aix-unwind.h (DWARF_ALT_FRAME_RETURN_COLUMN):
Change all uses to __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__.
(STACK_POINTER_REGNUM): Change all uses to
__LIBGCC_STACK_POINTER_REGNUM__.
* config/rs6000/darwin-fallback.c (STACK_POINTER_REGNUM): Change
use to __LIBGCC_STACK_POINTER_REGNUM__.
* config/rs6000/linux-unwind.h (STACK_POINTER_REGNUM): Change all
uses to __LIBGCC_STACK_POINTER_REGNUM__.
* config/sparc/linux-unwind.h (DWARF_FRAME_REGISTERS): Change use
to __LIBGCC_DWARF_FRAME_REGISTERS__.
* config/sparc/sol2-unwind.h (DWARF_FRAME_REGISTERS): Change use
to __LIBGCC_DWARF_FRAME_REGISTERS__.
* config/tilepro/linux-unwind.h (STACK_POINTER_REGNUM): Change use
to __LIBGCC_STACK_POINTER_REGNUM__.
* config/xtensa/unwind-dw2-xtensa.h (DWARF_FRAME_REGISTERS):
Remove conditional definition.
* crtstuff.c (TEXT_SECTION_ASM_OP): Change all uses to
__LIBGCC_TEXT_SECTION_ASM_OP__.
(EH_FRAME_SECTION_NAME): Change all uses to
__LIBGCC_EH_FRAME_SECTION_NAME__.
(EH_TABLES_CAN_BE_READ_ONLY): Change all uses to
__LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__.
(CTORS_SECTION_ASM_OP): Change all uses to
__LIBGCC_CTORS_SECTION_ASM_OP__.
(DTORS_SECTION_ASM_OP): Change all uses to
__LIBGCC_DTORS_SECTION_ASM_OP__.
(JCR_SECTION_NAME): Change all uses to
__LIBGCC_JCR_SECTION_NAME__.
(INIT_SECTION_ASM_OP): Change all uses to
__LIBGCC_INIT_SECTION_ASM_OP__.
(INIT_ARRAY_SECTION_ASM_OP): Change all uses to
__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__.
* generic-morestack.c (STACK_GROWS_DOWNWARD): Change all uses to
__LIBGCC_STACK_GROWS_DOWNWARD__.
* libgcc2.c (INIT_SECTION_ASM_OP): Change all uses to
__LIBGCC_INIT_SECTION_ASM_OP__.
(INIT_ARRAY_SECTION_ASM_OP): Change all uses to
__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__.
(EH_FRAME_SECTION_NAME): Change all uses to
__LIBGCC_EH_FRAME_SECTION_NAME__.
* libgcov-profiler.c (VTABLE_USES_DESCRIPTORS): Remove conditional
definitions. Change all uses to
__LIBGCC_VTABLE_USES_DESCRIPTORS__.
* unwind-dw2.c (STACK_GROWS_DOWNWARD): Change all uses to
__LIBGCC_STACK_GROWS_DOWNWARD__.
(DWARF_FRAME_REGISTERS): Change all uses to
__LIBGCC_DWARF_FRAME_REGISTERS__.
(EH_RETURN_STACKADJ_RTX): Change all uses to
__LIBGCC_EH_RETURN_STACKADJ_RTX__.
* unwind-dw2.h (DWARF_FRAME_REGISTERS): Remove conditional
definition. Change use to __LIBGCC_DWARF_FRAME_REGISTERS__.
* unwind-sjlj.c (DONT_USE_BUILTIN_SETJMP): Change all uses to
__LIBGCC_DONT_USE_BUILTIN_SETJMP__.
(JMP_BUF_SIZE): Change use to __LIBGCC_JMP_BUF_SIZE__.
From-SVN: r214954
Diffstat (limited to 'gcc/c-family/c-cppbuiltin.c')
-rw-r--r-- | gcc/c-family/c-cppbuiltin.c | 115 |
1 files changed, 111 insertions, 4 deletions
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index d07c980..a474735 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -943,9 +943,74 @@ c_cpp_builtins (cpp_reader *pfile) /* For libgcc-internal use only. */ if (flag_building_libgcc) - /* For libgcc enable-execute-stack.c. */ - builtin_define_with_int_value ("__LIBGCC_TRAMPOLINE_SIZE__", - TRAMPOLINE_SIZE); + { + /* For libgcc crtstuff.c and libgcc2.c. */ + builtin_define_with_int_value ("__LIBGCC_EH_TABLES_CAN_BE_READ_ONLY__", + EH_TABLES_CAN_BE_READ_ONLY); +#ifdef EH_FRAME_SECTION_NAME + builtin_define_with_value ("__LIBGCC_EH_FRAME_SECTION_NAME__", + EH_FRAME_SECTION_NAME, 1); +#endif +#ifdef JCR_SECTION_NAME + builtin_define_with_value ("__LIBGCC_JCR_SECTION_NAME__", + JCR_SECTION_NAME, 1); +#endif +#ifdef CTORS_SECTION_ASM_OP + builtin_define_with_value ("__LIBGCC_CTORS_SECTION_ASM_OP__", + CTORS_SECTION_ASM_OP, 1); +#endif +#ifdef DTORS_SECTION_ASM_OP + builtin_define_with_value ("__LIBGCC_DTORS_SECTION_ASM_OP__", + DTORS_SECTION_ASM_OP, 1); +#endif +#ifdef TEXT_SECTION_ASM_OP + builtin_define_with_value ("__LIBGCC_TEXT_SECTION_ASM_OP__", + TEXT_SECTION_ASM_OP, 1); +#endif +#ifdef INIT_SECTION_ASM_OP + builtin_define_with_value ("__LIBGCC_INIT_SECTION_ASM_OP__", + INIT_SECTION_ASM_OP, 1); +#endif +#ifdef INIT_ARRAY_SECTION_ASM_OP + /* Despite the name of this target macro, the expansion is not + actually used, and may be empty rather than a string + constant. */ + cpp_define (pfile, "__LIBGCC_INIT_ARRAY_SECTION_ASM_OP__"); +#endif + + /* For libgcc enable-execute-stack.c. */ + builtin_define_with_int_value ("__LIBGCC_TRAMPOLINE_SIZE__", + TRAMPOLINE_SIZE); + + /* For libgcc generic-morestack.c and unwinder code. */ +#ifdef STACK_GROWS_DOWNWARD + cpp_define (pfile, "__LIBGCC_STACK_GROWS_DOWNWARD__"); +#endif + + /* For libgcc unwinder code. */ +#ifdef DONT_USE_BUILTIN_SETJMP + cpp_define (pfile, "__LIBGCC_DONT_USE_BUILTIN_SETJMP__"); +#endif +#ifdef DWARF_ALT_FRAME_RETURN_COLUMN + builtin_define_with_int_value ("__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__", + DWARF_ALT_FRAME_RETURN_COLUMN); +#endif + builtin_define_with_int_value ("__LIBGCC_DWARF_FRAME_REGISTERS__", + DWARF_FRAME_REGISTERS); +#ifdef EH_RETURN_STACKADJ_RTX + cpp_define (pfile, "__LIBGCC_EH_RETURN_STACKADJ_RTX__"); +#endif +#ifdef JMP_BUF_SIZE + builtin_define_with_int_value ("__LIBGCC_JMP_BUF_SIZE__", + JMP_BUF_SIZE); +#endif + builtin_define_with_int_value ("__LIBGCC_STACK_POINTER_REGNUM__", + STACK_POINTER_REGNUM); + + /* For libgcov. */ + builtin_define_with_int_value ("__LIBGCC_VTABLE_USES_DESCRIPTORS__", + TARGET_VTABLE_USES_DESCRIPTORS); + } /* For use in assembly language. */ builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0); @@ -1087,7 +1152,49 @@ builtin_define_with_value (const char *macro, const char *expansion, int is_str) size_t extra = 2; /* space for an = and a NUL */ if (is_str) - extra += 2; /* space for two quote marks */ + { + char *quoted_expansion = (char *) alloca (elen * 4 + 1); + const char *p; + char *q; + extra += 2; /* space for two quote marks */ + for (p = expansion, q = quoted_expansion; *p; p++) + { + switch (*p) + { + case '\n': + *q++ = '\\'; + *q++ = 'n'; + break; + + case '\t': + *q++ = '\\'; + *q++ = 't'; + break; + + case '\\': + *q++ = '\\'; + *q++ = '\\'; + break; + + case '"': + *q++ = '\\'; + *q++ = '"'; + break; + + default: + if (ISPRINT ((unsigned char) *p)) + *q++ = *p; + else + { + sprintf (q, "\\%03o", (unsigned char) *p); + q += 4; + } + } + } + *q = '\0'; + expansion = quoted_expansion; + elen = q - expansion; + } buf = (char *) alloca (mlen + elen + extra); if (is_str) |