PATCH: Don't export libgcc symbol (Re: symbol clarification please?)

H. J. Lu hjl@lucon.org
Tue Aug 13 08:29:00 GMT 2002


On Tue, Aug 13, 2002 at 01:08:11AM -0400, Jack Howarth wrote:
> Ulrich,
>     Okay, after talking to HJ, if I understand him correctly, 
> if a symbol appears as it does now in glibc-2-2-branch on ppc
> as...
> 
> 000266b0 g    DF .text        000000c8  GLIBC_2.0   __divdi3
> 
> ...this exports the symbol for linking as well as
> for run-time resolution. Now my understanding was
> that you demanded we not export the symbols from
> libgcc-compat for linking. Franz's revised patch
> appears to do exactly this with this result instead...
> 
> 00026680 g    DF .text        000000c8 (GLIBC_2.0)  __divdi3
> 

The invasive patch for glibc 2.2 is not my taste. Also I prefer C over
assembly. Please try this on glibc 2.2.


H.J.
-------------- next part --------------
2002-08-13  H.J. Lu  <hjl@gnu.org>

	* sysdeps/powerpc/libgcc-compat.c (__divdi3): New.
	(__moddi3): Likewise.
	(__udivdi3): Likewise.
	(__umoddi3): Likewise.

--- sysdeps/powerpc/libgcc-compat.c.libgcc	2002-08-13 11:08:42.000000000 -0400
+++ sysdeps/powerpc/libgcc-compat.c	2002-08-13 11:21:35.000000000 -0400
@@ -23,6 +23,34 @@
 
 #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6)
 
+extern uint64_t __umoddi3 (uint64_t, uint64_t);
+uint64_t __umoddi3_internal (uint64_t u, uint64_t v)
+{
+  return __umoddi3 (u, v);
+}
+symbol_version (__umoddi3_internal, __umoddi3, GLIBC_2.0);
+
+extern uint64_t __udivdi3 (uint64_t, uint64_t);
+uint64_t __udivdi3_internal (uint64_t u, uint64_t v)
+{
+  return __udivdi3 (u, v);
+}
+symbol_version (__udivdi3_internal, __udivdi3, GLIBC_2.0);
+
+extern int64_t __moddi3 (int64_t, int64_t);
+int64_t __moddi3_internal (int64_t u, int64_t v)
+{
+  return __moddi3 (u, v);
+}
+symbol_version (__moddi3_internal, __moddi3, GLIBC_2.0);
+
+extern int64_t __divdi3 (int64_t, int64_t);
+int64_t __divdi3_internal (int64_t u, int64_t v)
+{
+  return __divdi3 (u, v);
+}
+symbol_version (__divdi3_internal, __divdi3, GLIBC_2.0);
+
 extern int64_t __ashldi3 (int64_t, int32_t);
 int64_t __ashldi3_internal (int64_t u, int32_t b)
 {


More information about the Libc-alpha mailing list