don't add confusing source info to Jim
[fw/openocd] / src / helper / replacements.h
index 34e5daa44fd209ef4e0137c1373583146567f286..3598dd9fefa2f721ac945498d505c419018bcca2 100644 (file)
@@ -2,7 +2,7 @@
  *   Copyright (C) 2006 by Dominic Rath                                    *
  *   Dominic.Rath@gmx.de                                                   *
  *                                                                         *
- *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
+ *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
  *   oyvind.harboe@zylin.com                                               *
  *                                                                         *
  *   Copyright (C) 2008 by Spencer Oliver                                  *
 #ifndef REPLACEMENTS_H
 #define REPLACEMENTS_H
 
-#include "types.h"
-
 /* MIN,MAX macros */
 #ifndef MIN
-#define MIN(a,b) (((a)<(b))?(a):(b))
+#define MIN(a,b) (((a) < (b))?(a):(b))
 #endif
 #ifndef MAX
-#define MAX(a,b) (((a)>(b))?(a):(b))
+#define MAX(a,b) (((a) > (b))?(a):(b))
 #endif
 
 /* for systems that do not support ENOTSUP
 #define ENOTSUP 134            /* Not supported */
 #endif
 
+/* for systems that do not support O_BINARY
+ * linux being one of them */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 #ifndef HAVE_SYS_TIME_H
 
 #ifndef _TIMEVAL_DEFINED
@@ -67,7 +71,8 @@ struct timezone {
 #endif
 struct timezone;
 
-extern int gettimeofday(struct timeval *tv, struct timezone *tz);
+int gettimeofday(struct timeval *tv, struct timezone *tz);
+
 #endif
 
 #ifndef IN_REPLACEMENTS_C
@@ -107,11 +112,11 @@ void *fill_malloc(size_t size);
 
 /* GNU extensions to the C library that may be missing on some systems */
 #ifndef HAVE_STRNDUP
-extern char* strndup(const char *s, size_t n);
+char* strndup(const char *s, size_t n);
 #endif /* HAVE_STRNDUP */
 
 #ifndef HAVE_STRNLEN
-extern size_t strnlen(const char *s, size_t maxlen);
+size_t strnlen(const char *s, size_t maxlen);
 #endif /* HAVE_STRNLEN */
 
 #ifndef HAVE_USLEEP
@@ -163,7 +168,7 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time
 #endif  /* _WIN32 */
 
 /* generic socket functions for Windows and Posix */
-static __inline int write_socket( int handle, const void *buffer, unsigned int count )
+static __inline int write_socket(int handle, const void *buffer, unsigned int count)
 {
 #ifdef _WIN32
        return send(handle, buffer, count, 0);
@@ -172,7 +177,7 @@ static __inline int write_socket( int handle, const void *buffer, unsigned int c
 #endif
 }
 
-static __inline int read_socket( int handle, void *buffer, unsigned int count )
+static __inline int read_socket(int handle, void *buffer, unsigned int count)
 {
 #ifdef _WIN32
        return recv(handle, buffer, count, 0);
@@ -194,7 +199,7 @@ static __inline void socket_nonblock(int fd)
 {
 #ifdef _WIN32
        unsigned long nonblock = 1;
-       ioctlsocket(fd, FIONBIO, &nonblock );
+       ioctlsocket(fd, FIONBIO, &nonblock);
 #else
        int oldopts = fcntl(fd, F_GETFL, 0);
        fcntl(fd, F_SETFL, oldopts | O_NONBLOCK);
@@ -212,22 +217,32 @@ static __inline int socket_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set
 
 #ifndef HAVE_ELF_H
 
+#include <helper/types.h>
+
+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;
+
 typedef struct
 {
        unsigned char   e_ident[16];    /* Magic number and other info */
-       u16     e_type;                 /* Object file type */
-       u16     e_machine;              /* Architecture */
-       u32     e_version;              /* Object file version */
-       u32 e_entry;            /* Entry point virtual address */
-       u32 e_phoff;            /* Program header table file offset */
-       u32     e_shoff;                /* Section header table file offset */
-       u32     e_flags;                /* Processor-specific flags */
-       u16     e_ehsize;               /* ELF header size in bytes */
-       u16     e_phentsize;    /* Program header table entry size */
-       u16     e_phnum;                /* Program header table entry count */
-       u16     e_shentsize;    /* Section header table entry size */
-       u16     e_shnum;                /* Section header table entry count */
-       u16     e_shstrndx;             /* Section header string table index */
+       Elf32_Half      e_type;                 /* Object file type */
+       Elf32_Half      e_machine;              /* Architecture */
+       Elf32_Word      e_version;              /* Object file version */
+       Elf32_Addr      e_entry;                /* Entry point virtual address */
+       Elf32_Off       e_phoff;                /* Program header table file offset */
+       Elf32_Off       e_shoff;                /* Section header table file offset */
+       Elf32_Word      e_flags;                /* Processor-specific flags */
+       Elf32_Half      e_ehsize;               /* ELF header size in bytes */
+       Elf32_Half      e_phentsize;    /* Program header table entry size */
+       Elf32_Half      e_phnum;                /* Program header table entry count */
+       Elf32_Half      e_shentsize;    /* Section header table entry size */
+       Elf32_Half      e_shnum;                /* Section header table entry count */
+       Elf32_Half      e_shstrndx;             /* Section header string table index */
 } Elf32_Ehdr;
 
 #define        ELFMAG          "\177ELF"
@@ -243,14 +258,14 @@ typedef struct
 
 typedef struct
 {
-       u32 p_type;                     /* Segment type */
-       u32 p_offset;           /* Segment file offset */
-       u32 p_vaddr;            /* Segment virtual address */
-       u32 p_paddr;            /* Segment physical address */
-       u32 p_filesz;           /* Segment size in file */
-       u32 p_memsz;            /* Segment size in memory */
-       u32 p_flags;            /* Segment flags */
-       u32 p_align;            /* Segment alignment */
+       Elf32_Word p_type;              /* Segment type */
+       Elf32_Off p_offset;             /* Segment file offset */
+       Elf32_Addr p_vaddr;             /* Segment virtual address */
+       Elf32_Addr p_paddr;             /* Segment physical address */
+       Elf32_Size p_filesz;    /* Segment size in file */
+       Elf32_Size p_memsz;             /* Segment size in memory */
+       Elf32_Word p_flags;             /* Segment flags */
+       Elf32_Size p_align;             /* Segment alignment */
 } Elf32_Phdr;
 
 #define PT_LOAD                1               /* Loadable program segment */