Line 257... |
Line 257... |
{"blibpath", required_argument, NULL, OPTION_LIBPATH},
|
{"blibpath", required_argument, NULL, OPTION_LIBPATH},
|
{"bnolibpath", required_argument, NULL, OPTION_NOLIBPATH},
|
{"bnolibpath", required_argument, NULL, OPTION_NOLIBPATH},
|
{NULL, no_argument, NULL, 0}
|
{NULL, no_argument, NULL, 0}
|
};
|
};
|
|
|
/* Options supported by the AIX linker which we do not support: -f,
|
/* Options supported by the AIX linker which we do not support:
|
-S, -v, -Z, -bbindcmds, -bbinder, -bbindopts, -bcalls, -bcaps,
|
-S, -v, -Z, -bbindcmds, -bbinder, -bbindopts, -bcalls, -bcaps,
|
-bcror15, -bdebugopt, -bdbg, -bdelcsect, -bex?, -bfilelist, -bfl,
|
-bcror15, -bdebugopt, -bdbg, -bdelcsect, -bex?, -bfilelist, -bfl,
|
-bgcbypass, -bglink, -binsert, -bi, -bloadmap, -bl, -bmap, -bnl,
|
-bgcbypass, -bglink, -binsert, -bi, -bloadmap, -bl, -bmap, -bnl,
|
-bnobind, -bnocomprld, -bnocrld, -bnoerrmsg, -bnoglink,
|
-bnobind, -bnocomprld, -bnocrld, -bnoerrmsg, -bnoglink,
|
-bnoloadmap, -bnl, -bnoobjreorder, -bnoquiet, -bnoreorder,
|
-bnoloadmap, -bnl, -bnoobjreorder, -bnoquiet, -bnoreorder,
|
Line 301... |
Line 301... |
}
|
}
|
}
|
}
|
return FALSE;
|
return FALSE;
|
}
|
}
|
|
|
|
/* Helper for option '-f', which specify a list of input files.
|
|
Contrary to the native linker, we don't support shell patterns
|
|
(simply because glob isn't always available). */
|
|
|
|
static void
|
|
read_file_list (const char *filename)
|
|
{
|
|
FILE *f;
|
|
/* An upper bound on the number of characters in the file. */
|
|
long pos;
|
|
/* File in memory. */
|
|
char *buffer;
|
|
size_t len;
|
|
char *b;
|
|
char *e;
|
|
|
|
f = fopen (filename, FOPEN_RT);
|
|
if (f == NULL)
|
|
{
|
|
einfo ("%F%P: cannot open %s\n", filename);
|
|
return;
|
|
}
|
|
if (fseek (f, 0L, SEEK_END) == -1)
|
|
goto error;
|
|
pos = ftell (f);
|
|
if (pos == -1)
|
|
goto error;
|
|
if (fseek (f, 0L, SEEK_SET) == -1)
|
|
goto error;
|
|
|
|
buffer = (char *) xmalloc (pos + 1);
|
|
len = fread (buffer, sizeof (char), pos, f);
|
|
if (len != (size_t) pos && ferror (f))
|
|
goto error;
|
|
/* Add a NUL terminator. */
|
|
buffer[len] = '\0';
|
|
fclose (f);
|
|
|
|
/* Parse files. */
|
|
b = buffer;
|
|
while (1)
|
|
{
|
|
/* Skip empty lines. */
|
|
while (*b == '\n' || *b == '\r')
|
|
b++;
|
|
|
|
/* Stop if end of buffer. */
|
|
if (b == buffer + len)
|
|
break;
|
|
|
|
/* Eat any byte until end of line. */
|
|
for (e = b; *e != '\0'; e++)
|
|
if (*e == '\n' || *e == '\r')
|
|
break;
|
|
|
|
/* Replace end of line by nul. */
|
|
if (*e != '\0')
|
|
*e++ = '\0';
|
|
|
|
if (b != e)
|
|
lang_add_input_file (b, lang_input_file_is_search_file_enum, NULL);
|
|
b = e;
|
|
}
|
|
return;
|
|
|
|
error:
|
|
einfo ("%F%P: cannot read %s\n", optarg);
|
|
fclose (f);
|
|
}
|
|
|
static bfd_boolean
|
static bfd_boolean
|
gld${EMULATION_NAME}_handle_option (int optc)
|
gld${EMULATION_NAME}_handle_option (int optc)
|
{
|
{
|
bfd_signed_vma val;
|
bfd_signed_vma val;
|
const char *end;
|
const char *end;
|
Line 316... |
Line 386... |
|
|
case 0:
|
case 0:
|
/* Long option which just sets a flag. */
|
/* Long option which just sets a flag. */
|
break;
|
break;
|
|
|
|
case 'f':
|
|
/* This overrides --auxiliary. This option specifies a file containing
|
|
a list of input files. */
|
|
read_file_list (optarg);
|
|
break;
|
|
|
case 'D':
|
case 'D':
|
val = bfd_scan_vma (optarg, &end, 0);
|
val = bfd_scan_vma (optarg, &end, 0);
|
if (*end != '\0')
|
if (*end != '\0')
|
einfo ("%P: warning: ignoring invalid -D number %s\n", optarg);
|
einfo ("%P: warning: ignoring invalid -D number %s\n", optarg);
|
else if (val != -1)
|
else if (val != -1)
|