/******************************************************************************
* @file ranlib.c
*****************************************************************************/
-#include <inttypes.h>
#include <limits.h>
#include <stddef.h>
#include <stdio.h>
: ((uint32_t) arr[0] | (((uint32_t) arr[1]) << 8) | (((uint32_t) arr[2]) << 16) | (((uint32_t) arr[3]) << 24)))
#define GET_ELF_UINT64(arr) \
- (endianess ? (((uint_fast64_t) arr[0]) << 56) | (((uint_fast64_t) arr[1]) << 48) | (((uint_fast64_t) arr[2]) << 40) | (((uint_fast64_t) arr[3]) >> 32) | (((uint_fast64_t) arr[4]) << 24) | (((uint_fast64_t) arr[5]) << 16) | (((uint_fast64_t) arr[6]) << 8) | (((uint_fast64_t) arr[7])) \
- : ((uint_fast64_t) arr[0]) | (((uint_fast64_t) arr[1]) << 8) | (((uint_fast64_t) arr[2]) << 16) | (((uint_fast64_t) arr[3]) << 24) | (((uint_fast64_t) arr[4]) << 32) | (((uint_fast64_t) arr[5]) << 40) | (((uint_fast64_t) arr[6]) << 48) | (((uint_fast64_t) arr[7]) << 56))
+ (endianess ? (((uint64_t) arr[0]) << 56) | (((uint64_t) arr[1]) << 48) | (((uint64_t) arr[2]) << 40) | (((uint64_t) arr[3]) >> 32) | (((uint64_t) arr[4]) << 24) | (((uint64_t) arr[5]) << 16) | (((uint64_t) arr[6]) << 8) | (((uint64_t) arr[7])) \
+ : ((uint64_t) arr[0]) | (((uint64_t) arr[1]) << 8) | (((uint64_t) arr[2]) << 16) | (((uint64_t) arr[3]) << 24) | (((uint64_t) arr[4]) << 32) | (((uint64_t) arr[5]) << 40) | (((uint64_t) arr[6]) << 48) | (((uint64_t) arr[7]) << 56))
static void elf32_get_symbols (void *object, long offset, int endianess) {
void ranlib (void) {
FILE *tfp = tmpfile ();
- long offset = 0;
struct ar_header header;
- long bytes, i, j, len, read, val;
+ long i, j, len, read, val;
unsigned char *object;
void *contents;
char temp[16];
+ long offset = 0;
+
+#if UINT_MAX == 65535
+ long bytes;
+#else
+ int bytes;
+#endif
for (;;) {
memcpy (header.group, temp, 6);
memcpy (header.mode, temp, 8);
+#if UINT_MAX == 65535
len = sprintf (temp, "%ld", bytes + 4);
- temp[len] = ' ';
+#else
+ len = sprintf (temp, "%d", bytes + 4);
+#endif
+ temp[len] = ' ';
memcpy (header.size, temp, 10);
header.endsig[0] = '`';
typedef unsigned int uint32_t;
#endif
+#if ULONG_MAX == 4294967295 && !defined (NO_LONG_LONG)
+typedef signed long long int64_t;
+typedef signed long long uint64_t;
+#else
+typedef signed long int64_t;
+typedef unsigned long uint64_t;
+#endif
+
#endif /* _STDINT_H */