/* LLVM LOCAL file */
/* Stub functions for Ada language routines that are referenced
   from the back-end.
   Copyright (C) 2008 Free Software Foundation, Inc.

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
version.

GCC 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 GCC; see the file COPYING.  If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.  */

/* Needed when building with GNAT GPL 2006.  */
char system__restrictions__run_time_restrictions[1024] __attribute__ ((weak));

/* Needed when building with GNAT GPL 2007 on x86-64.  */
int __gl_leap_seconds_support __attribute__ ((weak));
