This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

Another shlib-compat patch



I've made the same patches to some arm specific files as Roland made
already to the generic versions.

Uli, this patch conflicts with the SHARED patch (due to s/PIC/SHARED/)
- you can remove these two files from the SHARED patch if you like.

Andreas

2000-03-29  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/arm/errlist.c: Use shlib-compat macros.
	* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.

============================================================
Index: sysdeps/unix/sysv/linux/arm/errlist.c
--- sysdeps/unix/sysv/linux/arm/errlist.c	1998/08/20 17:37:26	1.1
+++ sysdeps/unix/sysv/linux/arm/errlist.c	2000/03/29 11:57:34
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000 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
@@ -18,18 +18,18 @@
 
 #include <sizes.h>
 #include <errlist.h>
+#include <shlib-compat.h>
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#define SYS_ERRLIST __new_sys_errlist
+#define SYS_NERR __new_sys_nerr
 
-# define SYS_ERRLIST __new_sys_errlist
-# define SYS_NERR __new_sys_nerr
-
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 asm (".data; .globl __old_sys_errlist;  __old_sys_errlist:");
 #endif
 
 #include <sysdeps/gnu/errlist.c>
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 asm (".type __old_sys_errlist,%object;.size __old_sys_errlist,"
      OLD_ERRLIST_SIZE_STR "*" PTR_SIZE_STR);
 
@@ -44,12 +44,11 @@
 weak_alias (__old_sys_errlist, _old_sys_errlist);
 symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0);
 symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0);
-
-weak_alias (__new_sys_nerr, _new_sys_nerr)
-default_symbol_version (__new_sys_nerr, _sys_nerr, GLIBC_2.1);
-default_symbol_version (_new_sys_nerr, sys_nerr, GLIBC_2.1);
-weak_alias (__new_sys_errlist, _new_sys_errlist)
-default_symbol_version (__new_sys_errlist, _sys_errlist, GLIBC_2.1);
-default_symbol_version (_new_sys_errlist, sys_errlist, GLIBC_2.1);
-
 #endif
+
+strong_alias (__new_sys_nerr, _new_sys_nerr)
+versioned_symbol (libc, __new_sys_nerr, _sys_nerr, GLIBC_2_1);
+versioned_symbol (libc, _new_sys_nerr, sys_nerr, GLIBC_2_1);
+strong_alias (__new_sys_errlist, _new_sys_errlist)
+versioned_symbol (libc, __new_sys_errlist, _sys_errlist, GLIBC_2_1);
+versioned_symbol (libc, _new_sys_errlist, sys_errlist, GLIBC_2_1);
============================================================
Index: sysdeps/unix/sysv/linux/arm/siglist.c
--- sysdeps/unix/sysv/linux/arm/siglist.c	1999/06/19 09:47:56	1.2
+++ sysdeps/unix/sysv/linux/arm/siglist.c	2000/03/29 11:57:34
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000 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
@@ -20,41 +20,34 @@
 #include <signal.h>
 #include <sizes.h>
 #include <libintl.h>
+#include <shlib-compat.h>
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
-# define SYS_SIGLIST	__new_sys_siglist
-# define SYS_SIGABBREV	__new_sys_sigabbrev
-#else
-# define SYS_SIGLIST	_sys_siglist
-# define SYS_SIGABBREV	_sys_sigabbrev
-#endif
-
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 asm (".data; .globl __old_sys_siglist;  __old_sys_siglist:");
 #endif
 
-const char *const SYS_SIGLIST[NSIG] =
+const char *const __new_sys_siglist[NSIG] =
 {
 #define init_sig(sig, abbrev, desc)   [sig] desc,
 #include "siglist.h"
 #undef init_sig
 };
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 asm (".type __old_sys_siglist,%object;.size __old_sys_siglist,"
         OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR);
 
 asm (".data; .globl __old_sys_sigabbrev;  __old_sys_sigabbrev:");
 #endif
 
-const char *const SYS_SIGABBREV[NSIG] =
+const char *const __new_sys_sigabbrev[NSIG] =
 {
 #define init_sig(sig, abbrev, desc)   [sig] abbrev,
 #include "siglist.h"
 #undef init_sig
 };
 
-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 asm (".type __old_sys_sigabbrev,%object;.size __old_sys_sigabbrev,"
         OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR);
 
@@ -62,15 +55,12 @@
 extern const char *const *__old_sys_sigabbrev;
 
 strong_alias (__old_sys_siglist, _old_sys_siglist)
-symbol_version (__old_sys_siglist, _sys_siglist, GLIBC_2.0);
-symbol_version (_old_sys_siglist, sys_siglist, GLIBC_2.0);
-symbol_version (__old_sys_sigabbrev, sys_sigabbrev, GLIBC_2.0);
+compat_symbol (libc, __old_sys_siglist, _sys_siglist, GLIBC_2_0);
+compat_symbol (libc, _old_sys_siglist, sys_siglist, GLIBC_2_0);
+compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0);
+#endif
 
 strong_alias (__new_sys_siglist, _new_sys_siglist)
-default_symbol_version (__new_sys_siglist, _sys_siglist, GLIBC_2.1);
-default_symbol_version (_new_sys_siglist, sys_siglist, GLIBC_2.1);
-default_symbol_version (__new_sys_sigabbrev, sys_sigabbrev, GLIBC_2.1);
-#else
-weak_alias (_sys_siglist, sys_siglist)
-weak_alias (_sys_sigabbrev, sys_sigabbrev)
-#endif
+versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_1);
+versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_1);
+versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.rhein-neckar.de

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