summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/functionalities/recursion/main.cpp
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2019-07-11 11:16:51 +0000
committerFangrui Song <maskray@google.com>2019-07-11 11:16:51 +0000
commite1ee3837acfea876b279f7f00474fdabd5d76cb5 (patch)
treebfc747c241fdfb44f94868195f55ffa9b0de3160 /lldb/packages/Python/lldbsuite/test/functionalities/recursion/main.cpp
parentbe8275753fe23fb56c4cb5127695dad540b9053c (diff)
downloadbcm5719-llvm-e1ee3837acfea876b279f7f00474fdabd5d76cb5.tar.gz
bcm5719-llvm-e1ee3837acfea876b279f7f00474fdabd5d76cb5.zip
[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 llvm-svn: 365760
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/functionalities/recursion/main.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud