Commit Graph

103 Commits

Author SHA1 Message Date
dreamsyntax
d946656b87
PPCSymbolDB: Fix callers not updating
Fixes regression from http://github.com/dolphin-emu/dolphin/pull/13821
2025-08-09 09:36:17 -07:00
Alex Harrison
56f04b5406 PPCSymbolDB: Fill in callers after loading map files 2025-07-30 13:43:02 -06:00
JosJuice
9f32562e36 PPCSymbolDB: Don't return non-const pointers
For thread safety, we shouldn't return any pointers or references that
can be used to mutate the state of the PPCSymbolDB. This should be the
final part of making PPCSymbolDB thread safe unless I've missed
something.
2025-07-27 17:03:57 +02:00
JosJuice
fef77a5f20 PPCSymbolDB: Add missing locking
9395238 added locking in some PPCSymbolDB functions that access member
variables, but far from all. To ensure thread safety, this commit adds
the missing locking.
2025-07-27 16:26:47 +02:00
JosJuice
803e6b017b PPCSymbolDB: Reduce lock contention in LoadMap/LoadMapOnBoot
By building the map in a local variable and then swapping it with the
member variable, we avoid the need to hold a lock while building the
map.
2025-07-27 16:26:47 +02:00
JosJuice
59d126d215 PPCSymbolDB: Rename m_write_lock to m_mutex
This mutex needs to be locked both when reading and writing, not just
when writing.
2025-07-27 16:26:46 +02:00
JosJuice
d62e21e7b6 PPCSymbolDB: Wait for locking to succeed
9395238 added a mutex to PPCSymbolDB, and made functions return with an
"empty" result if called while the mutex is locked. This new behavior
has the potential to affect not only less important call sites like the
symbol printing mentioned in a comment, but also the JIT deciding if it
should HLE a function.

A later commit in this pull request decreases the amount of lock
contention, reducing the performance impact of this commit.
2025-07-27 16:26:46 +02:00
TryTwo
9395238159 PPCSymbolDB: Add a mutex to prevent m_functions from being accessed by two different threads on boot.
On boot should be the only time this happens.
2025-06-25 12:11:46 -07:00
TryTwo
fe121e4c6e PPCSymbolDB: Move loading map on boot logic from boot.cpp into PPCSymbolDB, as it will be needing a mutex.
Cleanup loading code and reduce amount of signals.

On boot. allow previously loaded map to be kept, if its filename matches. Useful for restarting a game with a large symbol map.
2025-06-25 12:01:16 -07:00
TryTwo
5836ca133c PPCSymbolDB: Move function for finding file path to PPCSymbolDB, so MenuBar doesn't have to randomly access boot.cpp to get the file path. 2025-06-22 11:03:03 -07:00
TryTwo
c9b815526c Debugger CodeViewWidget: Add context options for making and managing Notes. Add popup dialog for editing functions and notes. 2025-06-19 18:00:10 -07:00
TryTwo
040d9a4336 Debugger symbols: Add new symbol type: Notes.. Notes are for naming single instructions, or small groups of instructions.
Notes are separate from function symbols, and can be searched separately.
Unlike functions, notes of different length can overlap each other.
In the instruction window, a note will always display over the function symbol.
2025-06-19 17:55:35 -07:00
Joshua Vandaële
3a1a60d4f8
Fix shadowed variable warnings and missing declarations
- PPCSymbolDB:  Resolve shadowed variable warnings
- PerformanceMetrics:  Resolve shadowed variable warnings
- SWEfbInterface: Add missing declarations
2025-03-27 21:48:08 +01:00
Admiral H. Curtiss
ede963d4db
Merge pull request #13272 from dreamsyntax/ppc-crlf
PPCSymbolDB: Fix loading maps with CRLF endings
2025-01-12 14:26:27 +01:00
dreamsyntax
b9a2d89035 PPCSymbolDB: Fix loading maps with CRLF endings
Symbol maps ending in CRLF were not properly loading on non-windows
systems.
2025-01-10 14:37:58 -07:00
Sepalani
bbf835b30b PPCSymbolDB: Check SplitString result 2025-01-04 17:02:13 +04:00
Sepalani
77e77863dc PPCSymbolDB: Add alignment detection heuristic
Update parse_entry_of in accordance to the sscanf change
2025-01-04 15:32:52 +04:00
Sepalani
5778cb42db PPCSymbolDB: Deduplicate parsing of the 'entry of' string 2025-01-04 15:32:52 +04:00
Sepalani
5c151c11ac PPCSymbolDB: Use ranges in SaveSymbolMap 2025-01-04 15:32:52 +04:00
Amber Brault
1c4bfc35d9 Core: Store object name separately for symbols 2024-11-11 12:36:53 -05:00
Dr. Dystopia
618b41a459 Use 'contains' method 2024-08-14 22:18:28 +02:00
mitaclaw
672be6a8cf PPCSymbolDB: GetDescription by std::string_view
Should save a lot of deep copies.
2024-04-13 00:19:01 -07:00
mitaclaw
c24fa93965 PPCSymbolDB: Move instance to PowerPCManager 2024-03-13 22:58:14 -07:00
mitaclaw
0f36654d2b PPCSymbolDB: Eliminate Redundant Member
This can be accessed through the CPUThreadGuard.
2024-03-06 21:44:53 -08:00
TryTwo
92532c8d3a PPCSymbolDB. Bugfix. Fix .data symbols not loading, unless they were aligned to 4 bytes.
.data symbols point to memory values and can be any byte or length of bytes (such as a string).
2023-12-03 00:03:28 -07:00
Lioncash
41df38cb7c Common: Move DebugInterface.h into Core
The base DebugInterface now depends on the Core's CPUThreadGuard, and
utilities in Common shouldn't be depending on Core facilities. So, we
can move this into the core library instead.
2023-06-12 10:35:31 -04:00
Lioncash
15d1ae3a8a SymbolDB: Add constructors to Symbol
Allows for much more convenient in-place construction.
2023-05-02 16:04:47 -04:00
Lioncash
a14d8003f4 PPCSymbolDB: Use emplace() where applicable
Avoids default constructing an entry in the map that just gets
immediately overwritten. Also gets rid of some redundant map lookups.
2023-05-02 15:51:52 -04:00
Admiral H. Curtiss
23843583bf
PowerPC: Refactor to class, move to System. 2023-04-09 21:48:37 +02:00
Admiral H. Curtiss
8dabd1a025
PowerPC/MMU: Refactor to class, move to System. 2023-03-28 03:47:51 +02:00
JosJuice
7cecb28bdf DolphinQt: Properly lock CPU before accessing emulated memory
This fixes a problem I was having where using frame advance with the
debugger open would frequently cause panic alerts about invalid addresses
due to the CPU thread changing MSR.DR while the host thread was trying
to access memory.

To aid in tracking down all the places where we weren't properly locking
the CPU, I've created a new type (in Core.h) that you have to pass as a
reference or pointer to functions that require running as the CPU thread.
2023-02-12 11:27:50 +01:00
Lioncash
e5b91f00b0 Common: Replace StringBeginsWith/StringEndsWith with std equivalents
Obsoletes these functions in favor of the standard member functions
added in C++20.
2023-01-24 14:58:20 -05:00
Pokechu22
1f17a3bb1e PPCSymbolDB: Fix getting symbol for the last function 2022-07-29 18:41:11 -07:00
Shawn Hoffman
f92541fbd9 StripSpaces: only strip spaces
StripWhitespace maintains old behavior
2022-07-25 18:40:12 -07:00
Léo Lam
86f2c7889d
Merge pull request #8932 from sepalani/cw-map
PPCSymbolDB: Improve symbol map column detection
2021-08-29 23:28:09 +02:00
Sepalani
0b0bab11d8 PPCSymbolDB: Improve symbol map column detection 2021-07-24 17:50:01 +04:00
Pierre Bourdon
e149ad4f0a
treewide: convert GPLv2+ license info to SPDX tags
SPDX standardizes how source code conveys its copyright and licensing
information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX
tags are adopted in many large projects, including things like the Linux
kernel.
2021-07-05 04:35:56 +02:00
Shawn Hoffman
84128d9532 rename Common/File to Common/IOFile 2021-01-27 14:29:48 -08:00
Léo Lam
e00572dd07
Merge pull request #9282 from lioncash/core-log5
Core: Convert logging over to fmt pt.5
2020-11-26 02:06:41 +01:00
Admiral H. Curtiss
45d4746a5d IOFile: Replace all fprintf string writing with calls to WriteString. 2020-11-25 22:11:21 +01:00
Lioncash
ef75e9acd8 Core: Convert logging over to fmt pt.5
Converts the remaining PowerPC code over to fmt-capable logging.

Now, all that's left to convert over are the lingering remnants within
the frontend code.
2020-11-25 13:23:48 -05:00
Shawn Hoffman
79f5ea0474 initialize some variables which need to be 2020-08-23 13:57:05 -07:00
JosJuice
a2a1e04fc9 StringUtil: Use std::string_view more 2019-07-23 14:49:12 +02:00
Lioncash
a9a9b193bb Common/DebugInterface: Use forward declarations where applicable
We're allowed (by the standard) to forward declare types within
std::vector, so we can replace direct includes with forward declarations
and then include the types where they're directly needed.

While we're at it, we can remove an unused inclusion of <cstring>, given
nothing in the header uses anything from it. This also revealed an
indirect inclusion, which this also resolves.
2019-07-08 18:59:11 -04:00
Lioncash
f4ec419929 SymbolDB: Namespace code under the Common namespace
Moves more common code into the Common namespace where it belongs.
2018-05-27 18:01:40 -04:00
Lioncash
e9b9797a86 SymbolDB: Normalize variable names
Normalizes variable naming so that it adheres to our coding style

While we're at it do minor cleanup relating to modified lines
2018-05-27 17:23:10 -04:00
Lioncash
b9aad3310e PowerPC: Move MMU-specifics from PowerPC.h to MMU.h
PowerPC.h at this point is pretty much a general glob of stuff, and it's
unfortunate, since it means pulling in a lot of unrelated header
dependencies and a bunch of other things that don't need to be seen by
things that just want to read memory.

Breaking this out into its own header keeps all the MMU-related stuff
together and also limits the amount of header dependencies being
included (the primary motivation for this being the former reason).
2018-05-17 19:18:55 -04:00
Sepalani
7d36165489 PPCSymbolDB: Do not truncate fixed size symbols
Fix comparison warning
2018-04-10 21:50:33 +04:00
Sepalani
9b8866ba78 PPCSymbolDB: Replace alert with LOG message 2018-04-10 21:49:47 +04:00
Lioncash
0461709c8d PPCSymbolDB: Use auto for iterators where applicable 2018-04-08 22:03:11 -04:00