Annotation of gcc/config/rs6000/eabi.h, revision 1.1

1.1     ! root        1: /* Core target definitions for GNU compiler
        !             2:    for IBM RS/6000 PowerPC targeted to embedded ELF systems.
        !             3:    Copyright (C) 1995 Free Software Foundation, Inc.
        !             4:    Contributed by Cygnus Support.
        !             5: 
        !             6: This file is part of GNU CC.
        !             7: 
        !             8: GNU CC is free software; you can redistribute it and/or modify
        !             9: it under the terms of the GNU General Public License as published by
        !            10: the Free Software Foundation; either version 2, or (at your option)
        !            11: any later version.
        !            12: 
        !            13: GNU CC is distributed in the hope that it will be useful,
        !            14: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            16: GNU General Public License for more details.
        !            17: 
        !            18: You should have received a copy of the GNU General Public License
        !            19: along with GNU CC; see the file COPYING.  If not, write to
        !            20: the Free Software Foundation, 59 Temple Place - Suite 330,
        !            21: Boston, MA 02111-1307, USA.  */
        !            22: 
        !            23: #include "rs6000/sysv4.h"
        !            24: 
        !            25: /* For now, make stabs the default debugging type, not dwarf. */
        !            26: #undef PREFERRED_DEBUGGING_TYPE
        !            27: #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
        !            28: 
        !            29: /* Make int foo : 8 not cause structures to be aligned to an int boundary */
        !            30: 
        !            31: #undef PCC_BITFIELD_TYPE_MATTERS
        !            32: #define        PCC_BITFIELD_TYPE_MATTERS (TARGET_BITFIELD_TYPE)
        !            33: 
        !            34: /* Define this macro to be the value 1 if instructions will fail to
        !            35:    work if given data not on the nominal alignment.  If instructions
        !            36:    will merely go slower in that case, define this macro as 0.
        !            37: 
        !            38:    Note, little endian systems trap on unaligned addresses, so never
        !            39:    turn off strict alignment in that case. */
        !            40: #undef STRICT_ALIGNMENT
        !            41: #define        STRICT_ALIGNMENT (TARGET_STRICT_ALIGN || TARGET_LITTLE_ENDIAN)
        !            42: 
        !            43: /* Align stack to 8 byte boundaries, rather than 16 bytes Sys V.4 uses */
        !            44: #undef STACK_BOUNDARY
        !            45: #define        STACK_BOUNDARY  64
        !            46: 
        !            47: /* No data type wants to be aligned rounder than this.  */
        !            48: #undef BIGGEST_ALIGNMENT
        !            49: #define BIGGEST_ALIGNMENT 64
        !            50: 
        !            51: /* Put PC relative got entries in .got2 */
        !            52: #undef MINIMAL_TOC_SECTION_ASM_OP
        !            53: #define MINIMAL_TOC_SECTION_ASM_OP \
        !            54:   ((TARGET_RELOCATABLE) ? "\t.section\t\".got2\",\"aw\"" : "\t.section\t\".got1\",\"aw\"")
        !            55: 
        !            56: /* Put relocatable data in .data, not .rodata so initialized pointers can be updated */
        !            57: #undef CONST_SECTION_ASM_OP
        !            58: #define CONST_SECTION_ASM_OP \
        !            59:   ((TARGET_RELOCATABLE) ? "\t.section\t\".data\"\t# .rodata" : "\t.section\t\".rodata\"")
        !            60: 
        !            61: /* Invoke an initializer function to set up the GOT */
        !            62: #define NAME__MAIN "__eabi"
        !            63: #define INVOKE__main 1
        !            64: 
        !            65: #undef TARGET_VERSION
        !            66: #define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
        !            67: 
        !            68: #undef CPP_PREDEFINES
        !            69: #define CPP_PREDEFINES \
        !            70:   "-DPPC -D__embedded__ -Asystem(embedded) -Acpu(powerpc) -Amachine(powerpc)"
        !            71: 
        !            72: /* Don't use startfiles or libraries except for libgcc.a */
        !            73: #undef  STARTFILE_SPEC
        !            74: #define        STARTFILE_SPEC ""
        !            75: 
        !            76: #undef LIB_SPEC
        !            77: #define        LIB_SPEC ""
        !            78: 
        !            79: #undef LIBGCC_SPEC
        !            80: #define        LIBGCC_SPEC "libgcc.a%s"
        !            81: 
        !            82: #undef ENDFILE_SPEC
        !            83: #define        ENDFILE_SPEC ""
        !            84: 
        !            85: /* This is how to output an assembler line defining an `int' constant.
        !            86:    For -mrelocatable, we mark all addresses that need to be fixed up
        !            87:    in the .fixup section.  */
        !            88: #undef ASM_OUTPUT_INT
        !            89: #define ASM_OUTPUT_INT(FILE,VALUE)                                     \
        !            90: do {                                                                   \
        !            91:   static int recurse = 0;                                              \
        !            92:   if (TARGET_RELOCATABLE                                               \
        !            93:       && in_section != in_toc                                          \
        !            94:       && in_section != in_text                                         \
        !            95:       && in_section != in_ctors                                                \
        !            96:       && in_section != in_dtors                                                \
        !            97:       && !recurse                                                      \
        !            98:       && GET_CODE (VALUE) != CONST_INT                                 \
        !            99:       && GET_CODE (VALUE) != CONST_DOUBLE                              \
        !           100:       && CONSTANT_P (VALUE))                                           \
        !           101:     {                                                                  \
        !           102:       static int labelno = 0;                                          \
        !           103:       char buf[256], *p;                                               \
        !           104:                                                                        \
        !           105:       recurse = 1;                                                     \
        !           106:       ASM_GENERATE_INTERNAL_LABEL (buf, "LCP", labelno++);             \
        !           107:       STRIP_NAME_ENCODING (p, buf);                                    \
        !           108:       fprintf (FILE, "%s:\n", p);                                      \
        !           109:       fprintf (FILE, "\t.long (");                                     \
        !           110:       output_addr_const (FILE, (VALUE));                               \
        !           111:       fprintf (FILE, ")@fixup\n");                                     \
        !           112:       fprintf (FILE, "\t.section\t\".fixup\",\"aw\"\n");               \
        !           113:       ASM_OUTPUT_ALIGN (FILE, 2);                                      \
        !           114:       fprintf (FILE, "\t.long\t%s\n", p);                              \
        !           115:       fprintf (FILE, "\t.previous\n");                                 \
        !           116:       recurse = 0;                                                     \
        !           117:     }                                                                  \
        !           118:   else                                                                 \
        !           119:     {                                                                  \
        !           120:       fprintf (FILE, "\t.long ");                                      \
        !           121:       output_addr_const (FILE, (VALUE));                               \
        !           122:       fprintf (FILE, "\n");                                            \
        !           123:     }                                                                  \
        !           124: } while (0)
        !           125: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.