X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/4698665ff54dc0dde4345e52025a67f06f233018..ee6bb6939fe507dc98986bfc23794da6110f61ef:/src/m/amdx86-64.h?ds=sidebyside diff --git a/src/m/amdx86-64.h b/src/m/amdx86-64.h index 8043ca0178..419fa13169 100644 --- a/src/m/amdx86-64.h +++ b/src/m/amdx86-64.h @@ -1,5 +1,5 @@ /* machine description file for AMD x86-64. - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -15,8 +15,8 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ /* The following line tells the configuration script what sort of @@ -97,20 +97,48 @@ Boston, MA 02111-1307, USA. */ #define PNTR_COMPARISON_TYPE unsigned long -/* On the 64 bit architecture, we can use 60 bits for addresses */ +/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ +#undef DATA_SEG_BITS -#define VALBITS 60 +#ifdef __FreeBSD__ -/* Define XINT and XUINT so that they can take arguments of type int */ -#define XINT(a) (((long) (a) << (BITS_PER_LONG - VALBITS)) >> (BITS_PER_LONG - VALBITS)) -#define XUINT(a) ((long) (a) & VALMASK) +/* The libraries for binaries native to the build host's architecture are + installed under /usr/lib in FreeBSD, and the ones that need special paths + are 32-bit compatibility libraries (installed under /usr/lib32). To build + a native binary of Emacs on FreeBSD/amd64 we can just point to /usr/lib. */ -/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ +#undef START_FILES +#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o -#define XPNTR(a) XUINT (a) +/* The duplicate -lgcc is intentional in the definition of LIB_STANDARD. + The reason is that some functions in libgcc.a call functions from libc.a, + and some libc.a functions need functions from libgcc.a. Since most + versions of ld are one-pass linkers, we need to mention -lgcc twice, + or else we risk getting unresolved externals. */ +#undef LIB_STANDARD +#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o + +#elif defined(__OpenBSD__) + +#undef START_FILES +#define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crtbegin.o +#undef LIB_STANDARD +#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o + +#else /* !__OpenBSD__ && !__FreeBSD__ */ #undef START_FILES #define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o +/* The duplicate -lgcc is intentional in the definition of LIB_STANDARD. + The reason is that some functions in libgcc.a call functions from libc.a, + and some libc.a functions need functions from libgcc.a. Since most + versions of ld are one-pass linkers, we need to mention -lgcc twice, + or else we risk getting unresolved externals. */ #undef LIB_STANDARD #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o + +#endif /* __FreeBSD__ */ + +/* arch-tag: 8a5e001d-e12e-4692-a3a6-0b15ba271c6e + (do not change this comment) */