This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc 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: Undefined weak symbol bug


On Tue, Mar 25, 2003 at 02:20:00PM -0800, Roland McGrath wrote:
> Can you formulate this as a complete test case we can add to elf/?
> 

Here it is.


H.J.
----
2003-03-25  H.J. Lu <hjl at gnu dot org>

	* elf/Makefile (tests): Add tst-weak1.
	(modules-names): Add tst-weak1mod1.
	($(objpfx)tst-weak1): New target.
	($(objpfx)tst-weak1.out): Likewise.

	* elf/tst-weak1.c: New file.
	* elf/tst-weak1mod1.c: Likewise.

--- elf/Makefile.weak-test	2003-03-19 08:15:39.000000000 -0800
+++ elf/Makefile	2003-03-25 15:45:47.000000000 -0800
@@ -142,7 +142,8 @@ tests += loadtest restest1 preloadtest l
 	 $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \
 	 neededtest3 neededtest4 unload2 lateglobal initfirst global \
 	 restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
-	 circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8
+	 circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
+	 tst-weak1
 #	 reldep9
 test-srcs = tst-pathopt
 tests-vis-yes = vismain
@@ -167,7 +168,8 @@ modules-names = testobj1 testobj2 testob
 		circlemod1 circlemod1a circlemod2 circlemod2a \
 		circlemod3 circlemod3a \
 		reldep8mod1 reldep8mod2 reldep8mod3 \
-		reldep9mod1 reldep9mod2 reldep9mod3
+		reldep9mod1 reldep9mod2 reldep9mod3 \
+		tst-weak1mod1
 ifeq (yes,$(have-initfini-array))
 modules-names += tst-array2dep
 endif
@@ -605,6 +607,9 @@ $(objpfx)tst-array4.out: $(objpfx)tst-ar
 	  $< > $@
 	cmp $@ tst-array4.exp > /dev/null
 
+$(objpfx)tst-weak1: $(objpfx)tst-weak1mod1.so
+$(objpfx)tst-weak1.out: $(objpfx)tst-weak1
+
 check-textrel-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
 $(objpfx)check-textrel: check-textrel.c
 	$(native-compile)
--- elf/tst-weak1.c.weak-test	2003-03-25 15:51:42.000000000 -0800
+++ elf/tst-weak1.c	2003-03-25 16:01:07.000000000 -0800
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+extern int main_hidden __attribute__ ((weak));
+asm (".hidden main_hidden");
+
+int shared_hidden = 1;
+
+extern int * shared_hidden_p (void);
+
+int 
+main (void)
+{
+  int ret = 0;
+
+  ret += &main_hidden != NULL;
+  ret += shared_hidden_p () != NULL;
+  printf ("&main_hidden: %p should be (nil).\n", &main_hidden);
+  printf ("&shlib_hidden: %p should be (nil).\n", shared_hidden_p ());
+  return ret;
+}
--- elf/tst-weak1mod1.c.weak-test	2003-03-25 15:51:20.000000000 -0800
+++ elf/tst-weak1mod1.c	2003-03-25 15:56:45.000000000 -0800
@@ -0,0 +1,10 @@
+extern int shared_hidden __attribute__ ((weak));
+asm (".hidden shared_hidden");
+
+int main_hidden = 1;
+
+int *
+shared_hidden_p (void)
+{
+  return &shared_hidden;
+}


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