X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fhelper%2Freplacements.h;h=4d70d9cf30bb347597fae57f258c44bf93db02dd;hb=5765a0ce14485aadc6b74c6e2b4f15b73df14603;hp=0fe93b26d30dbf5e08d1ca83ea1d56a3ef30988d;hpb=08d4411b59dd8bd0e7d8009003b71d23acbf6eee;p=fw%2Fopenocd
diff --git a/src/helper/replacements.h b/src/helper/replacements.h
index 0fe93b26d..4d70d9cf3 100644
--- a/src/helper/replacements.h
+++ b/src/helper/replacements.h
@@ -19,13 +19,14 @@
* 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, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
+ * along with this program. If not, see . *
***************************************************************************/
-#ifndef REPLACEMENTS_H
-#define REPLACEMENTS_H
+#ifndef OPENOCD_HELPER_REPLACEMENTS_H
+#define OPENOCD_HELPER_REPLACEMENTS_H
+
+#include
+#include
/* MIN,MAX macros */
#ifndef MIN
@@ -135,7 +136,6 @@ static inline unsigned usleep(unsigned int usecs)
/* Windows specific */
#ifdef _WIN32
-#define WIN32_LEAN_AND_MEAN
#include
#include
@@ -202,6 +202,17 @@ static inline int close_socket(int sock)
#endif
}
+static inline void socket_block(int fd)
+{
+#ifdef _WIN32
+ unsigned long nonblock = 0;
+ ioctlsocket(fd, FIONBIO, &nonblock);
+#else
+ int oldopts = fcntl(fd, F_GETFL, 0);
+ fcntl(fd, F_SETFL, oldopts & ~O_NONBLOCK);
+#endif
+}
+
static inline void socket_nonblock(int fd)
{
#ifdef _WIN32
@@ -231,13 +242,13 @@ static inline int socket_select(int max_fd,
typedef uint32_t Elf32_Addr;
typedef uint16_t Elf32_Half;
typedef uint32_t Elf32_Off;
-typedef int32_t Elf32_Sword;
typedef uint32_t Elf32_Word;
typedef uint32_t Elf32_Size;
-typedef Elf32_Off Elf32_Hashelt;
+
+#define EI_NIDENT 16
typedef struct {
- unsigned char e_ident[16]; /* Magic number and other info */
+ unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */
Elf32_Half e_type; /* Object file type */
Elf32_Half e_machine; /* Architecture */
Elf32_Word e_version; /* Object file version */
@@ -279,4 +290,42 @@ typedef struct {
#endif /* HAVE_ELF_H */
-#endif /* REPLACEMENTS_H */
+#ifndef HAVE_ELF64
+
+typedef uint64_t Elf64_Addr;
+typedef uint16_t Elf64_Half;
+typedef uint64_t Elf64_Off;
+typedef uint32_t Elf64_Word;
+typedef uint64_t Elf64_Xword;
+
+typedef struct {
+ unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */
+ Elf64_Half e_type; /* Object file type */
+ Elf64_Half e_machine; /* Architecture */
+ Elf64_Word e_version; /* Object file version */
+ Elf64_Addr e_entry; /* Entry point virtual address */
+ Elf64_Off e_phoff; /* Program header table file offset */
+ Elf64_Off e_shoff; /* Section header table file offset */
+ Elf64_Word e_flags; /* Processor-specific flags */
+ Elf64_Half e_ehsize; /* ELF header size in bytes */
+ Elf64_Half e_phentsize; /* Program header table entry size */
+ Elf64_Half e_phnum; /* Program header table entry count */
+ Elf64_Half e_shentsize; /* Section header table entry size */
+ Elf64_Half e_shnum; /* Section header table entry count */
+ Elf64_Half e_shstrndx; /* Section header string table index */
+} Elf64_Ehdr;
+
+typedef struct {
+ Elf64_Word p_type; /* Segment type */
+ Elf64_Word p_flags; /* Segment flags */
+ Elf64_Off p_offset; /* Segment file offset */
+ Elf64_Addr p_vaddr; /* Segment virtual address */
+ Elf64_Addr p_paddr; /* Segment physical address */
+ Elf64_Xword p_filesz; /* Segment size in file */
+ Elf64_Xword p_memsz; /* Segment size in memory */
+ Elf64_Xword p_align; /* Segment alignment */
+} Elf64_Phdr;
+
+#endif /* HAVE_ELF64 */
+
+#endif /* OPENOCD_HELPER_REPLACEMENTS_H */