Print this page
11461 should use a native link-editor during the build
11463 SUNWonld has passed its use-by date
11464 cmd/sgs/tools should contain tools, not common code
11465 sgsmsg should be built with the rest of the build tools

@@ -304,10 +304,11 @@
 } cw_compiler_t;
 
 typedef struct cw_ictx {
         struct cw_ictx  *i_next;
         cw_compiler_t   *i_compiler;
+        char            *i_linker;
         struct aelist   *i_ae;
         uint32_t        i_flags;
         int             i_oldargc;
         char            **i_oldargv;
         pid_t           i_pid;

@@ -1207,18 +1208,10 @@
                                 arg += 2;
                         }
                         /* Just ignore -YS,... for now */
                         if (strncmp(arg, "S,", 2) == 0)
                                 break;
-                        if (strncmp(arg, "l,", 2) == 0) {
-                                char *s = strdup(arg);
-                                s[0] = '-';
-                                s[1] = 'B';
-                                newae(ctx->i_ae, s);
-                                free(s);
-                                break;
-                        }
                         if (strncmp(arg, "I,", 2) == 0) {
                                 char *s = strdup(arg);
                                 s[0] = '-';
                                 s[1] = 'I';
                                 newae(ctx->i_ae, "-nostdinc");

@@ -1466,10 +1459,13 @@
                 (void) printf("%s: %s\n", (ctx->i_flags & CW_F_SHADOW) ?
                     "shadow" : "primary", ctx->i_compiler->c_path);
                 (void) fflush(stdout);
         }
 
+        if (ctx->i_linker != NULL)
+                setenv("LD_ALTEXEC", ctx->i_linker, 1);
+
         if (!(ctx->i_flags & CW_F_XLATE))
                 return;
 
         switch (ctx->i_compiler->c_style) {
         case SUN:

@@ -1725,10 +1721,11 @@
 
         cw_ictx_t *main_ctx;
 
         static struct option longopts[] = {
                 { "compiler", no_argument, NULL, 'c' },
+                { "linker", required_argument, NULL, 'l' },
                 { "noecho", no_argument, NULL, 'n' },
                 { "primary", required_argument, NULL, 'p' },
                 { "shadow", required_argument, NULL, 's' },
                 { "versions", no_argument, NULL, 'v' },
                 { NULL, 0, NULL, 0 },

@@ -1744,10 +1741,14 @@
                         cflg = B_TRUE;
                         break;
                 case 'C':
                         Cflg = B_TRUE;
                         break;
+                case 'l':
+                        if ((main_ctx->i_linker = strdup(optarg)) == NULL)
+                                nomem();
+                        break;
                 case 'n':
                         nflg = B_TRUE;
                         break;
                 case 'p':
                         if (primary.c_path != NULL) {