#  Host: AArch64 based machine running GNU/Linux
#
#  Copyright (C) 2013 Free Software Foundation, Inc.
#  Contributed by ARM Ltd.
#
#  This file is part of GDB.
#
#  This program 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 3 of the License, or
#  (at your option) any later version.
#
#  This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.

NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o aarch64-linux-nat.o \
	proc-service.o linux-thread-db.o linux-nat.o linux-fork.o \
	linux-procfs.o linux-ptrace.o linux-osdata.o
NAT_CDEPS = $(srcdir)/proc-service.list

LOADLIBES= -ldl $(RDYNAMIC)
