mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
From Cary Coutant: Fix handling of versioned symbols, add some tests.
This commit is contained in:
parent
dc96b90a10
commit
99f8facac9
@ -1296,6 +1296,7 @@ Versions::add_def(const Symbol* sym, const char* version,
|
||||
|
||||
// We have now seen a symbol in this version, so it is not
|
||||
// weak.
|
||||
gold_assert(vb != NULL);
|
||||
vb->clear_weak();
|
||||
|
||||
// FIXME: When we support version scripts, we will need to
|
||||
|
@ -1583,7 +1583,10 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
|
||||
case elfcpp::R_386_PLT32:
|
||||
gold_assert(gsym == NULL
|
||||
|| gsym->has_plt_offset()
|
||||
|| gsym->final_value_is_known());
|
||||
|| gsym->final_value_is_known()
|
||||
|| (gsym->is_defined()
|
||||
&& !gsym->is_from_dynobj()
|
||||
&& !gsym->is_preemptible()));
|
||||
Relocate_functions<32, false>::pcrel32(view, object, psymval, address);
|
||||
break;
|
||||
|
||||
|
208
gold/po/gold.pot
208
gold/po/gold.pot
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-12-14 09:45-0800\n"
|
||||
"POT-Creation-Date: 2007-12-21 15:26-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -16,47 +16,47 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: archive.cc:95
|
||||
#: archive.cc:96
|
||||
#, c-format
|
||||
msgid "%s: no archive symbol table (run ranlib)"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:145
|
||||
#: archive.cc:147
|
||||
#, c-format
|
||||
msgid "%s: bad archive symbol table names"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:175
|
||||
#: archive.cc:177
|
||||
#, c-format
|
||||
msgid "%s: malformed archive header at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:195
|
||||
#: archive.cc:197
|
||||
#, c-format
|
||||
msgid "%s: malformed archive header size at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:206
|
||||
#: archive.cc:208
|
||||
#, c-format
|
||||
msgid "%s: malformed archive header name at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:231
|
||||
#: archive.cc:233
|
||||
#, c-format
|
||||
msgid "%s: bad extended name index at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:241
|
||||
#: archive.cc:243
|
||||
#, c-format
|
||||
msgid "%s: bad extended name entry at header %zu"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:334
|
||||
#: archive.cc:336
|
||||
#, c-format
|
||||
msgid "%s: short archive header at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:385 archive.cc:399
|
||||
#: archive.cc:387 archive.cc:401
|
||||
#, c-format
|
||||
msgid "%s: member at %zu is not an ELF object"
|
||||
msgstr ""
|
||||
@ -104,81 +104,81 @@ msgstr ""
|
||||
msgid "missing DT_NULL in dynamic segment"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:322
|
||||
#: dynobj.cc:323
|
||||
#, c-format
|
||||
msgid "invalid dynamic symbol table name index: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:329
|
||||
#: dynobj.cc:330
|
||||
#, c-format
|
||||
msgid "dynamic symbol table name section has wrong type: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:402 object.cc:238 object.cc:574
|
||||
#: dynobj.cc:404 object.cc:241 object.cc:579
|
||||
#, c-format
|
||||
msgid "bad section name offset for section %u: %lu"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:431
|
||||
#: dynobj.cc:433
|
||||
#, c-format
|
||||
msgid "duplicate definition for version %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:460
|
||||
#: dynobj.cc:462
|
||||
#, c-format
|
||||
msgid "unexpected verdef version %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:476
|
||||
#: dynobj.cc:478
|
||||
#, c-format
|
||||
msgid "verdef vd_cnt field too small: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:483
|
||||
#: dynobj.cc:486
|
||||
#, c-format
|
||||
msgid "verdef vd_aux field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:493
|
||||
#: dynobj.cc:497
|
||||
#, c-format
|
||||
msgid "verdaux vda_name field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:502
|
||||
#: dynobj.cc:507
|
||||
#, c-format
|
||||
msgid "verdef vd_next field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:535
|
||||
#: dynobj.cc:541
|
||||
#, c-format
|
||||
msgid "unexpected verneed version %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:544
|
||||
#: dynobj.cc:550
|
||||
#, c-format
|
||||
msgid "verneed vn_aux field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:557
|
||||
#: dynobj.cc:564
|
||||
#, c-format
|
||||
msgid "vernaux vna_name field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:568
|
||||
#: dynobj.cc:575
|
||||
#, c-format
|
||||
msgid "verneed vna_next field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:579
|
||||
#: dynobj.cc:586
|
||||
#, c-format
|
||||
msgid "verneed vn_next field out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:626
|
||||
#: dynobj.cc:634
|
||||
msgid "size of dynamic symbols is not multiple of symbol size"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:1303
|
||||
#: dynobj.cc:1312
|
||||
#, c-format
|
||||
msgid "symbol %s has undefined version %s"
|
||||
msgstr ""
|
||||
@ -218,42 +218,42 @@ msgstr ""
|
||||
msgid "%s: fstat failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:231
|
||||
#: fileread.cc:229
|
||||
#, c-format
|
||||
msgid "%s: pread failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:237
|
||||
#: fileread.cc:235
|
||||
#, c-format
|
||||
msgid "%s: file too short: read only %lld of %lld bytes at %lld"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:312
|
||||
#: fileread.cc:310
|
||||
#, c-format
|
||||
msgid "%s: mmap offset %lld size %lld failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:393
|
||||
#: fileread.cc:391
|
||||
#, c-format
|
||||
msgid "%s: total bytes mapped for read: %llu\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:395
|
||||
#: fileread.cc:393
|
||||
#, c-format
|
||||
msgid "%s: maximum bytes mapped for read at one time: %llu\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:465
|
||||
#: fileread.cc:463
|
||||
#, c-format
|
||||
msgid "cannot find -l%s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:492
|
||||
#: fileread.cc:490
|
||||
#, c-format
|
||||
msgid "cannot find %s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:503
|
||||
#: fileread.cc:501
|
||||
#, c-format
|
||||
msgid "cannot open %s: %s"
|
||||
msgstr ""
|
||||
@ -336,45 +336,50 @@ msgid "pthread_cond_broadcast failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#. FIXME: This needs to specify the location somehow.
|
||||
#: i386.cc:160 i386.cc:1480 x86_64.cc:172 x86_64.cc:1370
|
||||
#: i386.cc:160 i386.cc:1484 x86_64.cc:172 x86_64.cc:1373
|
||||
msgid "missing expected TLS relocation"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:806 x86_64.cc:761 x86_64.cc:975
|
||||
#: i386.cc:810 x86_64.cc:764 x86_64.cc:978
|
||||
#, c-format
|
||||
msgid "%s: unsupported reloc %u against local symbol"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:913 i386.cc:1209 x86_64.cc:886 x86_64.cc:1157
|
||||
#: i386.cc:917 i386.cc:1213 x86_64.cc:889 x86_64.cc:1160
|
||||
#, c-format
|
||||
msgid "%s: unexpected reloc %u in object file"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1052 x86_64.cc:989 x86_64.cc:1253
|
||||
#: i386.cc:1056 x86_64.cc:992 x86_64.cc:1256
|
||||
#, c-format
|
||||
msgid "%s: unsupported reloc %u against global symbol %s"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1363
|
||||
#: i386.cc:1367
|
||||
#, c-format
|
||||
msgid "%s: unsupported RELA reloc section"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1620 x86_64.cc:1569
|
||||
#: i386.cc:1627 x86_64.cc:1575
|
||||
#, c-format
|
||||
msgid "unexpected reloc %u in object file"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1652 i386.cc:1727 i386.cc:1734 i386.cc:1765 i386.cc:1818
|
||||
#: x86_64.cc:1590 x86_64.cc:1670 x86_64.cc:1694
|
||||
#: i386.cc:1659 i386.cc:1734 i386.cc:1741 i386.cc:1772 i386.cc:1825
|
||||
#: x86_64.cc:1596 x86_64.cc:1676 x86_64.cc:1700
|
||||
#, c-format
|
||||
msgid "unsupported reloc %u"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1742
|
||||
#: i386.cc:1749
|
||||
msgid "both SUN and GNU model TLS relocations"
|
||||
msgstr ""
|
||||
|
||||
#: merge.cc:449
|
||||
#, c-format
|
||||
msgid "%s: %s merged constants size: %lu; input: %zu; output: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: merge.cc:472
|
||||
msgid "mergeable string section length not multiple of character size"
|
||||
msgstr ""
|
||||
@ -383,6 +388,11 @@ msgstr ""
|
||||
msgid "entry in mergeable string section not null terminated"
|
||||
msgstr ""
|
||||
|
||||
#: merge.cc:603
|
||||
#, c-format
|
||||
msgid "%s: %s input: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:53
|
||||
#, c-format
|
||||
msgid "%s: unsupported ELF machine number %d"
|
||||
@ -393,122 +403,122 @@ msgstr ""
|
||||
msgid "%s: %s"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:106
|
||||
#: object.cc:107
|
||||
#, c-format
|
||||
msgid "section name section has wrong type: %u"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:311
|
||||
#: object.cc:315
|
||||
#, c-format
|
||||
msgid "invalid symbol table name index: %u"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:317
|
||||
#: object.cc:321
|
||||
#, c-format
|
||||
msgid "symbol table name section has wrong type: %u"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:397
|
||||
#: object.cc:402
|
||||
#, c-format
|
||||
msgid "section group %u info %u out of range"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:415
|
||||
#: object.cc:420
|
||||
#, c-format
|
||||
msgid "symbol %u name offset %u out of range"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:447
|
||||
#: object.cc:452
|
||||
#, c-format
|
||||
msgid "section %u in section group %u out of range"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:537 reloc.cc:205 reloc.cc:520
|
||||
#: object.cc:542 reloc.cc:206 reloc.cc:530
|
||||
#, c-format
|
||||
msgid "relocation section %u has bad info %u"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:709
|
||||
#: object.cc:713
|
||||
msgid "size of symbols is not multiple of symbol size"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:808
|
||||
#: object.cc:812
|
||||
#, c-format
|
||||
msgid "local symbol %u section name out of range: %u >= %u"
|
||||
msgstr ""
|
||||
|
||||
#. FIXME: Handle SHN_XINDEX.
|
||||
#: object.cc:865
|
||||
#: object.cc:869
|
||||
#, c-format
|
||||
msgid "unknown section index %u for local symbol %u"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:874
|
||||
#: object.cc:878
|
||||
#, c-format
|
||||
msgid "local symbol %u section index %u out of range"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1194
|
||||
#: object.cc:1181
|
||||
#, c-format
|
||||
msgid "%s: incompatible target"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1349
|
||||
#: object.cc:1336
|
||||
#, c-format
|
||||
msgid "%s: unsupported ELF file type %d"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1368 object.cc:1414 object.cc:1448
|
||||
#: object.cc:1355 object.cc:1401 object.cc:1435
|
||||
#, c-format
|
||||
msgid "%s: ELF file too short"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1376
|
||||
#: object.cc:1363
|
||||
#, c-format
|
||||
msgid "%s: invalid ELF version 0"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1378
|
||||
#: object.cc:1365
|
||||
#, c-format
|
||||
msgid "%s: unsupported ELF version %d"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1385
|
||||
#: object.cc:1372
|
||||
#, c-format
|
||||
msgid "%s: invalid ELF class 0"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1391
|
||||
#: object.cc:1378
|
||||
#, c-format
|
||||
msgid "%s: unsupported ELF class %d"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1398
|
||||
#: object.cc:1385
|
||||
#, c-format
|
||||
msgid "%s: invalid ELF data encoding"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1404
|
||||
#: object.cc:1391
|
||||
#, c-format
|
||||
msgid "%s: unsupported ELF data encoding %d"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1424
|
||||
#: object.cc:1411
|
||||
#, c-format
|
||||
msgid "%s: not configured to support 32-bit big-endian object"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1437
|
||||
#: object.cc:1424
|
||||
#, c-format
|
||||
msgid "%s: not configured to support 32-bit little-endian object"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1458
|
||||
#: object.cc:1445
|
||||
#, c-format
|
||||
msgid "%s: not configured to support 64-bit big-endian object"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:1471
|
||||
#: object.cc:1458
|
||||
#, c-format
|
||||
msgid "%s: not configured to support 64-bit little-endian object"
|
||||
msgstr ""
|
||||
@ -856,47 +866,47 @@ msgstr ""
|
||||
msgid "--threads not supported"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1467
|
||||
#: output.cc:1478
|
||||
#, c-format
|
||||
msgid "invalid alignment %lu for section \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2334
|
||||
#: output.cc:2383
|
||||
#, c-format
|
||||
msgid "%s: open: %s"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2354
|
||||
#: output.cc:2403
|
||||
#, c-format
|
||||
msgid "%s: mremap: %s"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2390
|
||||
#: output.cc:2439
|
||||
#, c-format
|
||||
msgid "%s: lseek: %s"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2393 output.cc:2430
|
||||
#: output.cc:2442 output.cc:2479
|
||||
#, c-format
|
||||
msgid "%s: write: %s"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2401
|
||||
#: output.cc:2450
|
||||
#, c-format
|
||||
msgid "%s: mmap: %s"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2411
|
||||
#: output.cc:2460
|
||||
#, c-format
|
||||
msgid "%s: munmap: %s"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2428
|
||||
#: output.cc:2477
|
||||
#, c-format
|
||||
msgid "%s: write: unexpected 0 return-value"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:2440
|
||||
#: output.cc:2489
|
||||
#, c-format
|
||||
msgid "%s: close: %s"
|
||||
msgstr ""
|
||||
@ -912,27 +922,27 @@ msgid "%s: ordinary object found in input group"
|
||||
msgstr ""
|
||||
|
||||
#. Here we have to handle any other input file types we need.
|
||||
#: readsyms.cc:244
|
||||
#: readsyms.cc:242
|
||||
#, c-format
|
||||
msgid "%s: not an object or archive"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:224 reloc.cc:538
|
||||
#: reloc.cc:225 reloc.cc:548
|
||||
#, c-format
|
||||
msgid "relocation section %u uses unexpected symbol table %u"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:239 reloc.cc:556
|
||||
#: reloc.cc:240 reloc.cc:566
|
||||
#, c-format
|
||||
msgid "unexpected entsize for reloc section %u: %lu != %u"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:248 reloc.cc:565
|
||||
#: reloc.cc:249 reloc.cc:575
|
||||
#, c-format
|
||||
msgid "reloc section %u size %lu uneven"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:759
|
||||
#: reloc.cc:839
|
||||
#, c-format
|
||||
msgid "reloc section size %zu is not a multiple of reloc size %d\n"
|
||||
msgstr ""
|
||||
@ -974,82 +984,82 @@ msgid ""
|
||||
"T"
|
||||
msgstr ""
|
||||
|
||||
#: stringpool.cc:535
|
||||
#: stringpool.cc:537
|
||||
#, c-format
|
||||
msgid "%s: %s entries: %zu; buckets: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: stringpool.cc:539
|
||||
#: stringpool.cc:541
|
||||
#, c-format
|
||||
msgid "%s: %s entries: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: stringpool.cc:542
|
||||
#: stringpool.cc:544
|
||||
#, c-format
|
||||
msgid "%s: %s Stringdata structures: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:595
|
||||
#: symtab.cc:603
|
||||
#, c-format
|
||||
msgid "bad global symbol name offset %u at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:673
|
||||
#: symtab.cc:682
|
||||
msgid "too few symbol versions"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:702
|
||||
#: symtab.cc:711
|
||||
#, c-format
|
||||
msgid "bad symbol name offset %u at %zu"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:756
|
||||
#: symtab.cc:765
|
||||
#, c-format
|
||||
msgid "versym for symbol %zu out of range: %u"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:764
|
||||
#: symtab.cc:773
|
||||
#, c-format
|
||||
msgid "versym for symbol %zu has no name: %u"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1482 symtab.cc:1698
|
||||
#: symtab.cc:1493 symtab.cc:1709
|
||||
#, c-format
|
||||
msgid "%s: unsupported symbol section 0x%x"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1822
|
||||
#: symtab.cc:1833
|
||||
#, c-format
|
||||
msgid "%s: undefined reference to '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1907
|
||||
#: symtab.cc:1918
|
||||
#, c-format
|
||||
msgid "%s: symbol table entries: %zu; buckets: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1910
|
||||
#: symtab.cc:1921
|
||||
#, c-format
|
||||
msgid "%s: symbol table entries: %zu\n"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1979
|
||||
#: symtab.cc:1990
|
||||
#, c-format
|
||||
msgid ""
|
||||
"while linking %s: symbol '%s' defined in multiple places (possible ODR "
|
||||
"violation):"
|
||||
msgstr ""
|
||||
|
||||
#: target-reloc.h:211
|
||||
#: target-reloc.h:212
|
||||
#, c-format
|
||||
msgid "reloc has bad offset %zu"
|
||||
msgstr ""
|
||||
|
||||
#: tls.h:58
|
||||
#: tls.h:59
|
||||
msgid "TLS relocation out of range"
|
||||
msgstr ""
|
||||
|
||||
#: tls.h:72
|
||||
#: tls.h:73
|
||||
msgid "TLS relocation against invalid instruction"
|
||||
msgstr ""
|
||||
|
||||
@ -1073,12 +1083,12 @@ msgstr ""
|
||||
msgid "%s failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: x86_64.cc:1278
|
||||
#: x86_64.cc:1281
|
||||
#, c-format
|
||||
msgid "%s: unsupported REL reloc section"
|
||||
msgstr ""
|
||||
|
||||
#: x86_64.cc:1742
|
||||
#: x86_64.cc:1748
|
||||
#, c-format
|
||||
msgid "unsupported reloc type %u"
|
||||
msgstr ""
|
||||
|
@ -480,10 +480,18 @@ Symbol_table::add_from_object(Object* object,
|
||||
// NAME/NULL point to NAME/VERSION.
|
||||
insdef.first->second = ret;
|
||||
}
|
||||
else if (insdef.first->second != ret)
|
||||
else if (insdef.first->second != ret
|
||||
&& insdef.first->second->is_undefined())
|
||||
{
|
||||
// This is the unfortunate case where we already have
|
||||
// entries for both NAME/VERSION and NAME/NULL.
|
||||
// entries for both NAME/VERSION and NAME/NULL. Note
|
||||
// that we don't want to combine them if the existing
|
||||
// symbol is going to override the new one. FIXME: We
|
||||
// currently just test is_undefined, but this may not do
|
||||
// the right thing if the existing symbol is from a
|
||||
// shared library and the new one is from a regular
|
||||
// object.
|
||||
|
||||
const Sized_symbol<size>* sym2;
|
||||
sym2 = this->get_sized_symbol SELECT_SIZE_NAME(size) (
|
||||
insdef.first->second
|
||||
|
@ -482,6 +482,26 @@ flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \
|
||||
chmod a+x $@
|
||||
test -s $@
|
||||
|
||||
# Test symbol versioning.
|
||||
check_PROGRAMS += ver_test
|
||||
ver_test_SOURCES = ver_test_main.cc
|
||||
ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
|
||||
ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so
|
||||
ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld
|
||||
$(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so
|
||||
ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so
|
||||
$(CXXLINK) -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so
|
||||
ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script
|
||||
$(CXXLINK) -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o
|
||||
ver_test_1.o: ver_test_1.cc
|
||||
$(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
ver_test_2.o: ver_test_2.cc
|
||||
$(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
ver_test_3.o: ver_test_3.cc
|
||||
$(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
ver_test_4.o: ver_test_4.cc
|
||||
$(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
|
||||
endif GCC
|
||||
endif NATIVE_LINKER
|
||||
|
@ -166,9 +166,12 @@ check_PROGRAMS = object_unittest$(EXEEXT) $(am__EXEEXT_1) \
|
||||
|
||||
# The specialfile output has a tricky case when we also compress debug
|
||||
# sections, because it requires output-file resizing.
|
||||
|
||||
# Test symbol versioning.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_10 = flagstest_compress_debug_sections \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test
|
||||
subdir = testsuite
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
@ -229,7 +232,8 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
|
||||
@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__EXEEXT_6 = tls_shared_nonpic_test$(EXEEXT)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_7 = flagstest_compress_debug_sections$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test$(EXEEXT)
|
||||
basic_pic_test_SOURCES = basic_pic_test.c
|
||||
basic_pic_test_OBJECTS = basic_pic_test.$(OBJEXT)
|
||||
basic_pic_test_LDADD = $(LDADD)
|
||||
@ -467,6 +471,10 @@ am__two_file_test_SOURCES_DIST = two_file_test_1.cc two_file_test_2.cc \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT)
|
||||
two_file_test_OBJECTS = $(am_two_file_test_OBJECTS)
|
||||
two_file_test_LDADD = $(LDADD)
|
||||
am__ver_test_SOURCES_DIST = ver_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main.$(OBJEXT)
|
||||
ver_test_OBJECTS = $(am_ver_test_OBJECTS)
|
||||
am__weak_test_SOURCES_DIST = weak_test.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_test.$(OBJEXT)
|
||||
@ -513,7 +521,7 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c \
|
||||
$(two_file_shared_2_pic_1_test_SOURCES) \
|
||||
$(two_file_shared_2_test_SOURCES) \
|
||||
$(two_file_static_test_SOURCES) $(two_file_test_SOURCES) \
|
||||
$(weak_test_SOURCES)
|
||||
$(ver_test_SOURCES) $(weak_test_SOURCES)
|
||||
DIST_SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c \
|
||||
basic_static_pic_test.c basic_static_test.c basic_test.c \
|
||||
$(am__constructor_static_test_SOURCES_DIST) \
|
||||
@ -548,7 +556,7 @@ DIST_SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c \
|
||||
$(am__two_file_shared_2_pic_1_test_SOURCES_DIST) \
|
||||
$(am__two_file_shared_2_test_SOURCES_DIST) \
|
||||
$(am__two_file_static_test_SOURCES_DIST) \
|
||||
$(am__two_file_test_SOURCES_DIST) \
|
||||
$(am__two_file_test_SOURCES_DIST) $(am__ver_test_SOURCES_DIST) \
|
||||
$(am__weak_test_SOURCES_DIST)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
@ -893,6 +901,10 @@ object_unittest_SOURCES = object_unittest.cc
|
||||
@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
|
||||
@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_SOURCES = ver_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
@ -1074,6 +1086,9 @@ two_file_static_test$(EXEEXT): $(two_file_static_test_OBJECTS) $(two_file_static
|
||||
two_file_test$(EXEEXT): $(two_file_test_OBJECTS) $(two_file_test_DEPENDENCIES)
|
||||
@rm -f two_file_test$(EXEEXT)
|
||||
$(CXXLINK) $(two_file_test_LDFLAGS) $(two_file_test_OBJECTS) $(two_file_test_LDADD) $(LIBS)
|
||||
ver_test$(EXEEXT): $(ver_test_OBJECTS) $(ver_test_DEPENDENCIES)
|
||||
@rm -f ver_test$(EXEEXT)
|
||||
$(CXXLINK) $(ver_test_LDFLAGS) $(ver_test_OBJECTS) $(ver_test_LDADD) $(LIBS)
|
||||
weak_test$(EXEEXT): $(weak_test_OBJECTS) $(weak_test_DEPENDENCIES)
|
||||
@rm -f weak_test$(EXEEXT)
|
||||
$(CXXLINK) $(weak_test_LDFLAGS) $(weak_test_OBJECTS) $(weak_test_LDADD) $(LIBS)
|
||||
@ -1105,6 +1120,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_main.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_main.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_test.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@ -1522,6 +1538,20 @@ uninstall-am: uninstall-info-am
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< --compress-debug-sections=zlib 2>&1 | cat > $@
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ chmod a+x $@
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -s $@
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.o: ver_test_1.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.o: ver_test_2.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_3.o: ver_test_3.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.o: ver_test_4.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
40
gold/testsuite/ver_test.h
Normal file
40
gold/testsuite/ver_test.h
Normal file
@ -0,0 +1,40 @@
|
||||
// basic_test.cc -- a test case for gold
|
||||
|
||||
// Copyright 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
|
||||
#ifdef USE_TRACE
|
||||
#include <cstdio>
|
||||
#define TRACE printf("In %s, %s()\n", __FILE__, __FUNCTION__);
|
||||
#else
|
||||
#define TRACE
|
||||
#endif
|
||||
|
||||
extern bool t1();
|
||||
extern bool t2();
|
||||
extern bool t3();
|
||||
|
||||
extern "C" {
|
||||
|
||||
extern int t1_2();
|
||||
extern int t2_2();
|
||||
extern int t3_2();
|
||||
|
||||
}
|
33
gold/testsuite/ver_test_1.cc
Normal file
33
gold/testsuite/ver_test_1.cc
Normal file
@ -0,0 +1,33 @@
|
||||
// basic_test.cc -- a test case for gold
|
||||
|
||||
// Copyright 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
|
||||
#include "ver_test.h"
|
||||
|
||||
// Calls an unversioned function in file1 that overrides
|
||||
// a versioned function in file2.
|
||||
|
||||
bool
|
||||
t1()
|
||||
{
|
||||
TRACE
|
||||
return t1_2() == 11;
|
||||
}
|
40
gold/testsuite/ver_test_2.cc
Normal file
40
gold/testsuite/ver_test_2.cc
Normal file
@ -0,0 +1,40 @@
|
||||
// basic_test.cc -- a test case for gold
|
||||
|
||||
// Copyright 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
|
||||
#include "ver_test.h"
|
||||
|
||||
#if 0
|
||||
__asm__(".symver t1_2_a,t1_2@VER2");
|
||||
|
||||
extern "C"
|
||||
int
|
||||
t1_2_a();
|
||||
|
||||
#define t1_2 t1_2_a
|
||||
#endif
|
||||
|
||||
int
|
||||
t3_2()
|
||||
{
|
||||
TRACE
|
||||
return t1_2();
|
||||
}
|
31
gold/testsuite/ver_test_2.script
Normal file
31
gold/testsuite/ver_test_2.script
Normal file
@ -0,0 +1,31 @@
|
||||
## basic_test.cc -- a test case for gold
|
||||
|
||||
## Copyright 2007 Free Software Foundation, Inc.
|
||||
## Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
## This file is part of gold.
|
||||
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program; if not, write to the Free Software
|
||||
## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
## MA 02110-1301, USA.
|
||||
|
||||
VER1 {
|
||||
};
|
||||
|
||||
VER2 {
|
||||
global:
|
||||
t1_2;
|
||||
t3_2;
|
||||
} VER1;
|
||||
|
33
gold/testsuite/ver_test_3.cc
Normal file
33
gold/testsuite/ver_test_3.cc
Normal file
@ -0,0 +1,33 @@
|
||||
// basic_test.cc -- a test case for gold
|
||||
|
||||
// Copyright 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
|
||||
#include "ver_test.h"
|
||||
|
||||
int
|
||||
t1_2() __attribute((visibility("hidden")));
|
||||
|
||||
int
|
||||
t1_2()
|
||||
{
|
||||
TRACE
|
||||
return 11;
|
||||
}
|
53
gold/testsuite/ver_test_4.cc
Normal file
53
gold/testsuite/ver_test_4.cc
Normal file
@ -0,0 +1,53 @@
|
||||
// basic_test.cc -- a test case for gold
|
||||
|
||||
// Copyright 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
|
||||
#include "ver_test.h"
|
||||
|
||||
__asm__(".symver t1_2_a,t1_2@@VER2");
|
||||
|
||||
extern "C"
|
||||
int
|
||||
t1_2_a()
|
||||
{
|
||||
TRACE
|
||||
return 12;
|
||||
}
|
||||
|
||||
__asm__(".symver t2_2_a,t2_2@VER1");
|
||||
|
||||
extern "C"
|
||||
int
|
||||
t2_2_a()
|
||||
{
|
||||
TRACE
|
||||
return 21;
|
||||
}
|
||||
|
||||
__asm__(".symver t2_2_b,t2_2@@VER2");
|
||||
|
||||
extern "C"
|
||||
int
|
||||
t2_2_b()
|
||||
{
|
||||
TRACE
|
||||
return 22;
|
||||
}
|
35
gold/testsuite/ver_test_4.script
Normal file
35
gold/testsuite/ver_test_4.script
Normal file
@ -0,0 +1,35 @@
|
||||
## basic_test.cc -- a test case for gold
|
||||
|
||||
## Copyright 2007 Free Software Foundation, Inc.
|
||||
## Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
## This file is part of gold.
|
||||
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program; if not, write to the Free Software
|
||||
## Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
## MA 02110-1301, USA.
|
||||
|
||||
VER1 {
|
||||
global:
|
||||
t2_2;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
|
||||
VER2 {
|
||||
global:
|
||||
t1_2;
|
||||
t2_2;
|
||||
} VER1;
|
||||
|
54
gold/testsuite/ver_test_main.cc
Normal file
54
gold/testsuite/ver_test_main.cc
Normal file
@ -0,0 +1,54 @@
|
||||
// basic_test.cc -- a test case for gold
|
||||
|
||||
// Copyright 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "ver_test.h"
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
assert(t1());
|
||||
assert(t2());
|
||||
assert(t3());
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Calls a function in file2 that has two versions and verifies
|
||||
// that the default version is called.
|
||||
|
||||
bool
|
||||
t2()
|
||||
{
|
||||
TRACE
|
||||
return t2_2() == 22;
|
||||
}
|
||||
|
||||
// Call a function in a shared library that calls explicitly
|
||||
// the version of t1_2() defined in another shared library.
|
||||
|
||||
bool
|
||||
t3()
|
||||
{
|
||||
TRACE
|
||||
return t3_2() == 12;
|
||||
}
|
@ -1483,7 +1483,10 @@ Target_x86_64::Relocate::relocate(const Relocate_info<64, false>* relinfo,
|
||||
case elfcpp::R_X86_64_PLT32:
|
||||
gold_assert(gsym == NULL
|
||||
|| gsym->has_plt_offset()
|
||||
|| gsym->final_value_is_known());
|
||||
|| gsym->final_value_is_known()
|
||||
|| (gsym->is_defined()
|
||||
&& !gsym->is_from_dynobj()
|
||||
&& !gsym->is_preemptible()));
|
||||
// Note: while this code looks the same as for R_X86_64_PC32, it
|
||||
// behaves differently because psymval was set to point to
|
||||
// the PLT entry, rather than the symbol, in Scan::global().
|
||||
|
Loading…
Reference in New Issue
Block a user