This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]