code: @Override
    public String[] prepareArguments(final CCTask task, final String outputDir, final String outputFile,
        final String[] sourceFiles, final CommandLineLinkerConfiguration config) {
      //
      // need to suppress sources that correspond to
      // library set entries since they are already
      // in the argument list
      final String[] libnames = config.getLibraryNames();
      if (libnames == null || libnames.length == 0) {
        return super.prepareArguments(task, outputDir, outputFile, sourceFiles, config);
      }
      //
      //
      // null out any sources that correspond to library names
      //
      final String[] localSources = sourceFiles.clone();
      int extra = 0;
      for (final String libname : libnames) {
        for (int j = 0; j < localSources.length; j++) {
          if (localSources[j] != null && localSources[j].indexOf(libname) > 0 && localSources[j].indexOf("lib") > 0) {
            final String filename = new File(localSources[j]).getName();
            if (filename.startsWith("lib") && filename.substring(3).startsWith(libname)) {
              final String extension = filename.substring(libname.length() + 3);
              if (extension.equals(".a") || extension.equals(".so") || extension.equals(".sl")) {
                localSources[j] = null;
                extra++;
              }
            }
          }
        }
      }
      if (extra == 0) {
        return super.prepareArguments(task, outputDir, outputFile, sourceFiles, config);
      }
      final String[] finalSources = new String[localSources.length - extra];
      int index = 0;
      for (final String localSource : localSources) {
        if (localSource != null) {
          finalSources[index++] = localSource;
        }
      }
      return super.prepareArguments(task, outputDir, outputFile, finalSources, config);
    }
docs: Prepares argument list for exec command. Will return null if command
  line would exceed allowable command line buffer.
  
  @param outputFile
  linker output file
  @param sourceFiles
  linker input files (.obj, .o, .res)
  @param config
  linker configuration
  @return arguments for runTask