summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>1999-04-30 23:07:42 +0000
committerMarc Espie <espie@cvs.openbsd.org>1999-04-30 23:07:42 +0000
commit617caab60085feb9989ac5fb2fd45d382a7fe0ac (patch)
tree70eb4218813317809d14d0c0d7de2393afc71a27
parent2a4385068fdf65e236d49492426223f84c8d2ac7 (diff)
GOT name is __GLOBAL_OFFSET_TABLE_ on i386 a.out.
gcc 2.8.1 emits _GLOBAL_OFFSET_TABLE_ instead, so gas has to take care of that... This reverts to a previous gas state, but with comments much clearer, and a real clue about what's going on.
-rw-r--r--gnu/usr.bin/gas/config/tc-i386.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/gnu/usr.bin/gas/config/tc-i386.c b/gnu/usr.bin/gas/config/tc-i386.c
index 0b3aece7640..431350284c6 100644
--- a/gnu/usr.bin/gas/config/tc-i386.c
+++ b/gnu/usr.bin/gas/config/tc-i386.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc-i386.c,v 1.5 1999/01/23 00:18:15 espie Exp $ */
+/* $OpenBSD: tc-i386.c,v 1.6 1999/04/30 23:07:41 espie Exp $ */
/* i386.c -- Assemble code for the Intel 80386
Copyright (C) 1989, 1991, 1992 Free Software Foundation.
@@ -27,7 +27,7 @@
*/
#ifndef lint
-static char rcsid[] = "$OpenBSD: tc-i386.c,v 1.5 1999/01/23 00:18:15 espie Exp $";
+static char rcsid[] = "$OpenBSD: tc-i386.c,v 1.6 1999/04/30 23:07:41 espie Exp $";
#endif
#include "as.h"
@@ -35,11 +35,8 @@ static char rcsid[] = "$OpenBSD: tc-i386.c,v 1.5 1999/01/23 00:18:15 espie Exp $
#include "obstack.h"
#include "opcode/i386.h"
-#ifdef KLUDGE
+/* real name for the assembler, translate from C _GLOBAL_OFFSET_TABLE_ */
#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
-#else
-#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
-#endif
/* one more argument for fix_new */
#ifdef PIC
@@ -2259,16 +2256,18 @@ symbolS *
char *name;
{
#ifdef PIC
-#ifdef KLUDGE
- /* HACK:
- * Sun's ld expects __GLOBAL_OFFSET_TABLE_,
- * gcc generates _GLOBAL_OFFSET_TABLE_
- * should probably fix ld - new SVR4 style??
+ /* gcc bug work-around:
+ * old versions of gcc don't heed YES_UNDERSCORES,
+ * and always generate _GLOBAL_OFFSET_TABLE_.
+ * On OpenBSD, this is a bug, as this collides with
+ * the user namespace.
+ *
+ * This code will no longer be needed once the switch to a recent
+ * egcs is complete.
*/
if (*name == '_' && *(name+1) == 'G' &&
strcmp(name, "_GLOBAL_OFFSET_TABLE_") == 0)
- return symbol_find("__GLOBAL_OFFSET_TABLE_");
-#endif
+ return symbol_find(GLOBAL_OFFSET_TABLE_NAME);
#endif
return 0;
}