#include "elf/internal.h"
#include "elf/external.h"
+/* This CAT4 hack is to avoid a problem with some strict ANSI C preprocessors.
+ The problem is, "32_" is not a valid preprocessing token, and we don't
+ want extra underscores (e.g., "elf_32_"). The XCAT2 macro will cause the
+ inner CAT macros to be evaluated first, producing still-valid pp-tokens.
+ Then the final concatenation can be done. (Sigh.) */
+#ifdef __STDC__
+#define XCAT2(a,b) CAT(a,b)
+#define CAT4(a,b,c,d) XCAT2(CAT(a,b),CAT(c,d))
+#else
+#define CAT4(a,b,c,d) a/**/b/**/c/**/d
+#endif
+
#ifndef NAME
#if ARCH_SIZE==64
-#define NAME(x,y) CAT3(x,64_,y)
+#define NAME(x,y) CAT4(x,64,_,y)
#else /* ARCH_SIZE==32 */
-#define NAME(x,y) CAT3(x,32_,y)
+#define NAME(x,y) CAT4(x,32,_,y)
#endif
#endif
unsigned int *));
extern int bfd_elf32_sizeof_headers PARAMS ((bfd *, boolean));
extern unsigned long elf_hash PARAMS ((CONST unsigned char *));
+extern boolean bfd_elf32_new_section_hook PARAMS ((bfd *, asection *));
/* If the target doesn't have reloc handling written yet: */
extern void bfd_elf32_no_info_to_howto PARAMS ((bfd *, arelent *,