diff options
author | Arthur Eubanks <aeubanks@google.com> | 2022-08-15 11:04:50 -0700 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2022-08-16 08:16:18 -0700 |
commit | 9181ce623fd8189252659da7c48de1982597b79c (patch) | |
tree | 3ee2a58a7942653c2109692a89cd4677f2ab120d /lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp | |
parent | ba1c396e09a6dc56d817df0d378f3c826bbacaaa (diff) | |
download | llvm-9181ce623fd8189252659da7c48de1982597b79c.zip llvm-9181ce623fd8189252659da7c48de1982597b79c.tar.gz llvm-9181ce623fd8189252659da7c48de1982597b79c.tar.bz2 |
[Windows] Put init_seg(compiler/lib) in llvm.global_ctors
Currently we treat initializers with init_seg(compiler/lib) as similar
to any other init_seg, they simply have a global variable in the proper
section (".CRT$XCC" for compiler/".CRT$XCL" for lib) and are added to
llvm.used. However, this doesn't match with how LLVM sees normal (or
init_seg(user)) initializers via llvm.global_ctors. This
causes issues like incorrect init_seg(compiler) vs init_seg(user)
ordering due to GlobalOpt evaluating constructors, and the
ability to remove init_seg(compiler/lib) initializers at all.
Currently we use 'A' for priorities less than 200. Use 200 for
init_seg(compiler) (".CRT$XCC") and 400 for init_seg(lib) (".CRT$XCL"),
which do not append the priority to the section name. Priorities
between 200 and 400 use ".CRT$XCC${Priority}". This allows for
some wiggle room for people/future extensions that want to add
initializers between compiler and lib.
Fixes #56922
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D131910
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp')
0 files changed, 0 insertions, 0 deletions