From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bo Thorsen To: "Billinghurst, David (CRTS)" , gcc@gcc.gnu.org Cc: jh@suse.cz Subject: Re: bogus .quad in i386/att.h Date: Tue, 09 Oct 2001 02:49:00 -0000 Message-id: <01100911481107.00797@idefix> References: <8D00C32549556B4E977F81DBC24E985D40FFAA@crtsmail1.technol_exch.corp.riotinto.org> X-SW-Source: 2001-10/msg00579.html On Tirsdag 09 Oktober 2001 03:43, Billinghurst, David (CRTS) wrote: > and it broke cygwin bootstrap > http://gcc.gnu.org/ml/gcc-bugs/2001-10/msg00084.html > > -----Original Message----- > From: Robert Lipe [ mailto:robertlipe@usa.net ] > Sent: Tuesday, 9 October 2001 11:38 > To: gcc@gcc.gnu.org > Cc: jh@suze.cz > Subject: bogus .quad in i386/att.h > > > Jan, your commit that starts: > > Tue Oct 2 12:46:01 CEST 2001 Bo Thorsen , > Andreas Jaeger , > Jan Hubicka > > * doc/invoke.texi (i386 Options): Document x86-64 options. > (i386 and x86-64 Options): Rename i386 options section. > > > added an entry for ASM_QUAD in att.h. But the ChangeLog does not > call out any change to att.h. > > ..quad is definitely not something supported by the AT&T-derived > assemblers. Maybe it's a GAS thing and should be in gas.h. Maybe it's > an x86-64 thing and should be in x86-64.h. But att.h sure seems like > the wrong place for it. This does show up as testsuite failures. > > Can you please move this? I don't know why Jan re-introduced this, it wasn't in the last patch I sent before going on vacation. I tested x86-64 compilation without the att.h patch (which was included in the first time I sent the patch) and it seemed to work. Jan can you comment on why you added it again? Bo. Just as a reference, I'm appending the last patch I sent before being offline for the last two weeks. 2001-09-21 Bo Thorsen * config/i386/linux64.h: New spec file for Linux x86-64 support. * config.gcc: Fix tm_file settings for x86-64. * config/i386/x86-64.h: New file with OS independent x86-64 definitions. Index: config.gcc =================================================================== RCS file: /cvs/gcc/gcc/gcc/config.gcc,v retrieving revision 1.91 diff -u -r1.91 config.gcc --- config.gcc 2001/09/18 21:51:52 1.91 +++ config.gcc 2001/09/21 14:04:13 @@ -222,6 +222,9 @@ i[34567]86-*-*) cpu_type=i386 ;; +x86_64-*-*) + cpu_type=i386 + ;; hppa*-*-* | parisc*-*-*) cpu_type=pa ;; @@ -1132,6 +1135,17 @@ # aka GNU/Linux C library 6 xmake_file=x-linux tm_file="i386/i386.h i386/att.h linux.h i386/linux.h" + tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff" + extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" + gnu_ld=yes + float_format=i386 + if test x$enable_threads = xyes; then + thread_file='posix' + fi + ;; +x86_64-*-linux*) + xmake_file=x-linux + tm_file="i386/x86-64.h i386/i386.h i386/att.h linux.h i386/linux64.h" tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff" extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" gnu_ld=yes Index: config/i386/x86-64.h =================================================================== RCS file: x86-64.h diff -N x86-64.h --- /dev/null Tue May 5 13:32:27 1998 +++ x86-64.h Fri Sep 21 07:04:13 2001 @@ -0,0 +1,43 @@ +/* OS independent definitions for AMD x86-64. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Bo Thorsen . + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#define TARGET_64BIT_DEFAULT +#define NO_BUILTIN_PTRDIFF_TYPE +#define TARGET_BI_ARCH +#define NO_BUILTIN_SIZE_TYPE + +/* System V Release 4 uses DWARF debugging info. Buf DWARF1 doesn't do + 64-bit anything, so we use DWARF2. */ + +#undef DWARF2_DEBUGGING_INFO +#undef DWARF_DEBUGGING_INFO +#undef DBX_DEBUGGING_INFO +#define DWARF2_DEBUGGING_INFO +#define DBX_DEBUGGING_INFO +#define DWARF2_FRAME_INFO (TARGET_64BIT && TARGET_UNWIND_INFO) +#define DWARF2_UNWIND_INFO 1 +#define ASYNCHRONOUS_DWARF2_UNWIND_INFO (TARGET_64BIT && TARGET_UNWIND_INFO) +/* Incorrectly autodetected in cross compilation. */ +#undef HAVE_AS_DWARF2_DEBUG_LINE +#define HAVE_AS_DWARF2_DEBUG_LINE + +#undef PREFERRED_DEBUGGING_TYPE +#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG Index: config/i386/linux64.h =================================================================== RCS file: linux64.h diff -N linux64.h --- /dev/null Tue May 5 13:32:27 1998 +++ linux64.h Fri Sep 21 07:04:13 2001 @@ -0,0 +1,147 @@ +/* Definitions for AMD x86-64 running Linux-based GNU systems with ELF format. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Jan Hubicka based on linux.h. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#define LINUX_DEFAULT_ELF + +#undef QUAD_ASM_OP +#define QUAD_ASM_OP "\t.quad\t" + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (x86-64 Linux/ELF)"); + +/* The svr4 ABI for the i386 says that records and unions are returned + in memory. */ +#undef DEFAULT_PCC_STRUCT_RETURN +#define DEFAULT_PCC_STRUCT_RETURN 1 + +#undef 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 +#define DBX_REGISTER_NUMBER(n) \ + (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) + +/* Output assembler code to FILE to call the profiler. + To the best of my knowledge, no Linux libc has required the label + argument to mcount. */ + +#define NO_PROFILE_COUNTERS + +#undef FUNCTION_PROFILER +#define FUNCTION_PROFILER(FILE, LABELNO) \ +{ \ + if (flag_pic) \ + fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); \ + else \ + fprintf (FILE, "\tcall\tmcount\n"); \ +} + +#undef SIZE_TYPE +#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int") + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int") + +#undef WCHAR_TYPE +#define WCHAR_TYPE "int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 32 + +#undef CPP_PREDEFINES +#define CPP_PREDEFINES "-D__ELF__ -Dunix -Dlinux -Asystem(posix)" + +#undef CPP_SPEC +#ifdef USE_GNULIBC_1 +#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}" +#else +#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} %{!m32:-D__LONG_MAX__=9223372036854775807L}" +#endif + +#undef CC1_SPEC +#define CC1_SPEC "%(cc1_cpu) %{profile:-p}" + +/* Provide a LINK_SPEC appropriate for Linux. Here we provide support + for the special GCC options -static and -shared, which allow us to + link things in one of these three modes by applying the appropriate + combinations of options at link-time. We like to support here for + as many of the other GNU linker options as possible. But I don't + have the time to search for those flags. I am sure how to add + support for -soname shared_object_name. H.J. + + I took out %{v:%{!V:-V}}. It is too much :-(. They can use + -Wl,-V. + + When the -shared link option is used a final link is not being + done. */ + +/* If ELF is the default format, we should not use /lib/elf. */ + +#undef LINK_SPEC +#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld64.so.1}} \ + %{static:-static}}}" + +#undef ASM_SPEC +#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \ + %{Wa,*:%*} %{m32:--32}" + +/* A C statement (sans semicolon) to output to the stdio stream + FILE the assembler definition of uninitialized global DECL named + NAME whose size is SIZE bytes and alignment is ALIGN bytes. + Try to use asm_output_aligned_bss to implement this macro. */ + +#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ + asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) + +/* A C statement to output to the stdio stream FILE an assembler + command to advance the location counter to a multiple of 1<