#define __LINUX_COMPILER_H
#endif
+/* Pull in things like __attribute_used__ */
+#include <sys/cdefs.h>
+
/* --- this is added to integrate linuxthreads */
#define __USE_UNIX98 1
" mov pc, r6\n" \
);
-#define DL_BOOT(X) static __attribute__ ((unused)) void* _dl_boot2 (X)
+#define DL_BOOT(X) static __attribute_used__ void* _dl_boot2 (X)
/* Get a pointer to the argv array. On many platforms this can be just
" jsr $r9\n" \
);
-#define DL_BOOT(X) static void __attribute__ ((unused)) _dl_boot2 (X)
+#define DL_BOOT(X) static void __attribute_used__ _dl_boot2 (X)
/* Get a pointer to the argv array. On many platforms this can be just
Copyright (C) 2003 Red Hat, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
Lots of code copied from ../i386/elfinterp.c, so:
- Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
+ Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
David Engel, Hongjiu Lu and Mitch D'Souza
Copyright (C) 2001-2002, Erik Andersen
All rights reserved.
the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
USA. */
-#ifndef ATTRIBUTE_UNUSED
-# define ATTRIBUTE_UNUSED __attribute__((__unused__))
-#endif
+#include <sys/cdefs.h> /* __attribute_used__ */
#if defined (__SUPPORT_LD_DEBUG__)
static const char *_dl_reltypes_tab[] =
static int
_dl_do_lazy_reloc (struct elf_resolve *tpnt,
- struct dyn_elf *scope ATTRIBUTE_UNUSED,
- ELF_RELOC *rpnt, Elf32_Sym *symtab ATTRIBUTE_UNUSED,
- char *strtab ATTRIBUTE_UNUSED)
+ struct dyn_elf *scope __attribute_used__,
+ ELF_RELOC *rpnt, Elf32_Sym *symtab __attribute_used__,
+ char *strtab __attribute_used__)
{
int reloc_type;
struct funcdesc_value volatile *reloc_addr;
void
_dl_parse_lazy_relocation_information
(struct dyn_elf *rpnt, unsigned long rel_addr, unsigned long rel_size,
- int type ATTRIBUTE_UNUSED)
+ int type __attribute_used__)
{
_dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, _dl_do_lazy_reloc);
}
int
_dl_parse_relocation_information
(struct dyn_elf *rpnt, unsigned long rel_addr, unsigned long rel_size,
- int type ATTRIBUTE_UNUSED)
+ int type __attribute_used__)
{
/* The interpreter initial self-relocation is complete, and we
can't re-apply relocations. */
int
_dl_parse_copy_information
-(struct dyn_elf *rpnt ATTRIBUTE_UNUSED,
- unsigned long rel_addr ATTRIBUTE_UNUSED,
- unsigned long rel_size ATTRIBUTE_UNUSED,
- int type ATTRIBUTE_UNUSED)
+(struct dyn_elf *rpnt __attribute_used__,
+ unsigned long rel_addr __attribute_used__,
+ unsigned long rel_size __attribute_used__,
+ int type __attribute_used__)
{
return 0;
}
*/
/* For x86 we do not need any special setup so go right to _dl_boot() */
-#define DL_BOOT(X) __attribute__ ((unused)) void _dl_boot (X)
+#define DL_BOOT(X) __attribute_used__ void _dl_boot (X)
/* Get a pointer to the argv array. On many platforms this can be just
* the address if the first argument, on other platforms we need to
*/
/* For m68k we do not need any special setup so go right to _dl_boot() */
-#define DL_BOOT(X) __attribute__ ((unused)) void _dl_boot (X)
+#define DL_BOOT(X) __attribute_used__ void _dl_boot (X)
/* Get a pointer to the argv array. On many platforms this can be just
* the address if the first argument, on other platforms we need to
" jr $25\n" \
);
-#define DL_BOOT(X) static void __attribute__ ((unused)) _dl_boot2 (X)
+#define DL_BOOT(X) static void __attribute_used__ _dl_boot2 (X)
/*
* Get a pointer to the argv array. On many platforms this can be just
".previous\n" \
);
-#define DL_BOOT(X) static void __attribute__ ((unused)) _dl_boot2(X)
+#define DL_BOOT(X) static void __attribute_used__ _dl_boot2(X)
/*
* Get a pointer to the argv array. On many platforms this can be just
" .previous\n" \
);
-#define DL_BOOT(X) static void __attribute__ ((unused)) _dl_boot2 (X)
+#define DL_BOOT(X) static void __attribute_used__ _dl_boot2 (X)
/*
* Get a pointer to the argv array. On many platforms this can be just
" blink tr0, r18 ! call _dl_boot2 - user EP is in r2\n" \
);
-#define DL_BOOT(X) static void __attribute__ ((unused)) _dl_boot2 (X)
+#define DL_BOOT(X) static void __attribute_used__ _dl_boot2 (X)
/*
* Get a pointer to the argv array. On many platforms this can be just
* can be done.
*/
-#define DL_BOOT(X) __attribute__ ((unused)) void _dl_boot (X)
+#define DL_BOOT(X) __attribute_used__ void _dl_boot (X)
/*
}
-static void __attribute__ ((unused))
+static void __attribute_used__
free_mem (void)
{
free (buf);
static inline int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
register int result, tmp;
}
static inline void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
register int result;
}
static inline long
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
long int ret;
static inline int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
int tmp1;
}
static inline void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
int tmp1;
}
static inline int
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
int result, tmp;
#warning stub atomicity functions are not really atomic
static inline int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
int result = *mem;
}
static inline void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
*mem += val;
}
static inline int
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
if (*p != oldval)
static inline uint32_t
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, uint32_t val)
{
register uint32_t result;
}
static inline void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
__asm__ __volatile__ ("lock; addl %1,%0"
}
static inline char
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
char ret;
__inline_mathcodeNP (tan, __x, \
register long double __value; \
- register long double __value2 __attribute__ ((__unused__)); \
+ register long double __value2 __attribute_used__; \
__asm __volatile__ \
("fptan" \
: "=t" (__value2), "=u" (__value) : "0" (__x)); \
static inline int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
register int result = *mem;
}
static inline void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
/* XXX Use cas here as well? */
}
static inline int
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
char ret;
#include <inttypes.h>
static inline int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
int result, tmp;
}
static inline void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
int result;
}
static inline int
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
long int ret, temp;
#endif
static __ATOMICITY_INLINE int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
int tmp, result;
}
static __ATOMICITY_INLINE void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
int tmp;
}
static __ATOMICITY_INLINE int
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
int result;
}
static __ATOMICITY_INLINE long int
-__attribute__ ((unused))
+__attribute_used__
always_swap (volatile long int *p, long int newval)
{
long int result;
}
static __ATOMICITY_INLINE int
-__attribute__ ((unused))
+__attribute_used__
test_and_set (volatile long int *p, long int newval)
{
int result;
#define mcount_internal __mcount_internal
#define _MCOUNT_DECL(frompc, selfpc) \
-static void __attribute__((unused)) mcount_internal (u_long frompc, u_long selfpc)
+static void __attribute_used__ mcount_internal (u_long frompc, u_long selfpc)
/*
* This mcount implementation expect the 'frompc' return address on
#include <inttypes.h>
static int
-__attribute__ ((unused))
+__attribute_used__
exchange_and_add (volatile uint32_t *mem, int val)
{
static unsigned char lock;
}
static void
-__attribute__ ((unused))
+__attribute_used__
atomic_add (volatile uint32_t *mem, int val)
{
static unsigned char lock;
}
static int
-__attribute__ ((unused))
+__attribute_used__
compare_and_swap (volatile long int *p, long int oldval, long int newval)
{
static unsigned char lock;
td_err_e
-td_thr_tls_get_addr (const td_thrhandle_t *th __attribute__ ((unused)),
- void *map_address __attribute__ ((unused)),
- size_t offset __attribute__ ((unused)),
- void **address __attribute__ ((unused)))
+td_thr_tls_get_addr (const td_thrhandle_t *th __attribute_used__,
+ void *map_address __attribute_used__,
+ size_t offset __attribute_used__,
+ void **address __attribute_used__)
{
#if USE_TLS
size_t modid;