OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [config/] [ia64/] [sysv4.h] - Blame information for rev 433

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 282 jeremybenn
/* Override definitions in elfos.h/svr4.h to be correct for IA64.
2
 
3
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
4
2007 Free Software Foundation, Inc.
5
 
6
This file is part of GCC.
7
 
8
GCC is free software; you can redistribute it and/or modify it under
9
the terms of the GNU General Public License as published by the Free
10
Software Foundation; either version 3, or (at your option) any later
11
version.
12
 
13
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14
WARRANTY; without even the implied warranty of MERCHANTABILITY or
15
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16
for more details.
17
 
18
Under Section 7 of GPL version 3, you are granted additional
19
permissions described in the GCC Runtime Library Exception, version
20
3.1, as published by the Free Software Foundation.
21
 
22
You should have received a copy of the GNU General Public License and
23
a copy of the GCC Runtime Library Exception along with this program;
24
see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
25
<http://www.gnu.org/licenses/>.  */
26
 
27
#undef TARGET_INIT_LIBFUNCS
28
#define TARGET_INIT_LIBFUNCS ia64_sysv4_init_libfuncs
29
 
30
/* We want DWARF2 as specified by the IA64 ABI.  */
31
#undef PREFERRED_DEBUGGING_TYPE
32
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
33
 
34
/* Stabs does not work properly for 64-bit targets.  */
35
#undef DBX_DEBUGGING_INFO
36
 
37
/* Various pseudo-ops for which the Intel assembler uses non-standard
38
   definitions.  */
39
 
40
#undef STRING_ASM_OP
41
#define STRING_ASM_OP "\tstringz\t"
42
 
43
#undef SKIP_ASM_OP
44
#define SKIP_ASM_OP "\t.skip\t"
45
 
46
#undef COMMON_ASM_OP
47
#define COMMON_ASM_OP "\t.common\t"
48
 
49
#undef ASCII_DATA_ASM_OP
50
#define ASCII_DATA_ASM_OP "\tstring\t"
51
 
52
/* ia64-specific options for gas
53
   ??? ia64 gas doesn't accept standard svr4 assembler options?  */
54
#undef ASM_SPEC
55
#define ASM_SPEC "-x %{mconstant-gp} %{mauto-pic} %(asm_extra)"
56
 
57
/* ??? Unfortunately, .lcomm doesn't work, because it puts things in either
58
   .bss or .sbss, and we can't control the decision of which is used.  When
59
   I use .lcomm, I get a cryptic "Section group has no member" error from
60
   the Intel simulator.  So we must explicitly put variables in .bss
61
   instead.  This matters only if we care about the Intel assembler.  */
62
 
63
/* This is asm_output_aligned_bss from varasm.c without the
64
   (*targetm.asm_out.globalize_label) call at the beginning.  */
65
 
66
/* This is for final.c, because it is used by ASM_DECLARE_OBJECT_NAME.  */
67
extern int size_directive_output;
68
 
69
#undef ASM_OUTPUT_ALIGNED_LOCAL
70
#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \
71
do {                                                                    \
72
  if ((DECL) && sdata_symbolic_operand (XEXP (DECL_RTL (DECL), 0), Pmode)) \
73
    switch_to_section (sbss_section);                                   \
74
  else                                                                  \
75
    switch_to_section (bss_section);                                    \
76
  ASM_OUTPUT_ALIGN (FILE, floor_log2 ((ALIGN) / BITS_PER_UNIT));        \
77
  ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL);                           \
78
  ASM_OUTPUT_SKIP (FILE, SIZE ? SIZE : 1);                              \
79
} while (0)
80
 
81
/* The # tells the Intel assembler that this is not a register name.
82
   However, we can't emit the # in a label definition, so we set a variable
83
   in ASM_OUTPUT_LABEL to control whether we want the postfix here or not.
84
   We append the # to the label name, but since NAME can be an expression
85
   we have to scan it for a non-label character and insert the # there.  */
86
 
87
#undef ASM_OUTPUT_LABELREF
88
#define ASM_OUTPUT_LABELREF(STREAM, NAME)       \
89
do {                                            \
90
  const char *name_ = NAME;                     \
91
  if (*name_ == '*')                            \
92
    name_++;                                    \
93
  else                                          \
94
    fputs (user_label_prefix, STREAM);          \
95
  fputs (name_, STREAM);                        \
96
  if (!ia64_asm_output_label)                   \
97
    fputc ('#', STREAM);                        \
98
} while (0)
99
 
100
/* Intel assembler requires both flags and type if declaring a non-predefined
101
   section.  */
102
#undef INIT_SECTION_ASM_OP
103
#define INIT_SECTION_ASM_OP     "\t.section\t.init,\"ax\",\"progbits\""
104
#undef FINI_SECTION_ASM_OP
105
#define FINI_SECTION_ASM_OP     "\t.section\t.fini,\"ax\",\"progbits\""
106
 
107
/* svr4.h undefines this, so we need to define it here.  */
108
#define DBX_REGISTER_NUMBER(REGNO) \
109
  ia64_dbx_register_number(REGNO)
110
 
111
/* Things that svr4.h defines to the wrong type, because it assumes 32-bit
112
   ints and 32-bit longs.  */
113
 
114
#undef SIZE_TYPE
115
#define SIZE_TYPE "long unsigned int"
116
 
117
#undef PTRDIFF_TYPE
118
#define PTRDIFF_TYPE "long int"
119
 
120
#undef WCHAR_TYPE
121
#define WCHAR_TYPE "int"
122
 
123
#undef WCHAR_TYPE_SIZE
124
#define WCHAR_TYPE_SIZE 32
125
 
126
/* We redefine this to use the ia64 .proc pseudo-op.  */
127
 
128
#undef ASM_DECLARE_FUNCTION_NAME
129
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
130
do {                                                                    \
131
  fputs ("\t.proc ", FILE);                                             \
132
  assemble_name (FILE, NAME);                                           \
133
  fputc ('\n', FILE);                                                   \
134
  ASM_OUTPUT_LABEL (FILE, NAME);                                        \
135
} while (0)
136
 
137
/* We redefine this to use the ia64 .endp pseudo-op.  */
138
 
139
#undef ASM_DECLARE_FUNCTION_SIZE
140
#define ASM_DECLARE_FUNCTION_SIZE(FILE, NAME, DECL) \
141
do {                                                                    \
142
  fputs ("\t.endp ", FILE);                                             \
143
  assemble_name (FILE, NAME);                                           \
144
  fputc ('\n', FILE);                                                   \
145
} while (0)
146
 
147
/* Override default elf definition.  */
148
#undef  TARGET_ASM_RELOC_RW_MASK
149
#define TARGET_ASM_RELOC_RW_MASK  ia64_reloc_rw_mask
150
#undef  TARGET_ASM_SELECT_RTX_SECTION
151
#define TARGET_ASM_SELECT_RTX_SECTION  ia64_select_rtx_section
152
 
153
#define SDATA_SECTION_ASM_OP "\t.sdata"
154
#define SBSS_SECTION_ASM_OP "\t.sbss"

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.