configure.in (HAVE_AS_GOTOFF_IN_DATA): New x86 check.
* configure.in (HAVE_AS_GOTOFF_IN_DATA): New x86 check. * configure, config.in: Rebuild. * config/i386/i386.c (ix86_output_addr_vec_elt): New. (ix86_output_addr_diff_elt): New. * config/i386/i386.h (ASM_OUTPUT_ADDR_VEC_ELT): Use them. (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. (JUMP_TABLES_IN_TEXT_SECTION): New. * config/i386/i386.md (tablejump): Handle HAVE_AS_GOTOFF_IN_DATA. * config/i386/i386-protos.h: Update. * config/i386/386bsd.h, config/i386/beos-elf.h, config/i386/freebsd-aout.h, config/i386/freebsd.h, config/i386/i386-interix.h, config/i386/i386elf.h, config/i386/linux.h, config/i386/netbsd-elf.h, config/i386/netbsd.h, config/i386/openbsd.h, config/i386/ptx4-i.h, config/i386/rtemself.h, config/i386/sco5.h, config/i386/sysv4.h, config/i386/x86-64.h (ASM_OUTPUT_ADDR_DIFF_ELT, JUMP_TABLES_IN_TEXT_SECTION): Remove. From-SVN: r46303
This commit is contained in:
parent
b5823a4422
commit
f88c65f7e3
23 changed files with 140 additions and 214 deletions
|
@ -1,3 +1,25 @@
|
||||||
|
2001-10-16 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* configure.in (HAVE_AS_GOTOFF_IN_DATA): New x86 check.
|
||||||
|
* configure, config.in: Rebuild.
|
||||||
|
|
||||||
|
* config/i386/i386.c (ix86_output_addr_vec_elt): New.
|
||||||
|
(ix86_output_addr_diff_elt): New.
|
||||||
|
* config/i386/i386.h (ASM_OUTPUT_ADDR_VEC_ELT): Use them.
|
||||||
|
(ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
|
||||||
|
(JUMP_TABLES_IN_TEXT_SECTION): New.
|
||||||
|
* config/i386/i386.md (tablejump): Handle HAVE_AS_GOTOFF_IN_DATA.
|
||||||
|
* config/i386/i386-protos.h: Update.
|
||||||
|
|
||||||
|
* config/i386/386bsd.h, config/i386/beos-elf.h,
|
||||||
|
config/i386/freebsd-aout.h, config/i386/freebsd.h,
|
||||||
|
config/i386/i386-interix.h, config/i386/i386elf.h,
|
||||||
|
config/i386/linux.h, config/i386/netbsd-elf.h,
|
||||||
|
config/i386/netbsd.h, config/i386/openbsd.h,
|
||||||
|
config/i386/ptx4-i.h, config/i386/rtemself.h,
|
||||||
|
config/i386/sco5.h, config/i386/sysv4.h, config/i386/x86-64.h
|
||||||
|
(ASM_OUTPUT_ADDR_DIFF_ELT, JUMP_TABLES_IN_TEXT_SECTION): Remove.
|
||||||
|
|
||||||
2001-10-16 Florian Weimer <fw@deneb.enyo.de>
|
2001-10-16 Florian Weimer <fw@deneb.enyo.de>
|
||||||
|
|
||||||
* stmt.c (expand_asm_operands): Update commentary.
|
* stmt.c (expand_asm_operands): Update commentary.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* config.in. Generated automatically from configure.in by autoheader 2.13. */
|
/* config.in. Generated automatically from configure.in by autoheader. */
|
||||||
|
|
||||||
/* Define if using alloca.c. */
|
/* Define if using alloca.c. */
|
||||||
#undef C_ALLOCA
|
#undef C_ALLOCA
|
||||||
|
@ -552,6 +552,9 @@
|
||||||
/* Define if your assembler supports offsetable %lo(). */
|
/* Define if your assembler supports offsetable %lo(). */
|
||||||
#undef HAVE_AS_OFFSETABLE_LO10
|
#undef HAVE_AS_OFFSETABLE_LO10
|
||||||
|
|
||||||
|
/* Define true if the assembler supports '.long foo@GOTOFF'. */
|
||||||
|
#undef HAVE_AS_GOTOFF_IN_DATA
|
||||||
|
|
||||||
/* Define if your assembler supports dwarf2 .file/.loc directives,
|
/* Define if your assembler supports dwarf2 .file/.loc directives,
|
||||||
and preserves file table indicies exactly as given. */
|
and preserves file table indicies exactly as given. */
|
||||||
#undef HAVE_AS_DWARF2_DEBUG_LINE
|
#undef HAVE_AS_DWARF2_DEBUG_LINE
|
||||||
|
|
|
@ -47,22 +47,6 @@
|
||||||
|
|
||||||
#undef ASM_APP_OFF
|
#undef ASM_APP_OFF
|
||||||
#define ASM_APP_OFF "#NO_APP\n"
|
#define ASM_APP_OFF "#NO_APP\n"
|
||||||
|
|
||||||
/* The following macros are stolen from i386v4.h */
|
|
||||||
/* These have to be defined to get PIC code correct */
|
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
||||||
|
|
||||||
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
||||||
we want to retain compatibility with older gcc versions. */
|
we want to retain compatibility with older gcc versions. */
|
||||||
|
|
|
@ -37,17 +37,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
#undef ASM_COMMENT_START
|
#undef ASM_COMMENT_START
|
||||||
#define ASM_COMMENT_START " #"
|
#define ASM_COMMENT_START " #"
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
#undef DBX_REGISTER_NUMBER
|
#undef DBX_REGISTER_NUMBER
|
||||||
#define DBX_REGISTER_NUMBER(n) \
|
#define DBX_REGISTER_NUMBER(n) \
|
||||||
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
||||||
|
|
|
@ -76,22 +76,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
/* FreeBSD using a.out does not support DWARF2 unwinding mechanisms. */
|
/* FreeBSD using a.out does not support DWARF2 unwinding mechanisms. */
|
||||||
#define DWARF2_UNWIND_INFO 0
|
#define DWARF2_UNWIND_INFO 0
|
||||||
|
|
||||||
/* The following macros are stolen from i386v4.h */
|
|
||||||
/* These have to be defined to get PIC code correct */
|
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
||||||
|
|
||||||
/* Don't default to pcc-struct-return, because in FreeBSD we prefer the
|
/* Don't default to pcc-struct-return, because in FreeBSD we prefer the
|
||||||
superior nature of the older gcc way. */
|
superior nature of the older gcc way. */
|
||||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||||
|
|
|
@ -38,17 +38,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
#undef SET_ASM_OP
|
#undef SET_ASM_OP
|
||||||
#define SET_ASM_OP "\t.set\t"
|
#define SET_ASM_OP "\t.set\t"
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf ((FILE), "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
#undef DBX_REGISTER_NUMBER
|
#undef DBX_REGISTER_NUMBER
|
||||||
#define DBX_REGISTER_NUMBER(n) \
|
#define DBX_REGISTER_NUMBER(n) \
|
||||||
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
||||||
|
|
|
@ -227,21 +227,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs.
|
|
||||||
PE format differs on what PC-relative offsets look like (see
|
|
||||||
coff_i386_rtype_to_howto), and we need to compensate (by one word) here. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long __GLOBAL_OFFSET_TABLE_+[.-%s%d+4]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
||||||
|
|
||||||
/* Emit code to check the stack when allocating more that 4000
|
/* Emit code to check the stack when allocating more that 4000
|
||||||
bytes in one go. */
|
bytes in one go. */
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,9 @@ extern void ix86_expand_epilogue PARAMS ((int));
|
||||||
extern void ix86_output_function_block_profiler PARAMS ((FILE *, int));
|
extern void ix86_output_function_block_profiler PARAMS ((FILE *, int));
|
||||||
extern void ix86_output_block_profiler PARAMS ((FILE *, int));
|
extern void ix86_output_block_profiler PARAMS ((FILE *, int));
|
||||||
|
|
||||||
|
extern void ix86_output_addr_vec_elt PARAMS ((FILE *, int));
|
||||||
|
extern void ix86_output_addr_diff_elt PARAMS ((FILE *, int, int));
|
||||||
|
|
||||||
#ifdef RTX_CODE
|
#ifdef RTX_CODE
|
||||||
extern int ix86_aligned_p PARAMS ((rtx));
|
extern int ix86_aligned_p PARAMS ((rtx));
|
||||||
|
|
||||||
|
@ -94,6 +97,7 @@ extern void print_operand PARAMS ((FILE*, rtx, int));
|
||||||
extern void print_operand_address PARAMS ((FILE*, rtx));
|
extern void print_operand_address PARAMS ((FILE*, rtx));
|
||||||
|
|
||||||
extern void split_di PARAMS ((rtx[], int, rtx[], rtx[]));
|
extern void split_di PARAMS ((rtx[], int, rtx[], rtx[]));
|
||||||
|
extern void split_ti PARAMS ((rtx[], int, rtx[], rtx[]));
|
||||||
|
|
||||||
extern const char *output_387_binary_op PARAMS ((rtx, rtx*));
|
extern const char *output_387_binary_op PARAMS ((rtx, rtx*));
|
||||||
extern const char *output_fix_trunc PARAMS ((rtx, rtx*));
|
extern const char *output_fix_trunc PARAMS ((rtx, rtx*));
|
||||||
|
|
|
@ -6659,6 +6659,40 @@ ix86_output_block_profiler (file, blockno)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ix86_output_addr_vec_elt (file, value)
|
||||||
|
FILE *file;
|
||||||
|
int value;
|
||||||
|
{
|
||||||
|
const char *directive = ASM_LONG;
|
||||||
|
|
||||||
|
if (TARGET_64BIT)
|
||||||
|
{
|
||||||
|
#ifdef ASM_QUAD
|
||||||
|
directive = ASM_QUAD;
|
||||||
|
#else
|
||||||
|
abort ();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (file, "%s%s%d\n", directive, LPREFIX, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ix86_output_addr_diff_elt (file, value, rel)
|
||||||
|
FILE *file;
|
||||||
|
int value, rel;
|
||||||
|
{
|
||||||
|
if (TARGET_64BIT)
|
||||||
|
fprintf (file, "%s%s%d-.+4+(.-%s%d)\n",
|
||||||
|
ASM_LONG, LPREFIX, value, LPREFIX, rel);
|
||||||
|
else if (HAVE_AS_GOTOFF_IN_DATA)
|
||||||
|
fprintf (file, "%s%s%d@GOTOFF\n", ASM_LONG, LPREFIX, value);
|
||||||
|
else
|
||||||
|
asm_fprintf (file, "%s%U_GLOBAL_OFFSET_TABLE_+[.-%s%d]\n",
|
||||||
|
ASM_LONG, LPREFIX, value);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ix86_expand_move (mode, operands)
|
ix86_expand_move (mode, operands)
|
||||||
|
|
|
@ -2979,19 +2979,21 @@ do { long l; \
|
||||||
#define ASM_OUTPUT_REG_POP(FILE,REGNO) \
|
#define ASM_OUTPUT_REG_POP(FILE,REGNO) \
|
||||||
asm_fprintf (FILE, "\tpop{l}\t%%e%s\n", reg_names[REGNO])
|
asm_fprintf (FILE, "\tpop{l}\t%%e%s\n", reg_names[REGNO])
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is absolute.
|
/* This is how to output an element of a case-vector that is absolute. */
|
||||||
*/
|
|
||||||
|
|
||||||
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
|
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
|
||||||
fprintf (FILE, "%s%s%d\n", TARGET_64BIT ? ASM_QUAD : ASM_LONG, LPREFIX, VALUE)
|
ix86_output_addr_vec_elt (FILE, VALUE)
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
/* This is how to output an element of a case-vector that is relative. */
|
||||||
We don't use these on the 386 yet, because the ATT assembler can't do
|
|
||||||
forward reference the differences.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
||||||
fprintf (FILE, "%s%s%d-%s%d\n",ASM_LONG, LPREFIX, VALUE, LPREFIX, REL)
|
ix86_output_addr_diff_elt (FILE, VALUE, REL)
|
||||||
|
|
||||||
|
/* Under some conditions we need jump tables in the text section, because
|
||||||
|
the assembler cannot handle label differences between sections. */
|
||||||
|
|
||||||
|
#define JUMP_TABLES_IN_TEXT_SECTION \
|
||||||
|
(!TARGET_64BIT && flag_pic && !HAVE_AS_GOTOFF_IN_DATA)
|
||||||
|
|
||||||
/* A C statement that outputs an address constant appropriate to
|
/* A C statement that outputs an address constant appropriate to
|
||||||
for DWARF debugging. */
|
for DWARF debugging. */
|
||||||
|
|
|
@ -13123,6 +13123,13 @@
|
||||||
gen_rtx_LABEL_REF (Pmode, operands[1]),
|
gen_rtx_LABEL_REF (Pmode, operands[1]),
|
||||||
NULL_RTX, 0,
|
NULL_RTX, 0,
|
||||||
OPTAB_DIRECT);
|
OPTAB_DIRECT);
|
||||||
|
else if (HAVE_AS_GOTOFF_IN_DATA)
|
||||||
|
{
|
||||||
|
operands[0] = expand_simple_binop (Pmode, PLUS, operands[0],
|
||||||
|
pic_offset_table_rtx, NULL_RTX,
|
||||||
|
1, OPTAB_DIRECT);
|
||||||
|
current_function_uses_pic_offset_table = 1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
operands[0] = expand_simple_binop (Pmode, MINUS, pic_offset_table_rtx,
|
operands[0] = expand_simple_binop (Pmode, MINUS, pic_offset_table_rtx,
|
||||||
|
|
|
@ -156,19 +156,6 @@ do { long value[3]; \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
||||||
|
|
||||||
#define LOCAL_LABEL_PREFIX "."
|
#define LOCAL_LABEL_PREFIX "."
|
||||||
|
|
||||||
/* Switch into a generic section. */
|
/* Switch into a generic section. */
|
||||||
|
|
|
@ -43,17 +43,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
#undef ASM_COMMENT_START
|
#undef ASM_COMMENT_START
|
||||||
#define ASM_COMMENT_START "#"
|
#define ASM_COMMENT_START "#"
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
#undef DBX_REGISTER_NUMBER
|
#undef DBX_REGISTER_NUMBER
|
||||||
#define DBX_REGISTER_NUMBER(n) \
|
#define DBX_REGISTER_NUMBER(n) \
|
||||||
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
||||||
|
|
|
@ -168,16 +168,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf ((FILE), "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We always use gas here, so we don't worry about ECOFF assembler problems.
|
* We always use gas here, so we don't worry about ECOFF assembler problems.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -35,22 +35,6 @@
|
||||||
|
|
||||||
#undef ASM_APP_OFF
|
#undef ASM_APP_OFF
|
||||||
#define ASM_APP_OFF "#NO_APP\n"
|
#define ASM_APP_OFF "#NO_APP\n"
|
||||||
|
|
||||||
/* The following macros are stolen from i386v4.h */
|
|
||||||
/* These have to be defined to get PIC code correct */
|
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
||||||
|
|
||||||
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
||||||
we want to retain compatibility with older gcc versions. */
|
we want to retain compatibility with older gcc versions. */
|
||||||
|
|
|
@ -59,24 +59,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
#undef ASM_APP_OFF
|
#undef ASM_APP_OFF
|
||||||
#define ASM_APP_OFF "#NO_APP\n"
|
#define ASM_APP_OFF "#NO_APP\n"
|
||||||
|
|
||||||
/* The following macros were originally stolen from i386v4.h.
|
|
||||||
These have to be defined to get PIC code correct. */
|
|
||||||
|
|
||||||
/* Assembler format: dispatch tables. */
|
|
||||||
|
|
||||||
/* How to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Assembler format: sections. */
|
|
||||||
|
|
||||||
/* Indicate when jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
/* Stack & calling: aggregate returns. */
|
/* Stack & calling: aggregate returns. */
|
||||||
|
|
||||||
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
||||||
|
|
|
@ -150,16 +150,3 @@ do { long value[3]; \
|
||||||
fprintf ((FILE), "\n"); \
|
fprintf ((FILE), "\n"); \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
||||||
|
|
|
@ -38,17 +38,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||||
#define DEFAULT_PCC_STRUCT_RETURN 1
|
#define DEFAULT_PCC_STRUCT_RETURN 1
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
#undef DBX_REGISTER_NUMBER
|
#undef DBX_REGISTER_NUMBER
|
||||||
#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
|
#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
|
||||||
|
|
||||||
|
|
|
@ -237,15 +237,6 @@ do { \
|
||||||
sprintf (LABEL, ".%s%d", (PREFIX), (NUM)); \
|
sprintf (LABEL, ".%s%d", (PREFIX), (NUM)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
do { \
|
|
||||||
if (TARGET_ELF) \
|
|
||||||
fprintf (FILE, "%s_GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", ASM_LONG, LPREFIX, VALUE); \
|
|
||||||
else \
|
|
||||||
fprintf (FILE, "%s%s%d-%s%d\n", ASM_LONG, LPREFIX,VALUE,LPREFIX,REL); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ALIGNED_COMMON
|
#undef ASM_OUTPUT_ALIGNED_COMMON
|
||||||
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
|
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
|
||||||
do { \
|
do { \
|
||||||
|
@ -533,9 +524,6 @@ init_section () \
|
||||||
((TARGET_ELF) ? 0 : \
|
((TARGET_ELF) ? 0 : \
|
||||||
(current_function_calls_setjmp || current_function_calls_longjmp))
|
(current_function_calls_setjmp || current_function_calls_longjmp))
|
||||||
|
|
||||||
#undef JUMP_TABLES_IN_TEXT_SECTION
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (TARGET_ELF && flag_pic)
|
|
||||||
|
|
||||||
#undef LOCAL_LABEL_PREFIX
|
#undef LOCAL_LABEL_PREFIX
|
||||||
#define LOCAL_LABEL_PREFIX \
|
#define LOCAL_LABEL_PREFIX \
|
||||||
((TARGET_ELF) ? "" : ".")
|
((TARGET_ELF) ? "" : ".")
|
||||||
|
|
|
@ -159,19 +159,6 @@ do { long value[3]; \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
|
||||||
|
|
||||||
/* A C statement (sans semicolon) to output to the stdio stream
|
/* A C statement (sans semicolon) to output to the stdio stream
|
||||||
FILE the assembler definition of uninitialized global DECL named
|
FILE the assembler definition of uninitialized global DECL named
|
||||||
NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
||||||
|
|
|
@ -27,20 +27,6 @@ Boston, MA 02111-1307, USA. */
|
||||||
#undef ASM_COMMENT_START
|
#undef ASM_COMMENT_START
|
||||||
#define ASM_COMMENT_START "#"
|
#define ASM_COMMENT_START "#"
|
||||||
|
|
||||||
/* This is how to output an element of a case-vector that is relative.
|
|
||||||
This is only used for PIC code. See comments by the `casesi' insn in
|
|
||||||
i386.md for an explanation of the expression this outputs. */
|
|
||||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
|
||||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
|
||||||
if (TARGET_64BIT) \
|
|
||||||
fprintf (FILE, "\t.long %s%d-.+4+(.-%s%d)\n", LPREFIX, VALUE, LPREFIX, REL); \
|
|
||||||
else \
|
|
||||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
|
||||||
|
|
||||||
/* Indicate that jump tables go in the text section. This is
|
|
||||||
necessary when compiling PIC code. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic && !TARGET_64BIT)
|
|
||||||
|
|
||||||
#undef DBX_REGISTER_NUMBER
|
#undef DBX_REGISTER_NUMBER
|
||||||
#define DBX_REGISTER_NUMBER(n) \
|
#define DBX_REGISTER_NUMBER(n) \
|
||||||
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
||||||
|
|
34
gcc/configure
vendored
34
gcc/configure
vendored
|
@ -2057,7 +2057,7 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Find some useful tools
|
# Find some useful tools
|
||||||
for ac_prog in mawk gawk nawk awk
|
for ac_prog in gawk mawk nawk awk
|
||||||
do
|
do
|
||||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
set dummy $ac_prog; ac_word=$2
|
set dummy $ac_prog; ac_word=$2
|
||||||
|
@ -7487,11 +7487,39 @@ EOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
echo "$ac_t""$gcc_cv_as_instructions" 1>&6
|
echo "$ac_t""$gcc_cv_as_instructions" 1>&6
|
||||||
|
|
||||||
|
echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6
|
||||||
|
echo "configure:7493: checking assembler GOTOFF in data directives" >&5
|
||||||
|
gcc_cv_as_gotoff_in_data=no
|
||||||
|
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
|
||||||
|
then
|
||||||
|
if test "$gcc_cv_gas_major_version" -eq 2 \
|
||||||
|
-a "$gcc_cv_gas_minor_version" -ge 11 \
|
||||||
|
-o "$gcc_cv_gas_major_version" -gt 2; then
|
||||||
|
gcc_cv_as_gotoff_in_data=yes
|
||||||
|
fi
|
||||||
|
elif test x$gcc_cv_as != x; then
|
||||||
|
cat > conftest.s <<EOF
|
||||||
|
.text
|
||||||
|
.L0:
|
||||||
|
nop
|
||||||
|
.data
|
||||||
|
.long .L0@GOTOFF
|
||||||
|
EOF
|
||||||
|
if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
|
||||||
|
gcc_cv_as_gotoff_in_data=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
cat >> confdefs.h <<EOF
|
||||||
|
#define HAVE_AS_GOTOFF_IN_DATA `if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "$ac_t""$gcc_cv_as_gotoff_in_data" 1>&6
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
|
echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
|
||||||
echo "configure:7495: checking assembler dwarf2 debug_line support" >&5
|
echo "configure:7523: checking assembler dwarf2 debug_line support" >&5
|
||||||
gcc_cv_as_dwarf2_debug_line=no
|
gcc_cv_as_dwarf2_debug_line=no
|
||||||
# ??? Not all targets support dwarf2 debug_line, even within a version
|
# ??? Not all targets support dwarf2 debug_line, even within a version
|
||||||
# of gas. Moreover, we need to emit a valid instruction to trigger any
|
# of gas. Moreover, we need to emit a valid instruction to trigger any
|
||||||
|
@ -7683,7 +7711,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
|
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
|
||||||
echo "configure:7687: checking whether to enable maintainer-specific portions of Makefiles" >&5
|
echo "configure:7715: checking whether to enable maintainer-specific portions of Makefiles" >&5
|
||||||
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
|
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
|
||||||
if test "${enable_maintainer_mode+set}" = set; then
|
if test "${enable_maintainer_mode+set}" = set; then
|
||||||
enableval="$enable_maintainer_mode"
|
enableval="$enable_maintainer_mode"
|
||||||
|
|
|
@ -1631,6 +1631,32 @@ changequote([,])dnl
|
||||||
AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
|
AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT($gcc_cv_as_instructions)
|
AC_MSG_RESULT($gcc_cv_as_instructions)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(assembler GOTOFF in data directives)
|
||||||
|
gcc_cv_as_gotoff_in_data=no
|
||||||
|
if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
|
||||||
|
then
|
||||||
|
if test "$gcc_cv_gas_major_version" -eq 2 \
|
||||||
|
-a "$gcc_cv_gas_minor_version" -ge 11 \
|
||||||
|
-o "$gcc_cv_gas_major_version" -gt 2; then
|
||||||
|
gcc_cv_as_gotoff_in_data=yes
|
||||||
|
fi
|
||||||
|
elif test x$gcc_cv_as != x; then
|
||||||
|
cat > conftest.s <<EOF
|
||||||
|
.text
|
||||||
|
.L0:
|
||||||
|
nop
|
||||||
|
.data
|
||||||
|
.long .L0@GOTOFF
|
||||||
|
EOF
|
||||||
|
if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
|
||||||
|
gcc_cv_as_gotoff_in_data=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
|
||||||
|
[`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
|
||||||
|
[Define true if the assembler supports '.long foo@GOTOFF'.])
|
||||||
|
AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue