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 46 struct arch_breakpoint_data { 47 int thumb_mode; 48 }; 49 50 #define ARCH_HAVE_LTELF_DATA 51 struct arch_ltelf_data { 52 Elf_Data *jmprel_data; 53 }; 54 55 #define ARCH_HAVE_LIBRARY_DATA 56 struct arch_library_data { 57 unsigned int hardfp:1; 58 }; 59 60 #endif /* LTRACE_ARM_ARCH_H */ 61