Dimitry Andric f7e8f5d439 Pull in r365760 from upstream lld trunk (by Fangrui Song):
[ELF] Handle non-glob patterns before glob patterns in version
  scripts & fix a corner case of --dynamic-list

  This fixes PR38549, which is silently accepted by ld.bfd.
  This seems correct because it makes sense to let non-glob patterns
  take precedence over glob patterns.

  lld issues an error because
  `assignWildcardVersion(ver, VER_NDX_LOCAL);` is processed before
  `assignExactVersion(ver, v.id, v.name);`.

  Move all assignWildcardVersion() calls after assignExactVersion()
  calls to fix this.

  Also, move handleDynamicList() to the bottom. computeBinding() called
  by includeInDynsym() has this cryptic rule:

      if (versionId == VER_NDX_LOCAL && isDefined() && !isPreemptible)
	return STB_LOCAL;

  Before the change:

  * foo's version is set to VER_NDX_LOCAL due to `local: *`
  * handleDynamicList() is called
    - foo.computeBinding() is STB_LOCAL
    - foo.includeInDynsym() is false
    - foo.isPreemptible is not set (wrong)
  * foo's version is set to V1

  After the change:

  * foo's version is set to VER_NDX_LOCAL due to `local: *`
  * foo's version is set to V1
  * handleDynamicList() is called
    - foo.computeBinding() is STB_GLOBAL
    - foo.includeInDynsym() is true
    - foo.isPreemptible is set (correct)

  Reviewed By: ruiu

  Differential Revision: https://reviews.llvm.org/D64550

This makes it longer necessary to patch the version scripts for the
samba ports, to avoid "duplicate symbol 'pdb_search_init' in version
script" errors.

PR:		230602
MFC after:	3 days
2019-07-13 15:04:30 +00:00
..
2019-02-26 05:59:22 +00:00
2018-12-23 01:05:52 +00:00
2019-06-28 05:11:02 +00:00
2018-10-20 20:49:46 +00:00
2018-09-19 06:42:05 +00:00
2018-11-04 18:24:11 +00:00
2019-06-28 04:52:24 +00:00
2019-06-29 18:41:40 +00:00
2019-06-28 22:41:17 +00:00
2018-05-31 09:11:21 +00:00
2019-05-08 18:46:12 +00:00
2018-08-14 18:58:01 +00:00
2019-04-12 10:13:17 +00:00
2019-03-07 13:36:00 +00:00
2018-11-26 15:33:55 +00:00
2019-05-08 11:04:09 +00:00
2019-02-25 18:41:16 +00:00
2019-05-05 04:14:17 +00:00
2018-05-08 04:52:52 +00:00
2019-07-10 22:36:14 +00:00
2019-07-02 01:12:23 +00:00
2019-07-04 08:40:10 +00:00