1/* 2 * This file is part of ltrace. 3 * Copyright (C) 2013 Petr Machata, Red Hat Inc. 4 * Copyright (C) 1998,2004,2008 Juan Cespedes 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License as 8 * published by the Free Software Foundation; either version 2 of the 9 * License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 19 * 02110-1301 USA 20 */ 21 22#ifndef LTRACE_ARM_ARCH_H 23#define LTRACE_ARM_ARCH_H 24 25#include <libelf.h> 26 27#define ARCH_HAVE_ENABLE_BREAKPOINT 1 28#define ARCH_HAVE_DISABLE_BREAKPOINT 1 29 30#define BREAKPOINT_VALUE { 0xf0, 0x01, 0xf0, 0xe7 } 31#define BREAKPOINT_LENGTH 4 32#define THUMB_BREAKPOINT_VALUE { 0x01, 0xde } 33#define THUMB_BREAKPOINT_LENGTH 2 34#define DECR_PC_AFTER_BREAK 0 35#define ARCH_ENDIAN_LITTLE 36 37#define LT_ELFCLASS ELFCLASS32 38#define LT_ELF_MACHINE EM_ARM 39 40#define ARCH_HAVE_SW_SINGLESTEP 41#define ARCH_HAVE_FETCH_ARG 42#define ARCH_HAVE_FETCH_PACK 43#define ARCH_HAVE_SIZEOF 44#define ARCH_HAVE_ALIGNOF 45#define ARCH_HAVE_BREAKPOINT_DATA 46struct arch_breakpoint_data { 47 int thumb_mode; 48}; 49 50#define ARCH_HAVE_LTELF_DATA 51struct arch_ltelf_data { 52 Elf_Data *jmprel_data; 53}; 54 55#define ARCH_HAVE_LIBRARY_DATA 56struct arch_library_data { 57 unsigned int hardfp:1; 58}; 59 60#endif /* LTRACE_ARM_ARCH_H */ 61