1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
Go to file
Zachary Turner 16b6b0d2b3 [CodeView] Correctly compute the name of S_PROCREF symbols.
We have a function which switches on the type of a symbol record
to return a hardcoded offset into the record that contains the
symbol name.  Not all symbols have names to begin with, and for
those records we return -1 for the offset.

Names are used for various things.  Importantly for this particular
bug, a hash of the record name is used as a key for certain hash
tables which are serialied into the PDB file.  One of these hash
tables is for the global symbol stream, which is basically a
collection of S_PROCREF symbols which contain the name of the
symbol, a module, and an address offset.

However, for S_PROCREF symbols, the function to return the offset
of the name was returning -1: basically it wasn't implemented.
As a result of this, all global symbols were hashing to the same
value, essentially it was as if every single global symbol's name
was the empty string.

This manifests in the VS debugger when you try to call a function
(global or member, doesn't matter) through the immediate window
and the debugger simply reports an error because it can't find the
function.  This makes perfect sense, because it is hashing the name
for real, looking in the global symbol hash table, and there is only
1 entry there which corresponds to a symbol whose name is the empty
string.

Fixing this fixes the MSVC debugger in this case.

llvm-svn: 336024
2018-06-29 22:19:02 +00:00
bindings
cmake [cmake] Change WIN32 test to CMAKE_HOST_WIN32 2018-06-29 10:34:37 +00:00
docs Document the git config for Windows to do line-endings correctly. 2018-06-27 19:58:28 +00:00
examples
include [MemorySSA] Add APIs to MemoryPhis to delete incoming blocks/values, and an updater API to remove blocks. 2018-06-29 20:46:16 +00:00
lib [CodeView] Correctly compute the name of S_PROCREF symbols. 2018-06-29 22:19:02 +00:00
projects
resources
runtimes Support for multiarch runtimes layout 2018-06-28 03:11:52 +00:00
test [WebAssembly] Update comments for non-splat pow2 vector test case 2018-06-29 21:27:20 +00:00
tools [dsymutil] Rename conflicting declaration 2018-06-29 17:11:34 +00:00
unittests [SupportTests] Silence -Wsign-compare warnings 2018-06-28 21:03:24 +00:00
utils Make email options of find_interesting_reviews more flexible. 2018-06-29 07:16:27 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Support for multiarch runtimes layout 2018-06-28 03:11:52 +00:00
CODE_OWNERS.TXT CODE_OWNERS: Take ownership of the MIPS backend 2018-06-21 09:59:44 +00:00
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT Remove myself from the release testers list. (NFC) 2018-06-20 21:25:50 +00:00

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.