diff options
author | culot <culot@FreeBSD.org> | 2011-09-13 01:16:58 +0800 |
---|---|---|
committer | culot <culot@FreeBSD.org> | 2011-09-13 01:16:58 +0800 |
commit | eb67aa55cc8d6bdd99b2ed365b7367060f91f354 (patch) | |
tree | c87d39540d48a6aaa95abbd48dfbd00da47247f9 /lang | |
parent | 1088d00fd0c42696290fd4722bcfff9f437ff5f3 (diff) | |
download | freebsd-ports-graphics-eb67aa55cc8d6bdd99b2ed365b7367060f91f354.tar.gz freebsd-ports-graphics-eb67aa55cc8d6bdd99b2ed365b7367060f91f354.tar.zst freebsd-ports-graphics-eb67aa55cc8d6bdd99b2ed365b7367060f91f354.zip |
- Add patches to implement run-time symbolic traceback support
(without it programs requiring this traceback fail to link)
- Bump PORTREVISION
PR: ports/160616
Submitted by: John Marino <draco@marino.st> (maintainer)
Diffstat (limited to 'lang')
-rw-r--r-- | lang/gnat-aux/Makefile | 35 | ||||
-rw-r--r-- | lang/gnat-aux/files/patch-gcc__ada__adaint.c | 279 | ||||
-rw-r--r-- | lang/gnat-aux/files/patch-gcc__ada__g-trasym-bsd.adb | 153 | ||||
-rw-r--r-- | lang/gnat-aux/files/patch-gcc__ada__gccint__Makefile.in | 101 |
4 files changed, 551 insertions, 17 deletions
diff --git a/lang/gnat-aux/Makefile b/lang/gnat-aux/Makefile index 099c3de49a6..5622be829ed 100644 --- a/lang/gnat-aux/Makefile +++ b/lang/gnat-aux/Makefile @@ -7,6 +7,7 @@ PORTNAME= gnat-aux PORTVERSION= ${SNAPSHOT} +PORTREVISION= 1 CATEGORIES= lang MASTER_SITES= http://downloads.dragonlace.net/src/ \ http://dragonlace.mirrors.ada.cx/src/ @@ -64,12 +65,12 @@ BOOTSTRAP_COMPILER= gnat-bootstrap.i386.freebsd.tar.bz2 PLIST_SUB= GNU_HOST=${BLD_TARGET} PLIST_SUB+= GCC_VER=${GCC_BRANCH}.${GCC_POINT} -WRKSRC= ${WRKDIR}/build -GCC_WRKSRC= ${WRKDIR}/gcc-${GCC_BRANCH}-${SNAPSHOT} +WRKSRC= ${WRKDIR}/gcc-${GCC_BRANCH}-${SNAPSHOT} +BUILDDIR= ${WRKDIR}/build +CFG_SCRIPT= ${WRKSRC}/configure +REVFILE= ${WRKSRC}/gcc/REVISION BOOTSTRAP_PREFIX= ${WRKDIR}/bootstrap PKG_PREFIX= ${PREFIX} -CONFIGURE_SCRIPT= ${GCC_WRKSRC}/configure -REVFILE= ${GCC_WRKSRC}/gcc/REVISION LPATH= lib/gcc/${BLD_TARGET}/${GCC_BRANCH}.${GCC_POINT} LEPATH= libexec/gcc/${BLD_TARGET}/${GCC_BRANCH}.${GCC_POINT} MAN1= gnatcpp.1 gnatgcc.1 gnatgcov.1 @@ -141,7 +142,7 @@ ADA_CONFIGURE_ENV= CC=${FULL_GNATGCC} ADA_CONFIGURE_ENV+= PATH=${FULL_PATH} ADA_CONFIGURE_ENV+= CONFIG_SHELL=${SH} ADA_MAKE_ENV= PATH=${FULL_PATH} -ADA_MAKE_ENV+= LD_LIBRARY_PATH=${WRKSRC}/gcc +ADA_MAKE_ENV+= LD_LIBRARY_PATH=${BUILDDIR}/gcc # The standard configuration options CONFIGURE_ARGS= --enable-languages=${LANGS:Q} @@ -186,32 +187,32 @@ post-extract: do-configure: #reset timestamps - cd ${GCC_WRKSRC}; contrib/gcc_update --touch - ${RM} -f ${GCC_WRKSRC}/gcc/*/*.info* - ${TOUCH} ${GCC_WRKSRC}/gcc/cstamp-h.in + cd ${WRKSRC}; contrib/gcc_update --touch + ${RM} -f ${WRKSRC}/gcc/*/*.info* + ${TOUCH} ${WRKSRC}/gcc/cstamp-h.in - ${MKDIR} ${WRKSRC} - cd ${WRKSRC} && ${SETENV} ${ADA_CONFIGURE_ENV} \ - ${SH} ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS} + ${MKDIR} ${BUILDDIR} + cd ${BUILDDIR} && ${SETENV} ${ADA_CONFIGURE_ENV} \ + ${CFG_SCRIPT} ${CONFIGURE_ARGS} do-build: - cd ${WRKSRC} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} all + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} ${_MAKE_JOBS} all test: build .if defined(WITH_TS_ADA) - cd ${WRKSRC} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} -sk check-ada + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} -sk check-ada .endif .if defined(WITH_TS_CXX) - cd ${WRKSRC} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} -sk check-c++ - cd ${WRKSRC} && ${SETENV} ${ADA_MAKE_ENV} \ + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} -sk check-c++ + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ ${GMAKE} -sk check-target-libstdc++-v3 .endif .if defined(WITH_TS_GCC) - cd ${WRKSRC} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} -sk check-c + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} -sk check-c .endif do-install: - cd ${WRKSRC} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} install-strip DESTDIR=${DESTDIR} + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} ${GMAKE} install-strip DESTDIR=${DESTDIR} post-install: ${RM} -f ${WRKDIR}/PLIST.lib diff --git a/lang/gnat-aux/files/patch-gcc__ada__adaint.c b/lang/gnat-aux/files/patch-gcc__ada__adaint.c new file mode 100644 index 00000000000..3e3b787e5de --- /dev/null +++ b/lang/gnat-aux/files/patch-gcc__ada__adaint.c @@ -0,0 +1,279 @@ +--- gcc/ada/adaint.c ++++ gcc/ada/adaint.c +@@ -1201,6 +1201,47 @@ __gnat_tmp_name (char *tmp_filename) + free (pname); + } + ++#elif defined (__ANDROID__) ++ ++ /* ++ * ext2 /ext3/ext4/fat16/fat32 have no path limits ++ * /data/local/tmp normally requires rooted devices, if it even exists ++ * /sdcard is the standard location for external storage. Nativeactivity ++ * manifest needs to authorize its use, otherwise it might not have the ++ * proper permissions. ++ */ ++ ++ int testfd; ++ char *datadir = getenv ("ANDROID_DATA"); ++ ++ if (datadir == NULL) ++ strcpy (tmp_filename, "/data/local/tmp/gnat-XXXXXX"); ++ else ++ sprintf (tmp_filename, "%s/local/tmp/gnat-XXXXXX", datadir); ++ ++ testfd = mkstemp (tmp_filename); ++ if (testfd != -1) ++ { ++ close (testfd); ++ return; ++ } ++ ++ char *sdcard = getenv ("EXTERNAL_STORAGE"); ++ ++ if (sdcard == NULL) ++ strcpy (tmp_filename, "/sdcard/gnat-XXXXXX"); ++ else ++ sprintf (tmp_filename, "%s/gnat-XXXXXX", sdcard); ++ ++ testfd = mkstemp (tmp_filename); ++ if (testfd != -1) ++ { ++ close (testfd); ++ return; ++ } ++ ++ tmpnam (tmp_filename); ++ + #elif defined (linux) || defined (__FreeBSD__) || defined (__NetBSD__) \ + || defined (__DragonFly__) \ + || defined (__OpenBSD__) || defined(__GLIBC__) +@@ -3433,26 +3474,208 @@ _flush_cache() + } + #endif + +-#if defined (IS_CROSS) \ +- || (! ((defined (sparc) || defined (i386)) && defined (sun) \ +- && defined (__SVR4)) \ +- && ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \ +- && ! (defined (linux) && defined (__ia64__)) \ +- && ! (defined (linux) && defined (powerpc)) \ +- && ! defined (__FreeBSD__) \ +- && ! defined (__DragonFly__) \ +- && ! defined (__Lynx__) \ +- && ! defined (__hpux__) \ +- && ! defined (__APPLE__) \ +- && ! defined (_AIX) \ +- && ! (defined (__alpha__) && defined (__osf__)) \ +- && ! defined (VMS) \ +- && ! defined (__MINGW32__) \ +- && ! (defined (__mips) && defined (__sgi))) +- +-/* Dummy function to satisfy g-trasym.o. See the preprocessor conditional +- just above for a list of native platforms that provide a non-dummy +- version of this procedure in libaddr2line.a. */ ++/* run-time symbolic traceback support */ ++#if defined (__DragonFly__) \ ++ || defined (__FreeBSD__) \ ++ || defined (__OpenBSD__) \ ++ || defined (__NetBSD__) ++ ++/* The above platforms use the external program /usr/bin/addr2line */ ++#define EXTERNAL_SYMTRACE ++ ++#elif defined (VMS) \ ++ || defined (_AIX) \ ++ || defined (__Lynx__) \ ++ || defined (__hpux__) \ ++ || defined (__APPLE__) \ ++ || defined (__MINGW32__) \ ++ || (defined (__mips) && defined (__sgi)) \ ++ || (defined (__alpha__) && defined (__osf__)) \ ++ || (defined (linux) && defined (i386)) \ ++ || (defined (linux) && defined (powerpc)) \ ++ || (defined (linux) && defined (__ia64__)) \ ++ || (defined (linux) && defined (__x86_64__)) \ ++ || (defined (__SVR4) && defined (sun) && defined (i386)) \ ++ || (defined (__SVR4) && defined (sun) && defined (sparc)) ++ ++/* The above platforms use the system library libaddr2line.a */ ++#define NATIVE_SYMTRACE ++#endif ++ ++#if defined (EXTERNAL_SYMTRACE) && !defined (IS_CROSS) ++ ++/* ++ Copyright (C) 1999 by Juergen Pfeifer <juergen.pfeifer@gmx.net> ++ Ada for Linux Team (ALT) ++ Heavily modified by John Marino <http://www.dragonlace.net> ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++ copy of this software and associated documentation files (the ++ "Software"), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, distribute with modifications, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, ++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ++ THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++ Except as contained in this notice, the name(s) of the above copyright ++ holders shall not be used in advertising or otherwise to promote the ++ sale, use or other dealings in this Software without prior written ++ authorization. ++*/ ++ ++#include <sys/types.h> ++#include <stdlib.h> ++#include <unistd.h> ++#include <string.h> ++#include <signal.h> ++ ++#define CLOSE_SENDPIPE close(sendpipe[0]); close(sendpipe[1]) ++#define CLOSE_READPIPE close(readpipe[0]); close(readpipe[1]) ++#define DUP2CLOSE(oldfd, newfd) dup2(oldfd, newfd); close(oldfd); ++#define RESTSIG sigaction(SIGPIPE,&oact,NULL) ++ ++#define MAX_LINE 1024 ++#define PARENT_READ readpipe[0] ++#define CHILD_WRITE readpipe[1] ++#define CHILD_READ sendpipe[0] ++#define PARENT_WRITE sendpipe[1] ++ ++void ++convert_addresses (const char *file_name, ++ void *addrs, ++ int n_addr, ++ void *buf, ++ int *len) ++{ ++ int max_len = *len; ++ pid_t childpid; ++ ++ struct sigaction act, oact; ++ ++ int sendpipe[2] = {-1,-1}, /* parent -> child */ ++ readpipe[2] = {-1,-1}; /* parent <- child */ ++ ++ *len = 0; ++ act.sa_handler = SIG_IGN; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = 0; ++ if (sigaction(SIGPIPE,&act,&oact) < 0) ++ return; ++ ++ if (pipe(sendpipe) < 0) { RESTSIG; return; } ++ if (pipe(readpipe) < 0) { CLOSE_SENDPIPE; RESTSIG; return; } ++ if ((childpid = fork()) < 0) { ++ CLOSE_READPIPE; ++ CLOSE_SENDPIPE; ++ RESTSIG; ++ return; ++ } ++ ++ if (childpid == 0) { /* child process */ ++ close(PARENT_WRITE); ++ close(PARENT_READ); ++ if ((CHILD_READ != STDIN_FILENO) && (CHILD_WRITE != STDOUT_FILENO)) { ++ if ((CHILD_READ == STDOUT_FILENO) && (CHILD_WRITE == STDIN_FILENO)) { ++ const int temp_fd = dup(CHILD_WRITE); ++ close (CHILD_WRITE); ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ DUP2CLOSE (temp_fd, STDOUT_FILENO); ++ } ++ else if ((CHILD_READ == STDIN_FILENO) && (CHILD_WRITE > 1)) { ++ DUP2CLOSE (CHILD_WRITE, STDOUT_FILENO); ++ } ++ else if ((CHILD_READ > 1) && (CHILD_WRITE == STDOUT_FILENO)) { ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ } ++ else if ((CHILD_READ > 1) && (CHILD_WRITE == STDIN_FILENO)) { ++ DUP2CLOSE (CHILD_WRITE, STDOUT_FILENO); ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ } ++ else { ++ /* CHILD_READ >= 1 and CHILD_WRITE > 1 */ ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ DUP2CLOSE (CHILD_WRITE, STDOUT_FILENO); ++ } ++ } ++ /* As pointed out by Florian Weimer to JP, it is a security threat to call ++ the script with a user defined environment and using the path. That ++ would be Trojans pleasure. Therefore the absolute path to addr2line ++ and an empty environment is used. That should be safe. ++ */ ++ char *const argv[] = { "addr2line", ++ "-e", file_name, ++ "--demangle=gnat", ++ "--functions", ++ "--basenames", ++ NULL }; ++ char *const envp[] = { NULL }; ++ if (execve("/usr/bin/addr2line", argv, envp) < 0) { ++ close (CHILD_WRITE); ++ close (CHILD_READ); ++ RESTSIG; ++ exit (1); ++ } ++ } ++ ++ /* Below this line is parent process */ ++ int i, n; ++ char hex[16]; ++ char line[MAX_LINE + 1]; ++ char *p; ++ char *s = buf; ++ long *trace_address = addrs; ++ ++ close(CHILD_WRITE); ++ close(CHILD_READ); ++ ++ for(i=0; i < n_addr; i++) { ++ snprintf(hex,sizeof(hex),"%#lx\n",*trace_address); ++ write(PARENT_WRITE,hex,strlen(hex)); ++ n = read(PARENT_READ,line,MAX_LINE); ++ if (n<=0) ++ break; ++ ++ line[n]=0; ++ /* We have approx. 16 additional chars for "%#lx in " clause. ++ We use this info to prevent a buffer overrun. */ ++ if (n + 16 + (*len) > max_len) ++ break; ++ ++ p = strchr(line,'\n'); ++ if (p) { ++ if (*(p+1)) { ++ *p = 0; ++ *len += snprintf(s, (max_len - (*len)), "%#lx in %s at %s", ++ *trace_address, line, p+1); ++ } ++ else { ++ *len += snprintf(s, (max_len - (*len)), "%#lx at %s", ++ *trace_address, line); ++ } ++ s = buf + (*len); ++ } ++ trace_address += 1; ++ } ++ close (PARENT_WRITE); ++ close (PARENT_READ); ++ RESTSIG; ++} ++ ++#elif defined (IS_CROSS) || !defined (NATIVE_SYMTRACE) ++ ++/* run-time symbolic traceback support ++ Dummy function to satisfy g-trasym.o. */ + + void + convert_addresses (const char *file_name ATTRIBUTE_UNUSED, diff --git a/lang/gnat-aux/files/patch-gcc__ada__g-trasym-bsd.adb b/lang/gnat-aux/files/patch-gcc__ada__g-trasym-bsd.adb new file mode 100644 index 00000000000..1aea17fcd9c --- /dev/null +++ b/lang/gnat-aux/files/patch-gcc__ada__g-trasym-bsd.adb @@ -0,0 +1,153 @@ +--- /dev/null 2011-09-08 20:00:00.000000000 -0500 ++++ gcc/ada/g-trasym-bsd.adb 2011-09-08 18:27:45.000000000 -0500 +@@ -0,0 +1,150 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- G N A T . T R A C E B A C K . S Y M B O L I C -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 1999-2009, AdaCore -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT 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 distributed with GNAT; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- Run-time symbolic traceback support ++-- This file is based on the work by Juergen Pfiefer which is still used ++-- today to provide symbolic traceback support for gnu/kFreeBSD. ++-- Incorporated in GNAT-AUX by John Marino <http://www.dragonlace.net> ++ ++with System.Soft_Links; ++with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; ++ ++package body GNAT.Traceback.Symbolic is ++ ++ package TSL renames System.Soft_Links; ++ ++ -- To perform the raw addresses to symbolic form translation we rely on a ++ -- libaddr2line symbolizer which examines debug info from a provided ++ -- executable file name, and an absolute path is needed to ensure the file ++ -- is always found. This is "__gnat_locate_exec_on_path (gnat_argv [0])" ++ -- for our executable file, a fairly heavy operation so we cache the ++ -- result. ++ ++ Exename : System.Address; ++ -- Pointer to the name of the executable file to be used on all ++ -- invocations of the libaddr2line symbolization service. ++ ++ Exename_Resolved : Boolean := False; ++ -- Flag to indicate whether we have performed the executable file name ++ -- resolution already. Relying on a not null Exename for this purpose ++ -- would be potentially inefficient as this is what we will get if the ++ -- resolution attempt fails. ++ ++ ------------------------ ++ -- Symbolic_Traceback -- ++ ------------------------ ++ ++ function Symbolic_Traceback (Traceback : Tracebacks_Array) return String is ++ ++ procedure convert_addresses ++ (filename : System.Address; ++ addrs : System.Address; ++ n_addrs : Integer; ++ buf : System.Address; ++ len : System.Address); ++ pragma Import (C, convert_addresses, "convert_addresses"); ++ -- This is the procedure version of the Ada-aware addr2line. It places ++ -- in BUF a string representing the symbolic translation of the N_ADDRS ++ -- raw addresses provided in ADDRS, looked up in debug information from ++ -- FILENAME. LEN points to an integer which contains the size of the ++ -- BUF buffer at input and the result length at output. ++ -- ++ -- Note that this procedure is *not* thread-safe. ++ ++ type Argv_Array is array (0 .. 0) of System.Address; ++ gnat_argv : access Argv_Array; ++ pragma Import (C, gnat_argv, "gnat_argv"); ++ ++ function locate_exec_on_path ++ (c_exename : System.Address) return System.Address; ++ pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); ++ ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); ++ ++ use type System.Address; ++ ++ begin ++ -- The symbolic translation of an empty set of addresses is an empty ++ -- string. ++ ++ if Traceback'Length = 0 then ++ return ""; ++ end if; ++ ++ -- If our input set of raw addresses is not empty, resort to the ++ -- libaddr2line service to symbolize it all. ++ ++ -- Compute, cache and provide the absolute path to our executable file ++ -- name as the binary file where the relevant debug information is to be ++ -- found. If the executable file name resolution fails, we have no ++ -- sensible basis to invoke the symbolizer at all. ++ ++ -- Protect all this against concurrent accesses explicitly, as the ++ -- underlying services are potentially thread unsafe. ++ ++ TSL.Lock_Task.all; ++ ++ if not Exename_Resolved then ++ Exename := locate_exec_on_path (gnat_argv (0)); ++ Exename_Resolved := True; ++ end if; ++ ++ if Exename /= System.Null_Address then ++ Len := Res'Length; ++ convert_addresses ++ (Exename, Traceback'Address, Traceback'Length, ++ Res (1)'Address, Len'Address); ++ end if; ++ ++ TSL.Unlock_Task.all; ++ ++ -- Return what the addr2line symbolizer has produced if we have called ++ -- it (the executable name resolution succeeded), or an empty string ++ -- otherwise. ++ ++ if Exename /= System.Null_Address then ++ return Res (1 .. Len); ++ else ++ return ""; ++ end if; ++ ++ end Symbolic_Traceback; ++ ++ function Symbolic_Traceback (E : Exception_Occurrence) return String is ++ begin ++ return Symbolic_Traceback (Tracebacks (E)); ++ end Symbolic_Traceback; ++ ++end GNAT.Traceback.Symbolic; diff --git a/lang/gnat-aux/files/patch-gcc__ada__gccint__Makefile.in b/lang/gnat-aux/files/patch-gcc__ada__gccint__Makefile.in new file mode 100644 index 00000000000..8a4b0193e32 --- /dev/null +++ b/lang/gnat-aux/files/patch-gcc__ada__gccint__Makefile.in @@ -0,0 +1,101 @@ +--- gcc/ada/gcc-interface/Makefile.in.orig 2011-09-08 19:57:28.000000000 -0500 ++++ gcc/ada/gcc-interface/Makefile.in 2011-09-08 18:35:48.000000000 -0500 +@@ -1184,6 +1184,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-bsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-freebsd.adb \ +@@ -1219,6 +1220,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-bsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-freebsd.adb \ +@@ -1253,6 +1255,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-bsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-dragonfly.adb \ +@@ -1288,6 +1291,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-bsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-dragonfly.adb \ +@@ -1322,6 +1326,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-bsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-openbsd.adb \ +@@ -1357,6 +1362,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-bsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-openbsd.adb \ +@@ -1391,6 +1397,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-netbsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-netbsd.adb \ +@@ -1435,6 +1442,7 @@ + a-numaux.ads<a-numaux-x86.ads \ + g-bytswa.adb<g-bytswa-x86.adb \ + g-socthi.adb<g-socthi-netbsd.adb \ ++ g-trasym.adb<g-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-osinte.adb<s-osinte-netbsd.adb \ +@@ -1472,11 +1480,13 @@ + ifeq ($(strip $(filter-out arm% android eabi,$(targ))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<a-intnam-linux.ads \ ++ g-trasym.ads<g-trasym-unimplemented.ads \ ++ g-trasym.adb<g-trasym-unimplemented.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-linux.ads<s-linux.ads \ + s-osinte.adb<s-osinte-posix.adb \ +- s-osinte.ads<s-osinte-linux.ads \ ++ s-osinte.ads<s-osinte-android.ads \ + s-osprim.adb<s-osprim-posix.adb \ + s-taprop.adb<s-taprop-linux.adb \ + s-tasinf.ads<s-tasinf-linux.ads \ +@@ -1496,12 +1506,14 @@ + mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \ + indepsw.adb<indepsw-gnu.adb + +- EXTRA_GNATRTL_TASKING_OBJS=s-linux.o ++ EXTRA_LIBGNAT_SRCS+= signal_android.c ++ EXTRA_LIBGNAT_OBJS+= signal_android.o ++ EXTRA_GNATRTL_TASKING_OBJS= s-linux.o + EH_MECHANISM= +- THREADSLIB = -lpthread +- GNATLIB_SHARED = gnatlib-shared-dual +- GMEM_LIB = gmemlib +- LIBRARY_VERSION := $(LIB_VERSION) ++ THREADSLIB= ++ GNATLIB_SHARED= gnatlib-shared-dual ++ GMEM_LIB= gmemlib ++ LIBRARY_VERSION:= $(LIB_VERSION) + endif + + |