소스 검색

When -shared is specified, meaning they wish to create a shared
library, we need to disable adding start files (i.e. crt0) since
it isn't supposed to be creating an executable, just a shared lib.
-Erik

Eric Andersen 22 년 전
부모
커밋
ddf02f5f8e
1개의 변경된 파일9개의 추가작업 그리고 6개의 파일을 삭제
  1. 9 6
      extra/gcc-uClibc/gcc-uClibc.c

+ 9 - 6
extra/gcc-uClibc/gcc-uClibc.c

@@ -289,6 +289,7 @@ int main(int argc, char **argv)
 						use_static_linking = 1;
 					}
 					if (strcmp("-shared",argv[i]) == 0) {
+						use_start = 0;
 						use_pic = 1;
 					}
 					break;
@@ -444,13 +445,15 @@ int main(int argc, char **argv)
 		//gcc_argv[i++] = "-Wl,--end-group";
 	    }
 #ifdef __UCLIBC_CTOR_DTOR__
-	    if (ctor_dtor) {
-		if (use_pic) {
-		    gcc_argv[i++] = LIBGCC_DIR "crtendS.o" ;
-		} else {
-		    gcc_argv[i++] = LIBGCC_DIR "crtend.o" ;
+	    if (use_start) {
+		if (ctor_dtor) {
+		    if (use_pic) {
+			gcc_argv[i++] = LIBGCC_DIR "crtendS.o" ;
+		    } else {
+			gcc_argv[i++] = LIBGCC_DIR "crtend.o" ;
+		    }
+		    gcc_argv[i++] = crtn_path[use_build_dir];
 		}
-		gcc_argv[i++] = crtn_path[use_build_dir];
 	    }
 #endif
 	} else {