소스 검색

Based on a problem report and patch from Florian Schirmer, fix a compile
problem with mips -- contrary to my expectation gcc on mips _always_ defines
__PIC__ which breaks the assumption inherent in my code. This should fix
things up.

Eric Andersen 20 년 전
부모
커밋
3368dbc3ed
2개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. 1 1
      ldso/libdl/Makefile
  2. 3 3
      ldso/libdl/libdl.c

+ 1 - 1
ldso/libdl/Makefile

@@ -34,7 +34,7 @@ endif
 XXFLAGS+=$(shell $(CC) -print-search-dirs | sed -ne "s/install: *\(.*\)/-I\1include/gp")
 XXFLAGS_NOPIC:=$(XXFLAGS)
 ifeq ($(DOPIC),y)
-    XXFLAGS += $(PICFLAG)
+    XXFLAGS += $(PICFLAG) -D__LIBDL_SHARED__
 endif
 ifeq ($(strip $(SUPPORT_LD_DEBUG)),y)
 XXFLAGS+=-D__SUPPORT_LD_DEBUG__

+ 3 - 3
ldso/libdl/libdl.c

@@ -16,7 +16,7 @@ int dladdr(void *, Dl_info *) __attribute__ ((__weak__, __alias__ ("_dladdr")));
 void _dlinfo(void);
 
 
-#ifdef __PIC__
+#if defined (__LIBDL_SHARED__)
 /* This is a real hack.  We need access to the dynamic linker, but we
 also need to make it possible to link against this library without any
 unresolved externals.  We provide these weak symbols to make the link
@@ -64,7 +64,7 @@ extern char *_dl_debug_bindings __attribute__ ((__weak__, __alias__ ("foobar1"))
 extern int   _dl_debug_file __attribute__ ((__weak__, __alias__ ("foobar1")));
 #endif
 
-#else	/* __PIC__ */
+#else	/* __LIBDL_SHARED__ */
 
 #ifdef __SUPPORT_LD_DEBUG__
 char *_dl_debug  = 0;
@@ -285,7 +285,7 @@ void *_dlopen(const char *libname, int flag)
 	_dlinfo();
 #endif
 
-#ifdef __PIC__
+#if defined (__LIBDL_SHARED__)
 	/* Find the last library so we can run things in the right order */
 	for (tpnt = dyn_chain->dyn; tpnt->next!=NULL; tpnt = tpnt->next)
 	    ;