Annotation of GNUtools/cc/config/pa/next-pdo.h, revision 1.1.1.1

1.1       root        1: /* Target definitions for GNU compiler for hppa running HPUX with NeXT pdo
                      2:    Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
                      3: 
                      4: This file is part of GNU CC.
                      5: 
                      6: GNU CC is free software; you can redistribute it and/or modify
                      7: it under the terms of the GNU General Public License as published by
                      8: the Free Software Foundation; either version 2, or (at your option)
                      9: any later version.
                     10: 
                     11: GNU CC is distributed in the hope that it will be useful,
                     12: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     14: GNU General Public License for more details.
                     15: 
                     16: You should have received a copy of the GNU General Public License
                     17: along with GNU CC; see the file COPYING.  If not, write to
                     18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     19: 
                     20: /* added <jf> */
                     21: #define USE_GAS
                     22: 
                     23: /* this may not work for double values --  hard coded to 32 bit entities */
                     24: 
                     25: #define OBJC_FORWARDING_REG_OFFSET(ISREG, OFF, REGNO) \
                     26:   do { OFF = (FP_REG_CLASS_P( REGNO_REG_CLASS(REGNO)) \
                     27:               ? -2 * ((REGNO) - 44) - 4               \
                     28:               :  4 * ((REGNO) - 26) - 4);             \
                     29:        ISREG = 0; } while (0)
                     30: 
                     31: /* pa1-ghpux originally includes pa-ghpux.h and pa.h */
                     32: #include "pa/pa1-ghpux.h"
                     33: 
                     34: #define NEXT_OBJC_RUNTIME
                     35: 
                     36: #define OBJC_HPUX_PADDING
                     37: 
                     38: #define NEXT_PDO
                     39: 
                     40: /* 
                     41:  * overrides for the funky places we put stuff
                     42:  *     there was a bug in the beta where the /usr was not prefixed
                     43:  */
                     44: #undef INCLUDE_DEFAULTS
                     45: #define INCLUDE_DEFAULTS                               \
                     46:   {                                                    \
                     47:     { GPLUSPLUS_INCLUDE_DIR, 1},                       \
                     48:     { GCC_INCLUDE_DIR, 0},                             \
                     49:     { LOCAL_INCLUDE_DIR, 0},                           \
                     50:     { "/usr/NextDeveloper/Headers", 0},                        \
                     51:     { "/usr/NextDeveloper/Headers/ansi", 0},           \
                     52:     { "/usr/NextDeveloper/Headers/bsd", 0},            \
                     53:     { "/usr/LocalDeveloper/Headers", 0},               \
                     54:     { "/usr/LocalDeveloper/Headers/ansi", 0},          \
                     55:     { "/usr/LocalDeveloper/Headers/bsd", 0},           \
                     56:     { STANDARD_INCLUDE_DIR, 0},                                \
                     57:     { 0, 0}                                            \
                     58:   }
                     59: 
                     60: /*
                     61: #define REPORT_EVENT(TYPE, NAME, FILE, LINE, MSG, ARG1, ARG2, ARG3)    \
                     62:   make_support (TYPE, NAME, FILE, LINE, MSG, ARG1, ARG2, ARG3)
                     63: */
                     64: 
                     65: /*
                     66:  * override default prefix behavior
                     67:  */
                     68: 
                     69: #undef STANDARD_EXEC_PREFIX
                     70: #define STANDARD_EXEC_PREFIX "/usr/NextDeveloper/lib/"
                     71: /* when looking for specs */
                     72: #undef STANDARD_STARTFILE_PREFIX
                     73: #define STANDARD_STARTFILE_PREFIX "/usr/NextDeveloper/lib/"
                     74: #undef TOOLDIR_BASE_PREFIX
                     75: #define TOOLDIR_BASE_PREFIX "/usr/NextDeveloper/"
                     76: 
                     77: /*
                     78:  * specs
                     79:  *
                     80:  */
                     81: 
                     82: /* should -L really be in LIB_SPEC ? <jf> */
                     83: #undef LIB_SPEC
                     84: #define LIB_SPEC "%{!p:%{!pg:-L/usr/NextDeveloper/lib -lpdo -lc -lm}}%{p:-L/usr/NextDeveloper/lib -L/lib/libp/ -lpdo -lc -lm}%{pg:-L/usr/NextDeveloper/lib -L/lib/libp/ -lpdo -lc -lm}"
                     85: 
                     86: #ifndef STARTFILE_SPEC
                     87: #define STARTFILE_SPEC  \
                     88:   "%{pg:gcrt0.o%s crtPDO.o%s}%{!pg:%{p:mcrt0.o%s crtPDO.o%s}%{!p:crt0.o%s crtPDO.o%s}}"
                     89: #endif
                     90: 
                     91: /* config.h can define ENDFILE_SPEC to override the default crtn files.  */
                     92: #ifndef ENDFILE_SPEC
                     93: #define ENDFILE_SPEC "crtnPDO.o%s"
                     94: #endif
                     95: 
                     96: 
                     97: /* RIPPED OFF FROM nextstep.h */
                     98: 
                     99: /* Give methods pretty symbol names on NeXT. */
                    100: 
                    101: #undef OBJC_GEN_METHOD_LABEL
                    102: #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) \
                    103:   do { if (CAT_NAME)                                                   \
                    104:         sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+',          \
                    105:                  (CLASS_NAME), (CAT_NAME), (SEL_NAME));                \
                    106:        else                                                            \
                    107:         sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+',              \
                    108:                  (CLASS_NAME), (SEL_NAME));                            \
                    109:      } while (0)
                    110: 
                    111: /* Wrap new method names in quotes so the assembler doesn't gag.
                    112:    Make Objective-C internal symbols local.  */
                    113: 
                    114: /* work around the gnu'ism of the @ at the begining of the symbol name */
                    115: 
                    116: #undef ASM_OUTPUT_LABELREF
                    117: #define ASM_OUTPUT_LABELREF(FILE,NAME) \
                    118:   do {  \
                    119:        if (FUNCTION_NAME_P (NAME) && (NAME[1] == '+' || NAME[1] == '-')) \
                    120:                fprintf (FILE, "\"%s\"", NAME+1); \
                    121:        else if (NAME[0] == '+' || NAME[0] == '-') \
                    122:                fprintf (FILE, "\"%s\"", NAME[0]); \
                    123:        else if (!strncmp (NAME, "_OBJC_", 6)) \
                    124:                fprintf (FILE, "L%s", NAME);   \
                    125:        else if (!strncmp (NAME, ".objc_class_name_", 17))              \
                    126:                fprintf (FILE, "%s", NAME);                             \
                    127:        else fprintf ((FILE), "%s", (NAME) + (FUNCTION_NAME_P (NAME) ? 1 : 0)); } while (0)
                    128: 
                    129: 
                    130: /* This is how to output an assembler line defining an `int' constant.  
                    131:        this is used in the OBJC_INSTANCE_METHODS segment 
                    132:        removed code that put P% infront of code being linked to shared libs 
                    133:  */
                    134: 
                    135: #undef ASM_OUTPUT_INT
                    136: #define ASM_OUTPUT_INT(FILE,VALUE)  \
                    137: { fprintf (FILE, "\t.word ");                  \
                    138:   if (function_label_operand (VALUE, VOIDmode)  \
                    139:       && in_section != in_text)                        \
                    140:     fprintf (FILE, "P%%");                     \
                    141:   output_addr_const (FILE, (VALUE));           \
                    142:   fprintf (FILE, "\n");}
                    143: 
                    144: /* from josh */
                    145: 
                    146: 
                    147: #undef SECTION_FUNCTION
                    148: #define SECTION_FUNCTION(FUNCTION, SECTION, SUBSPACE)                  \
                    149: void                                                                   \
                    150: FUNCTION ()                                                            \
                    151: {                                                                      \
                    152:   extern void text_section ();                                         \
                    153:   extern void objc_section_init ();                                    \
                    154:   extern int flag_no_mach_text_sections;                               \
                    155:   static int been_here = 0;                                            \
                    156:                                                                        \
                    157:   if (in_section != SECTION)                                           \
                    158:     {                                                                  \
                    159:       objc_section_init ();                                            \
                    160:       fprintf (asm_out_file, "\t.SPACE $PRIVATE$\n");                  \
                    161:       fprintf (asm_out_file, "\t.SUBSPA %s", SUBSPACE);                        \
                    162:       if (!been_here) {                                                        \
                    163:         fprintf(asm_out_file,",QUAD=1,ALIGN=4,ACCESS=31");             \
                    164:        been_here = 1;                                                  \
                    165:         }                                                              \
                    166:       fprintf(asm_out_file,"\n");                                      \
                    167:       in_section = SECTION;                                            \
                    168:     }                                                                  \
                    169: }                                                                      \
                    170: 
                    171: #undef EXTRA_SECTIONS
                    172: #define EXTRA_SECTIONS in_bss, in_readonly_data,       \
                    173:   in_objc_class, in_objc_meta_class, in_objc_category, \
                    174:   in_objc_class_vars, in_objc_instance_vars,           \
                    175:   in_objc_cls_meth, in_objc_inst_meth,                 \
                    176:   in_objc_cat_cls_meth, in_objc_cat_inst_meth,         \
                    177:   in_objc_selector_refs,                               \
                    178:   in_objc_symbols, in_objc_module_info,                        \
                    179:   in_objc_protocol, in_objc_string_object,             \
                    180:   in_objc_class_names, in_objc_meth_var_names,         \
                    181:   in_objc_meth_var_types, in_objc_cls_refs
                    182: 
                    183: #undef EXTRA_SECTION_FUNCTIONS
                    184: #define EXTRA_SECTION_FUNCTIONS                        \
                    185: void                                           \
                    186: bss_section ()                                 \
                    187: {                                              \
                    188:   if (in_section != in_bss)                    \
                    189:     {                                          \
                    190:       fprintf (asm_out_file, "%s\n",           \
                    191:               BSS_SECTION_ASM_OP);             \
                    192:       in_section = in_bss;                     \
                    193:     }                                          \
                    194: }                                              \
                    195: void                                           \
                    196: readonly_data ()                               \
                    197: {                                              \
                    198:   if (in_section != in_readonly_data)          \
                    199:     {                                          \
                    200:       fprintf (asm_out_file, "%s\n",           \
                    201:               READONLY_DATA_ASM_OP);           \
                    202:       in_section = in_readonly_data;           \
                    203:     }                                          \
                    204: }                                              \
                    205: SECTION_FUNCTION (objc_class_section,          \
                    206:                  in_objc_class,                \
                    207:                  "$$OBJC_CLASS$$")             \
                    208: SECTION_FUNCTION (objc_meta_class_section,     \
                    209:                  in_objc_meta_class,           \
                    210:                  "$$OBJC_METACLASS$$")         \
                    211: SECTION_FUNCTION (objc_category_section,       \
                    212:                  in_objc_category,             \
                    213:                 "$$OBJC_CATEGORY$$")           \
                    214: SECTION_FUNCTION (objc_class_vars_section,     \
                    215:                  in_objc_class_vars,           \
                    216:                  "$$OBJC_CLASS_VARS$$")        \
                    217: SECTION_FUNCTION (objc_instance_vars_section,  \
                    218:                  in_objc_instance_vars,        \
                    219:                  "$$OBJC_INSTANCE_VARS$$")     \
                    220: SECTION_FUNCTION (objc_cls_meth_section,       \
                    221:                  in_objc_cls_meth,             \
                    222:                  "$$OBJC_CLS_METH$$")          \
                    223: SECTION_FUNCTION (objc_inst_meth_section,      \
                    224:                  in_objc_inst_meth,            \
                    225:                  "$$OBJC_INST_METHODS$$")      \
                    226: SECTION_FUNCTION (objc_cat_cls_meth_section,   \
                    227:                  in_objc_cat_cls_meth,         \
                    228:                  "$$OBJC_CAT_CLS_METH$$")      \
                    229: SECTION_FUNCTION (objc_cat_inst_meth_section,  \
                    230:                  in_objc_cat_inst_meth,        \
                    231:                  "$$OBJC_CAT_INST_METH$$")     \
                    232: SECTION_FUNCTION (objc_selector_refs_section,  \
                    233:                  in_objc_selector_refs,        \
                    234:                  "$$OBJC_MESSAGE_REFS$$")      \
                    235: SECTION_FUNCTION (objc_symbols_section,                \
                    236:                  in_objc_symbols,              \
                    237:                  "$$OBJC_SYMBOLS$$")           \
                    238: SECTION_FUNCTION (objc_module_info_section,    \
                    239:                  in_objc_module_info,          \
                    240:                  "$$OBJC_MODULES$$")           \
                    241: SECTION_FUNCTION (objc_protocol_section,       \
                    242:                  in_objc_protocol,             \
                    243:                  "$$OBJC_PROTOCOL$$")          \
                    244: SECTION_FUNCTION (objc_string_object_section,  \
                    245:                  in_objc_string_object,        \
                    246:                  "$$OBJC_STRING_OBJECT$$")     \
                    247: SECTION_FUNCTION (objc_class_names_section,    \
                    248:                in_objc_class_names,            \
                    249:                "$$OBJC_CLASS_NAMES$$")         \
                    250: SECTION_FUNCTION (objc_meth_var_names_section, \
                    251:                in_objc_meth_var_names,         \
                    252:                "$$OBJC_METH_VAR_NAMES$$")      \
                    253: SECTION_FUNCTION (objc_meth_var_types_section, \
                    254:                in_objc_meth_var_types,         \
                    255:                "$$OBJC_METH_VAR_TYPES$$")      \
                    256: SECTION_FUNCTION (objc_cls_refs_section,       \
                    257:                in_objc_cls_refs,               \
                    258:                "$$OBJC_CLS_REFS$$")            \
                    259:                                                \
                    260: void                                           \
                    261: objc_section_init ()                           \
                    262: {                                              \
                    263:   static int been_here = 0;                    \
                    264:                                                \
                    265:   if (been_here == 0)                          \
                    266:     {                                          \
                    267:       been_here = 1;                           \
                    268:       objc_class_section ();                   \
                    269:       objc_meta_class_section ();              \
                    270:       objc_cat_cls_meth_section ();            \
                    271:       objc_cat_inst_meth_section ();           \
                    272:       objc_cls_meth_section ();                        \
                    273:       objc_inst_meth_section ();               \
                    274:       objc_selector_refs_section ();           \
                    275:       objc_symbols_section ();                 \
                    276:       objc_category_section ();                        \
                    277:       objc_protocol_section ();                        \
                    278:       objc_class_vars_section ();              \
                    279:       objc_instance_vars_section ();           \
                    280:       objc_module_info_section ();             \
                    281:       objc_string_object_section ();           \
                    282:       objc_class_names_section ();             \
                    283:       objc_meth_var_names_section ();          \
                    284:       objc_meth_var_types_section ();          \
                    285:       objc_cls_refs_section ();                        \
                    286:     }                                          \
                    287: }
                    288: 
                    289: /* different from NS version in that no literalX_section */ 
                    290: #undef SELECT_SECTION
                    291: #define SELECT_SECTION(exp,reloc)                              \
                    292:   do                                                           \
                    293:     {                                                          \
                    294:       if (TREE_CODE (exp) == STRING_CST)                       \
                    295:        {                                                       \
                    296:          if (flag_writable_strings)                            \
                    297:            data_section ();                                    \
                    298:          else  \
                    299:            readonly_data_section ();                           \
                    300:        }                                                       \
                    301:       else if (TREE_CODE (exp) == INTEGER_CST                  \
                    302:               || TREE_CODE (exp) == REAL_CST)                  \
                    303:         {                                                      \
                    304:            readonly_data_section ();                           \
                    305:        }                                                       \
                    306:       else if (TREE_CODE (exp) == CONSTRUCTOR                          \
                    307:               && TREE_TYPE (exp)                                       \
                    308:               && TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE            \
                    309:               && TYPE_NAME (TREE_TYPE (exp))                           \
                    310:               && TREE_CODE (TYPE_NAME (TREE_TYPE (exp))) == IDENTIFIER_NODE \
                    311:               && IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (exp))))     \
                    312:       {                                                                \
                    313:          if (!strcmp (IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (exp))), \
                    314:                        "NXConstantString"))                            \
                    315:          objc_string_object_section ();                                \
                    316:        else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))           \
                    317:                && !TREE_SIDE_EFFECTS (exp))                            \
                    318:          readonly_data_section ();                                     \
                    319:        else                                                            \
                    320:          data_section ();                                              \
                    321:       }                                                                        \
                    322:       else if (TREE_CODE (exp) == VAR_DECL &&                          \
                    323:               DECL_NAME (exp) &&                                       \
                    324:               TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&        \
                    325:               IDENTIFIER_POINTER (DECL_NAME (exp)) &&                  \
                    326:               !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6)) \
                    327:        {                                                               \
                    328:          const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));      \
                    329:                                                                        \
                    330:          if (!strncmp (name, "_OBJC_CLASS_METHODS_", 20))              \
                    331:            objc_cls_meth_section ();                                   \
                    332:          else if (!strncmp (name, "_OBJC_INSTANCE_METHODS_", 23))      \
                    333:            objc_inst_meth_section ();                                  \
                    334:          else if (!strncmp (name, "_OBJC_CATEGORY_CLASS_METHODS_", 20)) \
                    335:            objc_cat_cls_meth_section ();                               \
                    336:          else if (!strncmp (name, "_OBJC_CATEGORY_INSTANCE_METHODS_", 23)) \
                    337:            objc_cat_inst_meth_section ();                              \
                    338:          else if (!strncmp (name, "_OBJC_CLASS_VARIABLES_", 22))       \
                    339:            objc_class_vars_section ();                                 \
                    340:          else if (!strncmp (name, "_OBJC_INSTANCE_VARIABLES_", 25))    \
                    341:            objc_instance_vars_section ();                              \
                    342:          else if (!strncmp (name, "_OBJC_CLASS_PROTOCOLS_", 22))       \
                    343:            objc_cat_cls_meth_section ();                               \
                    344:          else if (!strncmp (name, "_OBJC_CLASS_NAME_", 17))            \
                    345:            objc_class_names_section ();                                \
                    346:          else if (!strncmp (name, "_OBJC_METH_VAR_NAME_", 20))         \
                    347:            objc_meth_var_names_section ();                             \
                    348:          else if (!strncmp (name, "_OBJC_METH_VAR_TYPE_", 20))         \
                    349:            objc_meth_var_types_section ();                             \
                    350:          else if (!strncmp (name, "_OBJC_CLASS_REFERENCES", 22))       \
                    351:            objc_cls_refs_section ();                                   \
                    352:          else if (!strncmp (name, "_OBJC_CLASS_", 12))                 \
                    353:            objc_class_section ();                                      \
                    354:          else if (!strncmp (name, "_OBJC_METACLASS_", 16))             \
                    355:            objc_meta_class_section ();                                 \
                    356:          else if (!strncmp (name, "_OBJC_CATEGORY_", 15))              \
                    357:            objc_category_section ();                                   \
                    358:          else if (!strncmp (name, "_OBJC_SELECTOR_REFERENCES", 25))    \
                    359:            objc_selector_refs_section ();                              \
                    360:          else if (!strncmp (name, "_OBJC_SYMBOLS", 13))                \
                    361:            objc_symbols_section ();                                    \
                    362:          else if (!strncmp (name, "_OBJC_MODULES", 13))                \
                    363:            objc_module_info_section ();                                \
                    364:          else if (!strncmp (name, "_OBJC_PROTOCOL_INSTANCE_METHODS_", 32)) \
                    365:            objc_cat_inst_meth_section ();                              \
                    366:          else if (!strncmp (name, "_OBJC_PROTOCOL_CLASS_METHODS_", 29)) \
                    367:            objc_cat_cls_meth_section ();                               \
                    368:          else if (!strncmp (name, "_OBJC_PROTOCOL_REFS_", 20))         \
                    369:            objc_cat_cls_meth_section ();                               \
                    370:          else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))              \
                    371:            objc_protocol_section ();                                   \
                    372:          else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))         \
                    373:                && !TREE_SIDE_EFFECTS (exp))                            \
                    374:            readonly_data_section ();                                   \
                    375:          else                                                          \
                    376:            data_section ();                                            \
                    377:        }                                                               \
                    378:       else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))    \
                    379:               && !TREE_SIDE_EFFECTS (exp))                             \
                    380:        readonly_data_section ();                                       \
                    381:       else                                                             \
                    382:         data_section ();                                               \
                    383:     }                                                                  \
                    384:   while (0)
                    385: 
                    386: /* this was added to support unresolved references in the gas assembler */
                    387: #undef DECLARE_UNRESOLVED_REFERENCE
                    388: 
                    389: 
                    390: 

unix.superglobalmegacorp.com

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