Browse Source

* deffilep.y (def_image_name): If LIBRARY or NAME statement

specifies an empty string, retain the name specified on command
	line.
	* ld.texinfo: Document above
cr-0x5f1
Danny Smith 21 years ago
parent
commit
a287798505
  1. 7
      ld/ChangeLog
  2. 40
      ld/deffilep.y
  3. 3
      ld/ld.texinfo

7
ld/ChangeLog

@ -1,3 +1,10 @@
2006-04-01 Danny Smith <dannysmith@users.sourceforge.net>
* deffilep.y (def_image_name): If LIBRARY or NAME statement
specifies an empty string, retain the name specified on command
line.
* ld.texinfo: Document above.
2006-03-31 Jakub Jelinek <jakub@redhat.com>
* ldmisc.c (vfinfo): Revert 2005-10-05 changes. If

40
ld/deffilep.y

@ -648,22 +648,30 @@ def_file_add_directive (def_file *my_def, const char *param, int len)
static void
def_image_name (const char *name, int base, int is_dll)
{
const char* image_name = lbasename (name);
if (image_name != name)
einfo ("%s:%d: Warning: path components stripped from %s, '%s'\n",
def_filename, linenumber, is_dll ? "LIBRARY" : "NAME", name);
if (def->name)
free (def->name);
/* Append the default suffix, if none specified. */
if (strchr (image_name, '.') == 0)
{
const char * suffix = is_dll ? ".dll" : ".exe";
def->name = xmalloc (strlen (image_name) + strlen (suffix) + 1);
sprintf (def->name, "%s%s", image_name, suffix);
}
else
def->name = xstrdup (image_name);
/* If a LIBRARY or NAME statement is specified without a name, there is nothing
to do here. We retain the output filename specified on command line. */
if (*name)
{
const char* image_name = lbasename (name);
if (image_name != name)
einfo ("%s:%d: Warning: path components stripped from %s, '%s'\n",
def_filename, linenumber, is_dll ? "LIBRARY" : "NAME",
name);
if (def->name)
free (def->name);
/* Append the default suffix, if none specified. */
if (strchr (image_name, '.') == 0)
{
const char * suffix = is_dll ? ".dll" : ".exe";
def->name = xmalloc (strlen (image_name) + strlen (suffix) + 1);
sprintf (def->name, "%s%s", image_name, suffix);
}
else
def->name = xstrdup (image_name);
}
/* Honor a BASE address statement, even if LIBRARY string is empty. */
def->base_address = base;
def->is_dll = is_dll;
}

3
ld/ld.texinfo

@ -5618,7 +5618,8 @@ specification @code{BASE = <number>} may be used to specify a
non-default base address for the image.
If neither @code{LIBRARY <name>} nor @code{NAME <name>} is specified,
the internal name is the same as the filename specified on the command line.
or they specify an empty string, the internal name is the same as the
filename specified on the command line.
The complete specification of an export symbol is:

Loading…
Cancel
Save