diff options
author | Ken Raeburn <raeburn@cygnus> | 1993-06-15 23:29:48 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@cygnus> | 1993-06-15 23:29:48 +0000 |
commit | 638616cafba99486051fa2e5394ee2cb192547fa (patch) | |
tree | edb284747abb9e1edd6eb8604e09ce4ac08c8a10 /bfd | |
parent | bf16876816142ecb93ec2a83acdd24180a4a9ee9 (diff) | |
download | gdb-638616cafba99486051fa2e5394ee2cb192547fa.zip gdb-638616cafba99486051fa2e5394ee2cb192547fa.tar.gz gdb-638616cafba99486051fa2e5394ee2cb192547fa.tar.bz2 |
Second try at getting elfNAME macros right.
Under ANSI C, "32_" is not a valid pp-token...
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/libelf.h | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/bfd/libelf.h b/bfd/libelf.h index 39c0c20..1f5d6a4 100644 --- a/bfd/libelf.h +++ b/bfd/libelf.h @@ -25,18 +25,29 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #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 ElfNAME(X) CAT(Elf64_,X) -#define elfNAME(X) CAT(elf64_,X) +#define NAME(x,y) CAT4(x,64,_,y) #else /* ARCH_SIZE==32 */ -#define NAME(x,y) CAT3(x,32_,y) -#define ElfNAME(X) CAT(Elf32_,X) -#define elfNAME(X) CAT(elf32_,X) +#define NAME(x,y) CAT4(x,32,_,y) #endif #endif +#define ElfNAME(X) NAME(Elf,X) +#define elfNAME(X) NAME(elf,X) + typedef struct { asymbol symbol; |