X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fmips-tfile.c;h=87b278ab4d6d016ae64a508e5ab857cfcb2a7252;hb=6a167a57b73f180e3bdb2482a43db877c73f3084;hp=3d998f4e571e0942f60599fe0010176d248bd543;hpb=478d10e064010c26b53bf64215d39b87ff94bf3e;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/mips-tfile.c b/gcc/mips-tfile.c index 3d998f4e571..87b278ab4d6 100644 --- a/gcc/mips-tfile.c +++ b/gcc/mips-tfile.c @@ -3,14 +3,14 @@ in the form of comments (the mips assembler does not support assembly access to debug information). Copyright (C) 1991, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Contributed by Michael Meissner (meissner@cygnus.com). This file is part of GCC. GCC 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 +Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY @@ -19,9 +19,8 @@ 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 GCC; see the file COPYING. If not, write to the Free -Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. */ +along with GCC; see the file COPYING3. If not see +. */ /* Here is a brief description of the MIPS ECOFF symbol table. The @@ -57,7 +56,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA The auxiliary table is a series of 32 bit integers, that are referenced as needed from the local symbol table. Unlike standard - COFF, the aux. information does not follow the symbol that uses + COFF, the aux. information does not follow the symbol that uses it, but rather is a separate table. In theory, this would allow the MIPS compilers to collapse duplicate aux. entries, but I've not noticed this happening with the 1.31 compiler suite. The different @@ -667,11 +666,11 @@ main (void) #include -#ifndef CROSS_COMPILE +#ifndef CROSS_DIRECTORY_STRUCTURE #include #else #include "mips/a.out.h" -#endif /* CROSS_COMPILE */ +#endif /* CROSS_DIRECTORY_STRUCTURE */ #include "gstab.h" @@ -2352,15 +2351,28 @@ add_procedure (const char *func_start, /* 1st byte of func name */ STATIC void initialize_init_file (void) { + union { + unsigned char c[4]; + int i; + } endian_test; + memset (&init_file, 0, sizeof (init_file)); init_file.fdr.lang = langC; init_file.fdr.fMerge = 1; init_file.fdr.glevel = GLEVEL_2; -#ifdef WORDS_BIG_ENDIAN - init_file.fdr.fBigendian = 1; -#endif + /* mips-tfile doesn't attempt to perform byte swapping and always writes + out integers in its native ordering. For cross-compilers, this need + not be the same as either the host or the target. The simplest thing + to do is skip the configury and perform an introspective test. */ + /* ??? Despite the name, mips-tfile is currently only used on alpha/Tru64 + and would/may require significant work to be used in cross-compiler + configurations, so we could simply admit defeat and hard code this as + little-endian, i.e. init_file.fdr.fBigendian = 0. */ + endian_test.i = 1; + if (endian_test.c[3]) + init_file.fdr.fBigendian = 1; INITIALIZE_VARRAY (&init_file.strings, char); INITIALIZE_VARRAY (&init_file.symbols, SYMR); @@ -4363,7 +4375,7 @@ copy_object (void) /* Read in each of the sections if they exist in the object file. - We read things in in the order the mips assembler creates the + We read things in the order the mips assembler creates the sections, so in theory no extra seeks are done. For simplicity sake, round each read up to a page boundary, @@ -4457,7 +4469,7 @@ copy_object (void) (in case there are duplicate filenames, we collapse them into one file section, the MIPS assembler may or may not collapse them). */ - remap_file_number = alloca (sizeof (int) * orig_sym_hdr.ifdMax); + remap_file_number = (int *) alloca (sizeof (int) * orig_sym_hdr.ifdMax); for (fd = delete_ifd; fd < orig_sym_hdr.ifdMax; fd++) { @@ -4766,8 +4778,8 @@ main (int argc, char **argv) if (version) { - printf (_("mips-tfile (GCC) %s\n"), version_string); - fputs ("Copyright (C) 2006 Free Software Foundation, Inc.\n", stdout); + printf (_("mips-tfile %s%s\n"), pkgversion_string, version_string); + fputs ("Copyright (C) 2008 Free Software Foundation, Inc.\n", stdout); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), stdout);