diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2006-04-01 04:51:23 +0000 |
---|---|---|
committer | Danny Smith <dannysmith@users.sourceforge.net> | 2006-04-01 04:51:23 +0000 |
commit | a287798505606f72576811279a3d9825475f6225 (patch) | |
tree | 547d336e2052d649fc7163d9b37edd1c5571adb0 | |
parent | 61353e4284f19aaf36f48aa04fd81e0390777cd1 (diff) | |
download | gdb-a287798505606f72576811279a3d9825475f6225.zip gdb-a287798505606f72576811279a3d9825475f6225.tar.gz gdb-a287798505606f72576811279a3d9825475f6225.tar.bz2 |
* 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
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | ld/deffilep.y | 40 | ||||
-rw-r--r-- | ld/ld.texinfo | 3 |
3 files changed, 33 insertions, 17 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 1eba043..1835d11 100644 --- a/ld/ChangeLog +++ b/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 diff --git a/ld/deffilep.y b/ld/deffilep.y index 78da27a..5c699f3 100644 --- a/ld/deffilep.y +++ b/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; } diff --git a/ld/ld.texinfo b/ld/ld.texinfo index 1e3b3e8..55eb893 100644 --- a/ld/ld.texinfo +++ b/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: |