This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
Remove NO_UNDERSCORES and HAVE_WEAK_SYMBOLS for ARM
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: libc-ports at sourceware dot org
- Date: Sun, 8 Jan 2012 13:04:53 +0000 (UTC)
- Subject: Remove NO_UNDERSCORES and HAVE_WEAK_SYMBOLS for ARM
libc no longer defines the NO_UNDERSCORES or HAVE_WEAK_SYMBOLS macros;
only the case where those macros were defined needs to be kept. I've
applied this patch to remove the macros for ARM. (I think more of this
code may in fact be dead; something to look at later.)
Other targets should similarly have NO_UNDERSCORES removed.
diff --git a/ChangeLog.arm b/ChangeLog.arm
index dd88d9e..377439a 100644
--- a/ChangeLog.arm
+++ b/ChangeLog.arm
@@ -1,5 +1,12 @@
2012-01-08 Joseph Myers <joseph@codesourcery.com>
+ * sysdeps/arm/sysdep.h: Don't test or define NO_UNDERSCORES.
+ * sysdeps/unix/arm/start.c: Don't test HAVE_WEAK_SYMBOLS or
+ NO_UNDERSCORES.
+ * sysdeps/unix/arm/sysdep.S: Don't test NO_UNDERSCORES.
+
+2012-01-08 Joseph Myers <joseph@codesourcery.com>
+
* sysdeps/arm/sysdep.h: Remove non-ELF support.
2012-01-07 Joseph Myers <joseph@codesourcery.com>
diff --git a/sysdeps/arm/sysdep.h b/sysdeps/arm/sysdep.h
index 62fee04..4fa10d9 100644
--- a/sysdeps/arm/sysdep.h
+++ b/sysdeps/arm/sysdep.h
@@ -35,10 +35,6 @@
#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,%##typearg;
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
-/* In ELF C symbols are asm symbols. */
-#undef NO_UNDERSCORES
-#define NO_UNDERSCORES
-
#define PLTJMP(_x) _x##(PLT)
/* APCS-32 doesn't preserve the condition codes across function call. */
@@ -105,7 +101,6 @@
#define CALL_MCOUNT /* Do nothing. */
#endif
-#ifdef NO_UNDERSCORES
/* Since C identifiers are not normally prefixed with an underscore
on this system, the asm identifier `syscall_error' intrudes on the
C name space. Make sure we use an innocuous name. */
@@ -115,7 +110,6 @@
#else
#define mcount _mcount
#endif
-#endif
#if defined(__ARM_EABI__)
/* Tag_ABI_align8_preserved: This code preserves 8-byte
diff --git a/sysdeps/unix/arm/start.c b/sysdeps/unix/arm/start.c
index 6bf08b1..3bfb6d2 100644
--- a/sysdeps/unix/arm/start.c
+++ b/sysdeps/unix/arm/start.c
@@ -1,5 +1,5 @@
/* Special startup code for ARM a.out binaries.
- Copyright (C) 1998, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2004, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -41,9 +41,7 @@
/* The first piece of initialized data. */
int __data_start = 0;
-#ifdef HAVE_WEAK_SYMBOLS
weak_alias (__data_start, data_start)
-#endif
extern void __libc_init (int argc, char **argv, char **envp);
extern int main (int argc, char **argv, char **envp);
@@ -53,16 +51,7 @@ extern int main (int argc, char **argv, char **envp);
/* If this was in C it might create its own stack frame and
screw up the arguments. */
-#ifdef NO_UNDERSCORES
asm (".text; .globl _start; _start: B start1");
-#else
-asm (".text; .globl __start; __start: B _start1");
-
-/* Make an alias called `start' (no leading underscore, so it can't
- conflict with C symbols) for `_start'. This is the name vendor crt0.o's
- tend to use, and thus the name most linkers expect. */
-asm (".set start, __start");
-#endif
/* Fool gcc into thinking that more args are passed. This makes it look
on the stack (correctly) for the real arguments. It causes somewhat
diff --git a/sysdeps/unix/arm/sysdep.S b/sysdeps/unix/arm/sysdep.S
index 2a534ba..41386fe 100644
--- a/sysdeps/unix/arm/sysdep.S
+++ b/sysdeps/unix/arm/sysdep.S
@@ -1,5 +1,5 @@
/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2002, 2003,
- 2004, 2005, 2009, 2011
+ 2004, 2005, 2009, 2011, 2012
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -29,11 +29,7 @@
#include <tls.h>
#undef syscall_error
-#ifdef NO_UNDERSCORES
__syscall_error:
-#else
-syscall_error:
-#endif
#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
/* We translate the system's EWOULDBLOCK error into EAGAIN.
The GNU C library always defines EWOULDBLOCK==EAGAIN.
--
Joseph S. Myers
joseph@codesourcery.com