Annotation of gcc/config/next.h, revision 1.1.1.3

1.1       root        1: /* next.h:  definitions for NeXT.
                      2: 
                      3: This file is part of GNU CC.
                      4: 
                      5: GNU CC is free software; you can redistribute it and/or modify
                      6: it under the terms of the GNU General Public License as published by
                      7: the Free Software Foundation; either version 2, or (at your option)
                      8: any later version.
                      9: 
                     10: GNU CC is distributed in the hope that it will be useful,
                     11: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     13: GNU General Public License for more details.
                     14: 
                     15: You should have received a copy of the GNU General Public License
                     16: along with GNU CC; see the file COPYING.  If not, write to
                     17: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     18: 
                     19: #include "m68k.h"
                     20: 
1.1.1.3 ! root       21: /* Use new NeXT include file search path.  */
        !            22: 
        !            23: #ifndef CROSS_COMPILE /* In a cross compiler with NeXT as target, don't expect
        !            24:                         the host to use Next's directory scheme.  */
        !            25: #define INCLUDE_DEFAULTS                               \
        !            26:   {                                                    \
        !            27:     { GPLUSPLUS_INCLUDE_DIR, 1},                       \
        !            28:     { GCC_INCLUDE_DIR, 0},                             \
        !            29:     { LOCAL_INCLUDE_DIR, 0},                           \
        !            30:     { "/NextDeveloper/Headers", 0},                    \
        !            31:     { "/NextDeveloper/Headers/ansi", 0},               \
        !            32:     { "/NextDeveloper/Headers/bsd", 0},                        \
        !            33:     { "/LocalDeveloper/Headers", 0},                   \
        !            34:     { "/LocalDeveloper/Headers/ansi", 0},              \
        !            35:     { "/LocalDeveloper/Headers/bsd", 0},               \
        !            36:     { "/NextDeveloper/2.0CompatibleHeaders", 0},       \
        !            37:     { STANDARD_INCLUDE_DIR, 0},                                \
        !            38:     { 0, 0}                                            \
        !            39:   }
        !            40: #endif /* CROSS_COMPILE */
        !            41: 
1.1       root       42: #define EXTRA_FORMAT_FUNCTIONS \
                     43:       "NXPrintf",      FALSE,  2,      FALSE,  \
                     44:       "NXScanf",       TRUE,   2,      FALSE,  \
                     45:       "NXVPrintf",     FALSE,  2,      TRUE,   \
                     46:       "NXVScanf",      TRUE,   2,      TRUE,   \
                     47:       "DPSPrintf",     FALSE,  2,      FALSE,  \
                     48:       "bsd_sprintf",   FALSE,  2,      FALSE,  \
                     49:       "bsd_vsprintf",  FALSE,  2,      TRUE,
                     50: 
                     51: /* Use NeXT's special calling convention for sending an Objc message.  */
                     52: #define NEXT_OBJC_RUNTIME
                     53: 
                     54: /* We have atexit.  */
                     55: #define HAVE_ATEXIT
                     56: 
                     57: /* Enable recent gcc to compile under the old gcc in Next release 1.0.  */
                     58: #define __inline inline
                     59: 
                     60: /* See m68k.h.  0407 means 68040 (or 68030 or 68020, with 68881/2).  */
                     61: 
                     62: #define TARGET_DEFAULT 0407
                     63: 
                     64: /* wchar_t is unsigned short */
                     65: 
                     66: #undef WCHAR_TYPE
                     67: #undef WCHAR_TYPE_SIZE
                     68: #define WCHAR_TYPE "short unsigned int"
                     69: #define WCHAR_TYPE_SIZE (BITS_PER_WORD / 2)
                     70: 
                     71: /* Give methods pretty symbol names on NeXT. */
                     72: 
                     73: #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME)        \
                     74:   do { if (CAT_NAME)                                                   \
                     75:         sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+',          \
                     76:                  (CLASS_NAME), (CAT_NAME), (SEL_NAME));                \
                     77:        else                                                            \
                     78:         sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+',              \
                     79:                  (CLASS_NAME), (SEL_NAME));                            \
                     80:      } while (0)
                     81: 
                     82: /* Wrap new method names in quotes so the assembler doesn't gag.
1.1.1.2   root       83:    Make Objective-C internal symbols local.  */
1.1       root       84: 
                     85: #undef ASM_OUTPUT_LABELREF
                     86: #define ASM_OUTPUT_LABELREF(FILE,NAME) \
                     87:   do { if (NAME[0] == '+' || NAME[0] == '-') fprintf (FILE, "\"%s\"", NAME); \
                     88:        else if (!strncmp (NAME, "_OBJC_", 6)) fprintf (FILE, "L%s", NAME);   \
1.1.1.2   root       89:        else if (!strncmp (NAME, ".objc_class_name_", 17))              \
                     90:         fprintf (FILE, "%s", NAME);                                    \
1.1       root       91:        else fprintf (FILE, "_%s", NAME); } while (0)
                     92: 
                     93: #undef STACK_BOUNDARY
                     94: /* Boundary (in *bits*) on which stack pointer should be aligned.  */
                     95: #define STACK_BOUNDARY 32
                     96: 
                     97: /* These compiler options take n arguments.  */
                     98: 
                     99: #define WORD_SWITCH_TAKES_ARG(STR)             \
                    100:   (!strcmp (STR, "Ttext") ? 1 :                        \
                    101:    !strcmp (STR, "Tdata") ? 1 :                        \
1.1.1.3 ! root      102:    !strcmp (STR, "Tbss") ? 1 :                 \
1.1       root      103:    !strcmp (STR, "include") ? 1 :              \
                    104:    !strcmp (STR, "imacros") ? 1 :              \
                    105:    !strcmp (STR, "segalign") ? 1 :             \
                    106:    !strcmp (STR, "seg1addr") ? 1 :             \
                    107:    !strcmp (STR, "segaddr") ? 2 :              \
                    108:    !strcmp (STR, "sectobjectsymbols") ? 2 :    \
                    109:    !strcmp (STR, "segprot") ? 3 :              \
                    110:    !strcmp (STR, "sectcreate") ? 3 :           \
                    111:    !strcmp (STR, "sectalign") ? 3 :            \
                    112:    !strcmp (STR, "segcreate") ? 3 :            \
                    113:    !strcmp (STR, "sectorder") ? 3 :            \
1.1.1.2   root      114:    !strcmp (STR, "aux-info") ? 1 :             \
1.1       root      115:    0)
                    116: 
                    117: /* Names to predefine in the preprocessor for this target machine.  */
                    118: 
1.1.1.3 ! root      119: #define CPP_PREDEFINES "-Dmc68000 -Dm68k -DNeXT -Dunix -D__MACH__ -D__ARCHITECTURE__=\"m68k\""
1.1       root      120: 
                    121: /* Machine dependent ccp options.  */
                    122: 
                    123: /* This option used to be called -bsd, but that conflicts with the
                    124:    general -b option.  */
                    125: #define CPP_SPEC "%{strict-bsd:-D__STRICT_BSD__}"
                    126: 
                    127: /* Machine dependent ld options.  */
                    128: 
                    129: #define LINK_SPEC "%{Z} %{M} \
                    130: %{execute*} %{object*} %{preload*} %{fvmlib*} \
                    131: %{segalign*} %{seg1addr*} %{segaddr*} %{segprot*} \
                    132: %{seglinkedit*} %{noseglinkedit*} \
                    133: %{sectcreate*} %{sectalign*} %{sectobjectsymbols}\
                    134: %{segcreate*} %{Mach*} %{whyload} %{w} \
                    135: %{sectorder*} %{whatsloaded}"
                    136: 
                    137: /* Machine dependent libraries.  */
                    138: 
                    139: #define LIB_SPEC "%{!p:%{!pg:-lsys_s}} %{pg:-lsys_p}"
                    140:  
                    141: /* We specify crt0.o as -lcrt0.o so that ld will search the library path. */
                    142: #define STARTFILE_SPEC  \
                    143:   "%{pg:-lgcrt0.o}%{!pg: \
                    144:      %{p:%e-p profiling is no longer supported.  Use -pg instead.} \
                    145:      %{!p:-lcrt0.o}}"
                    146: 
                    147: /* Every structure or union's size must be a multiple of 2 bytes.
                    148:    (Why isn't this in m68k.h?)  */
                    149: 
                    150: #define STRUCTURE_SIZE_BOUNDARY 16
                    151: 
                    152: /* Why not? */
                    153: 
                    154: #define DOLLARS_IN_IDENTIFIERS 2
                    155: 
                    156: /* Allow #sscs (but don't do anything). */
                    157: 
                    158: #define SCCS_DIRECTIVE
                    159: 
                    160: /* We use Dbx symbol format.  */
                    161: 
                    162: #define DBX_DEBUGGING_INFO
                    163: 
                    164: /* This saves a fair amount of space. */
                    165: 
                    166: #define DBX_CONTIN_LENGTH 0
                    167: 
                    168: /* These screw up NeXT's gdb at the moment, so don't use them. */
                    169: 
                    170: #define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(FILE, FILENAME)
                    171: 
                    172: /* gdb needs a null N_SO at the end of each file for scattered loading. */
                    173: 
                    174: #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)                        \
                    175:   fprintf (FILE,                                                       \
                    176:           "\t.text\n\t.stabs \"%s\",%d,0,0,Letext\nLetext:\n",         \
                    177:           "" , N_SO)
                    178: 
                    179: /* Don't use .gcc_compiled symbols to communicate with GDB;
                    180:    They interfere with numerically sorted symbol lists. */
                    181: 
                    182: #define ASM_IDENTIFY_GCC(asm_out_file)
                    183: 
                    184: /* This is how to output an assembler line defining a `double' constant.  */
                    185: 
                    186: #undef ASM_OUTPUT_DOUBLE
                    187: #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                                  \
                    188:   (REAL_VALUE_ISINF ((VALUE))                                          \
                    189:    ? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
                    190:    : fprintf (FILE, "\t.double 0r%.20e\n", (VALUE)))
                    191: 
                    192: /* This is how to output an assembler line defining a `float' constant.  */
                    193: 
                    194: #undef ASM_OUTPUT_FLOAT
                    195: #define ASM_OUTPUT_FLOAT(FILE,VALUE)                                   \
                    196:   (REAL_VALUE_ISINF ((VALUE))                                          \
                    197:    ? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
                    198:    : fprintf (FILE, "\t.single 0r%.20e\n", (VALUE)))
                    199: 
                    200: #undef ASM_OUTPUT_FLOAT_OPERAND
                    201: #define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE)                           \
                    202:   (REAL_VALUE_ISINF ((VALUE))                                          \
                    203:    ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
                    204:    : fprintf (FILE, "#0r%.9g", (VALUE)))
                    205: 
                    206: #undef ASM_OUTPUT_DOUBLE_OPERAND
                    207: #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE)                          \
                    208:   (REAL_VALUE_ISINF ((VALUE))                                          \
                    209:    ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
                    210:    : fprintf (FILE, "#0r%.20g", (VALUE)))
                    211: 
1.1.1.2   root      212: #if 0 /* This is for system verson 3.0, which isn't out yet.  */
1.1       root      213: #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)      \
                    214:   do { constructor_section ();                 \
                    215:        ASM_OUTPUT_ALIGN (FILE, 1);             \
                    216:        fprintf (FILE, "\t.long ");             \
                    217:        assemble_name (FILE, NAME);             \
                    218:        fprintf (FILE, "\n"); } while (0)
                    219: 
                    220: #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)       \
                    221:   do { destructor_section ();                  \
                    222:        ASM_OUTPUT_ALIGN (FILE, 1);             \
                    223:        fprintf (FILE, "\t.long ");             \
                    224:        assemble_name (FILE, NAME);             \
                    225:        fprintf (FILE, "\n"); } while (0)
1.1.1.2   root      226: #endif
1.1       root      227: 
                    228: /* How to parse #pragma's */
                    229: 
                    230: #define HANDLE_PRAGMA(finput) handle_pragma (finput)
                    231: 
                    232: /* Create new Mach-O sections. */
                    233: 
                    234: #define SECTION_FUNCTION(FUNCTION, SECTION, DIRECTIVE, WAS_TEXT)       \
                    235: void                                                                   \
                    236: FUNCTION ()                                                            \
                    237: {                                                                      \
                    238:   extern void text_section ();                                         \
                    239:   extern int flag_no_mach_text_sections;                               \
                    240:                                                                        \
                    241:   if (WAS_TEXT && flag_no_mach_text_sections)                          \
                    242:     text_section ();                                                   \
                    243:   else if (in_section != SECTION)                                      \
                    244:     {                                                                  \
                    245:       fprintf (asm_out_file, "%s\n", DIRECTIVE);                       \
                    246:       in_section = SECTION;                                            \
                    247:     }                                                                  \
                    248: }                                                                      \
                    249: 
                    250: #define EXTRA_SECTIONS                                 \
                    251:   in_const, in_cstring, in_literal4, in_literal8,      \
                    252:   in_constructor, in_destructor,                       \
                    253:   in_objc_class, in_objc_meta_class, in_objc_category, \
                    254:   in_objc_class_vars, in_objc_instance_vars,           \
                    255:   in_objc_cls_meth, in_objc_inst_meth,                 \
                    256:   in_objc_cat_cls_meth, in_objc_cat_inst_meth,         \
                    257:   in_objc_selector_strs, in_objc_selector_refs,                \
                    258:   in_objc_symbols, in_objc_module_info
                    259: 
                    260: #define EXTRA_SECTION_FUNCTIONS                        \
                    261: SECTION_FUNCTION (const_section,               \
                    262:                  in_const,                     \
                    263:                  ".const", 1)                  \
                    264: SECTION_FUNCTION (cstring_section,             \
                    265:                  in_cstring,                   \
                    266:                  ".cstring", 1)                \
                    267: SECTION_FUNCTION (literal4_section,            \
                    268:                  in_literal4,                  \
                    269:                  ".literal4", 1)               \
                    270: SECTION_FUNCTION (literal8_section,            \
                    271:                  in_literal8,                  \
                    272:                  ".literal8", 1)               \
                    273: SECTION_FUNCTION (constructor_section,         \
                    274:                  in_constructor,               \
                    275:                  ".constructor", 0)            \
                    276: SECTION_FUNCTION (destructor_section,          \
                    277:                  in_destructor,                \
                    278:                  ".destructor", 0)             \
                    279: SECTION_FUNCTION (objc_class_section,          \
                    280:                  in_objc_class,                \
                    281:                  ".objc_class", 0)             \
                    282: SECTION_FUNCTION (objc_meta_class_section,     \
                    283:                  in_objc_meta_class,           \
                    284:                  ".objc_meta_class", 0)        \
                    285: SECTION_FUNCTION (objc_category_section,       \
                    286:                  in_objc_category,             \
                    287:                ".objc_category", 0)            \
                    288: SECTION_FUNCTION (objc_class_vars_section,     \
                    289:                  in_objc_class_vars,           \
                    290:                  ".objc_class_vars", 0)        \
                    291: SECTION_FUNCTION (objc_instance_vars_section,  \
                    292:                  in_objc_instance_vars,        \
                    293:                  ".objc_instance_vars", 0)     \
                    294: SECTION_FUNCTION (objc_cls_meth_section,       \
                    295:                  in_objc_cls_meth,             \
                    296:                  ".objc_cls_meth", 0)          \
                    297: SECTION_FUNCTION (objc_inst_meth_section,      \
                    298:                  in_objc_inst_meth,            \
                    299:                  ".objc_inst_meth", 0)         \
                    300: SECTION_FUNCTION (objc_cat_cls_meth_section,   \
                    301:                  in_objc_cat_cls_meth,         \
                    302:                  ".objc_cat_cls_meth", 0)      \
                    303: SECTION_FUNCTION (objc_cat_inst_meth_section,  \
                    304:                  in_objc_cat_inst_meth,        \
                    305:                  ".objc_cat_inst_meth", 0)     \
                    306: SECTION_FUNCTION (objc_selector_strs_section,  \
                    307:                  in_objc_selector_strs,        \
                    308:                  ".objc_selector_strs", 0)     \
                    309: SECTION_FUNCTION (objc_selector_refs_section,  \
                    310:                  in_objc_selector_refs,        \
                    311:                  ".objc_selector_refs", 0)     \
                    312: SECTION_FUNCTION (objc_symbols_section,                \
                    313:                  in_objc_symbols,              \
                    314:                  ".objc_symbols", 0)           \
                    315: SECTION_FUNCTION (objc_module_info_section,    \
                    316:                  in_objc_module_info,          \
                    317:                  ".objc_module_info", 0)
                    318: 
                    319: #define READONLY_DATA_SECTION const_section
                    320: 
                    321: #define SELECT_SECTION(exp,reloc)                              \
                    322:   do                                                           \
                    323:     {                                                          \
                    324:       if (TREE_CODE (exp) == STRING_CST)                       \
                    325:        {                                                       \
                    326:          if (flag_writable_strings)                            \
                    327:            data_section ();                                    \
                    328:          else if (TREE_STRING_LENGTH (exp) !=                  \
                    329:                   strlen (TREE_STRING_POINTER (exp)) + 1)      \
                    330:            readonly_data_section ();                           \
                    331:          else                                                  \
                    332:            cstring_section ();                                 \
                    333:        }                                                       \
                    334:       else if (TREE_CODE (exp) == INTEGER_CST                  \
                    335:               || TREE_CODE (exp) == REAL_CST)                  \
                    336:         {                                                      \
                    337:          tree size = TYPE_SIZE (TREE_TYPE (exp));              \
                    338:                                                                \
                    339:          if (TREE_CODE (size) == INTEGER_CST &&                \
                    340:              TREE_INT_CST_LOW (size) == 4 &&                   \
                    341:              TREE_INT_CST_HIGH (size) == 0)                    \
                    342:            literal4_section ();                                \
                    343:          else if (TREE_CODE (size) == INTEGER_CST &&           \
                    344:              TREE_INT_CST_LOW (size) == 8 &&                   \
                    345:              TREE_INT_CST_HIGH (size) == 0)                    \
                    346:            literal8_section ();                                \
                    347:          else                                                  \
                    348:            readonly_data_section ();                           \
                    349:        }                                                       \
                    350:       else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))    \
                    351:               && !TREE_SIDE_EFFECTS (exp))                             \
                    352:        readonly_data_section ();                                       \
                    353:       else if (TREE_CODE (exp) == VAR_DECL &&                          \
                    354:               DECL_NAME (exp) &&                                       \
                    355:               TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&        \
                    356:               IDENTIFIER_POINTER (DECL_NAME (exp)) &&                  \
                    357:               !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6)) \
                    358:        {                                                               \
                    359:          const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));      \
                    360:                                                                        \
                    361:          if (!strncmp (name, "_OBJC_CLASS_METHODS_", 20))              \
                    362:            objc_cls_meth_section ();                                   \
                    363:          else if (!strncmp (name, "_OBJC_INSTANCE_METHODS_", 23))      \
                    364:            objc_inst_meth_section ();                                  \
                    365:          else if (!strncmp (name, "_OBJC_CATEGORY_CLASS_METHODS_", 20)) \
                    366:            objc_cat_cls_meth_section ();                               \
                    367:          else if (!strncmp (name, "_OBJC_CATEGORY_INSTANCE_METHODS_", 23)) \
                    368:            objc_cat_inst_meth_section ();                              \
                    369:          else if (!strncmp (name, "_OBJC_CLASS_VARIABLES_", 22))       \
                    370:            objc_class_vars_section ();                                 \
                    371:          else if (!strncmp (name, "_OBJC_INSTANCE_VARIABLES_", 25))    \
                    372:            objc_instance_vars_section ();                              \
                    373:          else if (!strncmp (name, "_OBJC_CLASS_", 12))                 \
                    374:            objc_class_section ();                                      \
                    375:          else if (!strncmp (name, "_OBJC_METACLASS_", 16))             \
                    376:            objc_meta_class_section ();                                 \
                    377:          else if (!strncmp (name, "_OBJC_CATEGORY_", 15))              \
                    378:            objc_category_section ();                                   \
                    379:          else if (!strncmp (name, "_OBJC_STRINGS", 13))                \
                    380:            objc_selector_strs_section ();                              \
                    381:          else if (!strncmp (name, "_OBJC_SELECTOR_REFERENCES", 25))    \
                    382:            objc_selector_refs_section ();                              \
                    383:          else if (!strncmp (name, "_OBJC_SYMBOLS", 13))                \
                    384:            objc_symbols_section ();                                    \
                    385:          else if (!strncmp (name, "_OBJC_MODULES", 13))                \
                    386:            objc_module_info_section ();                                \
                    387:          else                                                          \
                    388:            data_section ();                                            \
                    389:        }                                                               \
                    390:       else                                                             \
                    391:         data_section ();                                               \
                    392:     }                                                                  \
                    393:   while (0)
                    394: 
                    395: /* Force the assembler to create all the Objective-C sections,
                    396:     so that their order is guaranteed. */
                    397:   
                    398: #define OBJC_PROLOGUE                                  \
                    399:   do {                                                 \
                    400:        extern void objc_class_section ();              \
                    401:        extern void objc_meta_class_section ();         \
                    402:        extern void objc_cat_cls_meth_section ();       \
                    403:        extern void objc_cat_inst_meth_section ();      \
                    404:        extern void objc_cls_meth_section ();           \
                    405:        extern void objc_inst_meth_section ();          \
                    406:        extern void objc_selector_refs_section ();      \
                    407:        extern void objc_symbols_section ();            \
                    408:        extern void objc_category_section ();           \
                    409:        extern void objc_class_vars_section ();         \
                    410:        extern void objc_instance_vars_section ();      \
                    411:        extern void objc_module_info_section ();        \
                    412:        extern void objc_selector_strs_section ();      \
                    413:                                                        \
                    414:        objc_class_section ();          \
                    415:        objc_meta_class_section ();     \
                    416:        objc_cat_cls_meth_section ();   \
                    417:        objc_cat_inst_meth_section ();  \
                    418:        objc_cls_meth_section ();       \
                    419:        objc_inst_meth_section ();      \
                    420:        objc_selector_refs_section ();  \
                    421:        objc_symbols_section ();        \
                    422:        objc_category_section ();       \
                    423:        objc_class_vars_section ();     \
                    424:        objc_instance_vars_section ();  \
                    425:        objc_module_info_section ();    \
                    426:        objc_selector_strs_section ();  \
                    427:      } while (0)
                    428: 
                    429: /* We do not define JUMP_TABLES_IN_TEXT_SECTION, since we wish to keep
                    430:    the text section pure.  There is no point in addressing the jump
                    431:    tables using pc relative addressing, since they are not in the text
                    432:    section, so we undefine CASE_VECTOR_PC_RELATIVE.  This also
                    433:    causes the compiler to use absolute addresses in the jump table,
                    434:    so we redefine CASE_VECTOR_MODE to be SImode. */
                    435: 
                    436: #undef CASE_VECTOR_MODE
                    437: #define CASE_VECTOR_MODE SImode
                    438: 
                    439: #undef CASE_VECTOR_PC_RELATIVE
                    440: 
                    441: /* Don't treat addresses involving labels differently from symbol names.
1.1.1.2   root      442:    Previously, references to labels generated pc-relative addressing modes
1.1       root      443:    while references to symbol names generated absolute addressing modes.  */
                    444: 
                    445: #undef GO_IF_INDEXABLE_BASE(X, ADDR)
                    446: #define GO_IF_INDEXABLE_BASE(X, ADDR)  \
                    447: { if (GET_CODE (X) == REG && REG_OK_FOR_BASE_P (X)) goto ADDR; }
                    448: 
1.1.1.2   root      449: #define ALIGN_ASM_OP           ".align"
1.1       root      450: 
                    451: #undef ASM_OUTPUT_ALIGN
                    452: #define ASM_OUTPUT_ALIGN(FILE,LOG)     \
                    453:   if ((LOG) != 0)                      \
1.1.1.2   root      454:     fprintf (FILE, "\t%s %d\n", ALIGN_ASM_OP, (LOG))
1.1       root      455: 
                    456: /* The maximum alignment which the object file format can support.
                    457:    For NeXT's Mach-O format, this is 2^15.  */
                    458: 
                    459: #define MAX_OFILE_ALIGNMENT 0x8000

unix.superglobalmegacorp.com

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