diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2006-01-16 02:26:42 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2006-01-16 02:26:42 +0000 |
commit | e21d6c600c0e4c27d89e59bed687fa5e0861f4ca (patch) | |
tree | 44be17e1f07ee6b6b75d920f34f20d927d8a0ac8 /gcc/tree.c | |
parent | ebda5160a89634f8244a26f7ad0011382fe51c17 (diff) | |
download | gcc-e21d6c600c0e4c27d89e59bed687fa5e0861f4ca.zip gcc-e21d6c600c0e4c27d89e59bed687fa5e0861f4ca.tar.gz gcc-e21d6c600c0e4c27d89e59bed687fa5e0861f4ca.tar.bz2 |
re PR target/25168 (FAIL: g++.old-deja/g++.abi/cxa_vec.C execution test)
PR target/25168
* tree.c (get_file_function_name_long): Concatenate the first global
object name with a string derived from the input filename of the object
for type "F".
From-SVN: r109740
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -5867,7 +5867,26 @@ get_file_function_name_long (const char *type) char *q; if (first_global_object_name) - p = first_global_object_name; + { + p = first_global_object_name; + + /* For type 'F', the generated name must be unique not only to this + translation unit but also to any given link. Since global names + can be overloaded, we concatenate the first global object name + with a string derived from the file name of this object. */ + if (!strcmp (type, "F")) + { + const char *file = main_input_filename; + + if (! file) + file = input_filename; + + q = alloca (strlen (p) + 10); + sprintf (q, "%s_%08X", p, crc32_string (0, file)); + + p = q; + } + } else { /* We don't have anything that we know to be unique to this translation |