This is the mail archive of the libc-hacker@sources.redhat.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] |
| Other format: | [Raw text] | |
This makes sure that libc does not export __divdi3, etc., at link
time, and saves the corresponding PLT entries. The ugly hack in
lldiv.c wasn't complete anyway, since it missed the reference to
__moddi3. The ppc version is not needed any more.
Andreas.
2003-01-26 Andreas Schwab <schwab@suse.de>
* sysdeps/wordsize-32/divdi3.c: Export the functions only as
compatibility symbols. Remove INTDEF for __divdi3.
* sysdeps/wordsize-32/lldiv.c: Don't use __divdi3_internal.
* sysdeps/powerpc/powerpc32/divdi3.c: Remove.
* sysdeps/powerpc/powerpc32/Makefile (CPPFLAGS-divdi3.c): Don't
define.
* sysdeps/powerpc/powerpc32/Dist: Remove divdi3.c.
--- sysdeps/powerpc/powerpc32/Dist.~1.1.~ 2002-09-05 11:35:02.000000000 +0200
+++ sysdeps/powerpc/powerpc32/Dist 2003-01-26 01:41:53.000000000 +0100
@@ -1,4 +1,3 @@
-divdi3.c
dl-machine.c
dl-start.S
libgcc-compat.S
--- sysdeps/powerpc/powerpc32/Makefile.~1.3.~ 2002-10-07 10:35:15.000000000 +0200
+++ sysdeps/powerpc/powerpc32/Makefile 2003-01-26 01:40:12.000000000 +0100
@@ -34,7 +34,6 @@ endif
ifeq (yes,$(build-shared))
# Compatibility
ifeq (yes,$(have-protected))
-CPPFLAGS-divdi3.c = -DHAVE_DOT_HIDDEN
CPPFLAGS-libgcc-compat.S = -DHAVE_DOT_HIDDEN
endif
sysdep_routines += libgcc-compat
--- sysdeps/powerpc/powerpc32/divdi3.c 2002-09-05 10:31:00.000000000 +0200
+++ /dev/null 2002-10-07 10:49:18.000000000 +0200
@@ -1,43 +0,0 @@
-/* 64-bit multiplication and division libgcc routines for 32-bit PowerPC
- Copyright (C) 2002 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#define _DIVDI3_C
-#include <sysdeps/wordsize-32/divdi3.c>
-
-INTDEF (__udivdi3);
-INTDEF (__moddi3);
-INTDEF (__umoddi3);
-
-#ifdef HAVE_DOT_HIDDEN
-asm (".hidden __divdi3");
-asm (".hidden __udivdi3");
-asm (".hidden __moddi3");
-asm (".hidden __umoddi3");
-#endif
-
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
-
-symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.0);
-symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.0);
-symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.0);
-symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.0);
-
-#endif
Diff finished at Sun Jan 26 01:29:01
--- sysdeps/wordsize-32/divdi3.c.~1.4.~ 2002-07-25 10:38:03.000000000 +0200
+++ sysdeps/wordsize-32/divdi3.c 2003-01-26 00:55:56.000000000 +0100
@@ -1,5 +1,5 @@
/* 64-bit multiplication and division
- Copyright (C) 1989, 1992-1999, 2000, 2001, 2002
+ Copyright (C) 1989, 1992-1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -294,7 +294,6 @@ __divdi3 (DWtype u, DWtype v)
w = -w;
return w;
}
-INTDEF(__divdi3)
DWtype
__moddi3 (DWtype u, DWtype v)
@@ -329,3 +328,13 @@ __umoddi3 (UDWtype u, UDWtype v)
__udivmoddi4 (u, v, &w);
return w;
}
+
+/* We declare these with compat_symbol so that they are not visible at
+ link time. Programs must use the functions from libgcc. */
+#if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
+# include <shlib-compat.h>
+compat_symbol (libc, __divdi3, __divdi3, GLIBC_2_0);
+compat_symbol (libc, __moddi3, __moddi3, GLIBC_2_0);
+compat_symbol (libc, __udivdi3, __udivdi3, GLIBC_2_0);
+compat_symbol (libc, __umoddi3, __umoddi3, GLIBC_2_0);
+#endif
--- sysdeps/wordsize-32/lldiv.c.~1.4.~ 2002-07-25 10:38:03.000000000 +0200
+++ sysdeps/wordsize-32/lldiv.c 2003-01-26 01:01:43.000000000 +0100
@@ -21,13 +21,6 @@
#include <inttypes.h>
-#ifdef SHARED
-/* This is an ugly trick. We cause the C code generated for the code
- in lldiv.c to use __divdi3_internal instead of __divdi3 by defining
- an alias on the assembler level. */
-asm ("__divdi3 = __divdi3_internal");
-#endif
-
#include <sysdeps/generic/lldiv.c>
#undef imaxdiv
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |