This is the mail archive of the newlib@sourceware.org mailing list for the newlib 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]

Re: [PATCH 06/14] FreeBSD update of __strong_reference, etc.


On 04/17/2013 09:16 AM, Sebastian Huber wrote:
newlib/ChangeLog
2013-04-17  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libc/include/sys/cdefs.h (__strong_reference): Use definition
	of latest FreeBSD source.
Should the change log entry highlight that the __strong_reference change is such that the user will likely have to edit any code that uses it (given that a ; is removed)? Perhaps something like "Potentially incompatible change, ; removed."?
	(__sym_compat): New define.
	(__sym_default): Likewise.
---
  newlib/libc/include/sys/cdefs.h |   16 +++++++++++++---
  1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/newlib/libc/include/sys/cdefs.h b/newlib/libc/include/sys/cdefs.h
index 1cae5ec..62c7aae 100644
--- a/newlib/libc/include/sys/cdefs.h
+++ b/newlib/libc/include/sys/cdefs.h
@@ -223,9 +223,11 @@
  #define	__DEQUALIFY(type, var)	((type)(uintptr_t)(const volatile void *)(var))
  #endif
-#ifdef __GNUC__
+#if defined(__GNUC__) || defined(__INTEL_COMPILER)
+#ifndef __INTEL_COMPILER
  #define	__strong_reference(sym,aliassym)	\
-	extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)));
+	extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
+#endif
  #ifdef __ELF__
  #ifdef __STDC__
  #define	__weak_reference(sym,alias)	\
@@ -235,6 +237,10 @@
  	__asm__(".section .gnu.warning." #sym);	\
  	__asm__(".asciz \"" msg "\"");	\
  	__asm__(".previous")
+#define	__sym_compat(sym,impl,verid)	\
+	__asm__(".symver " #impl ", " #sym "@" #verid)
+#define	__sym_default(sym,impl,verid)	\
+	__asm__(".symver " #impl ", " #sym "@@" #verid)
  #else
  #define	__weak_reference(sym,alias)	\
  	__asm__(".weak alias");		\
@@ -243,6 +249,10 @@
  	__asm__(".section .gnu.warning.sym"); \
  	__asm__(".asciz \"msg\"");	\
  	__asm__(".previous")
+#define	__sym_compat(sym,impl,verid)	\
+	__asm__(".symver impl, sym@verid")
+#define	__sym_default(impl,sym,verid)	\
+	__asm__(".symver impl, sym@@verid")
  #endif	/* __STDC__ */
  #else	/* !__ELF__ */
  #ifdef __STDC__
@@ -261,6 +271,6 @@
  	__asm__(".stabs \"_/**/sym\",1,0,0,0")
  #endif	/* __STDC__ */
  #endif	/* __ELF__ */
-#endif	/* __GNUC__ */
+#endif	/* __GNUC__ || __INTEL_COMPILER */
#endif /* !_SYS_CDEFS_H_ */


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