Commit Graph

563 Commits

Author SHA1 Message Date
Michael Scire
b8be94ed7e strat: only include windows.h in translation units where actually needed 2022-03-23 09:15:56 -07:00
Michael Scire
8a5d1ec46c fs: utilities for hac2l to print gc headers 2022-03-23 09:15:55 -07:00
Michael Scire
bf95bc3ede fs: add gc validation wrappers for hac2l 2022-03-23 09:15:55 -07:00
Michael Scire
c895603abf fs: add indirection to raw storage open, for hac2l 2022-03-23 09:15:55 -07:00
Michael Scire
8b773a8f33 lz4: update to git-master 2022-03-23 09:15:54 -07:00
Michael Scire
f037d60c75 strat: minor result/overflow check fixes 2022-03-23 09:15:54 -07:00
Michael Scire
ce44fe4ea9 fs: revise allocation-fail result names 2022-03-23 09:15:54 -07:00
Michael Scire
0d2e2df552 strat: revise fs unsupported operation results, add overflow utils 2022-03-23 09:15:53 -07:00
Michael Scire
a759a00e96 fs: fix locking in FileSystemBufferManager 2022-03-23 09:15:53 -07:00
Michael Scire
5febe40d50 fs: fix clang-build, os: StackGuardManager 2022-03-23 09:15:52 -07:00
Michael Scire
8785a53d2b fs: move bitmap classes out of save:: 2022-03-23 09:15:52 -07:00
Michael Scire
a9e2c6a9c0 fs: first pass at compressed storage (works on iridium with wip hac2l code) 2022-03-23 09:15:51 -07:00
Michael Scire
493001fdd7 fssrv: add ExternalKeyManager (rights-id crypto) for hac2l 2022-03-23 09:15:51 -07:00
Michael Scire
bdd66fb5ea symbols: use same strategy on windows as on macOS 2022-03-23 09:15:51 -07:00
Michael Scire
071f9fb2f0 use cxxabi for demangling on linux/windows 2022-03-23 09:15:50 -07:00
Michael Scire
19002a652e Implement working macOS backtrace symbolization 2022-03-23 09:15:50 -07:00
Michael Scire
0cefca205f os: add working stack logic for macOS 2022-03-23 09:15:50 -07:00
Michael Scire
d5b858f5ba fix stack getting on linux, add test 2022-03-23 09:15:50 -07:00
Michael Scire
097e04ab54 diag: fix typo in hos-specific backtrace getter 2022-03-23 09:15:49 -07:00
Michael Scire
1f2822fafe abort/error: print backtrace, abuse templates, overhaul result/diag (macos not done yet) 2022-03-23 09:15:49 -07:00
Michael Scire
cdce4416e0 remove leftover debug print 2022-03-23 09:15:48 -07:00
Michael Scire
7a689dc29e libs: add ongoing work to facilitate hactool rewrite 2022-03-23 09:15:48 -07:00
Michael Scire
78af849848 libs: begin adding capacity for doing crypto on generic os (using externally-preset keys) 2022-03-23 09:15:47 -07:00
Michael Scire
eb768f0e86 fs: add just in case bounds checking to linux/macos dirent read 2022-03-23 09:15:47 -07:00
Michael Scire
5131256383 add basic tests for os::Event/SystemEvent functionality 2022-03-23 09:15:47 -07:00
Michael Scire
d7a9c7ec4c ams: support building unit test programs on windows/linux/macos 2022-03-23 09:15:46 -07:00
Michael Scire
c5ae3c2449 erpt: add automatic report cleanup mechanism on boot (closes #1795) 2022-03-23 09:15:46 -07:00
Michael Scire
936b36fc6e ams_mitm: update to use new NcaFileSystemDriver intf 2022-03-23 09:15:45 -07:00
Michael Scire
9b2c279d81 fs: add Sha256HashGenerator, LZ4 decompressor 2022-03-23 09:15:44 -07:00
Michael Scire
b37eba086f fs: revise NcaFileSystemDriver for latest semantics 2022-03-23 09:15:44 -07:00
Michael Scire
78797b87d7 fssystem: revise allocator logic for latest semantics 2022-03-23 09:15:44 -07:00
Michael Scire
7407ddaf1e fssrv: flesh out the program registry 2022-03-23 09:15:43 -07:00
Michael Scire
c8621b9a5a fssrv: skeleton more program registry logic 2022-03-23 09:15:43 -07:00
Michael Scire
0e957db878 fssrv: add skeleton getters for service object sf::SharedPointers 2022-03-23 09:15:43 -07:00
Michael Scire
5b4528214f fs: implement newer allocator templates 2022-03-23 09:15:42 -07:00
Michael Scire
1e98da6d08 fssrv: skeleton server manager setup/registration 2022-03-23 09:15:42 -07:00
Michael Scire
c9bcd87e73 fs: add skeleton dir for sysmodule code
Please note this isn't likely to immediately be the active ams project.
2022-03-23 09:15:41 -07:00
Michael Scire
9ac47ccc1b lib: add missing semicolon 2022-03-23 09:15:40 -07:00
SciresM
00203fd7c3 Integrate new result macros. (#1780)
* result: try out some experimental shenanigans

* result: sketch out some more shenanigans

* result: see what it looks like to convert kernel to use result conds instead of guards

* make rest of kernel use experimental new macro-ing
2022-03-23 09:15:40 -07:00
Michael Scire
c5030ec4d4 typofix: boogaloo: electric. 2022-03-23 09:15:39 -07:00
Michael Scire
136339ca49 fix typo-bug in HierarchicalSha256Storage::Read 2022-03-23 09:15:39 -07:00
Michael Scire
9436b9a555 ams: deduplicate static initialization logic 2022-01-19 16:28:54 -08:00
Michael Scire
a392646aab sf/cmif: optimize dispatch table walk to use binary search over linear search 2022-01-19 16:28:54 -08:00
Léo Lam
2916512fb7 Minor header fixes to reduce parsing issues with Clang (#1700)
* Work around Clang's incomplete C++20 support for omitting typename

* vapours: fix Clang error about missing return in constexpr function

* stratosphere: fix call to non-constexpr strlen in constexpr function

strlen being constexpr is a non-compliant GCC extension; Clang
explicitly rejects it: https://reviews.llvm.org/D23692

* stratosphere: add a bunch of missing override specifiers

* stratosphere: work around Clang consteval bug

Minimal example: https://godbolt.org/z/MoM64v93M

The issue seems to be that Clang does not consider f(x) to be a
constant expression if x comes from a template argument that isn't
a non-type auto template argument (???)

We can work around this by relaxing GetMessageHeaderForCheck (by using
constexpr instead of consteval). This produces no functional changes
because the result of GetMessageHeaderForCheck() is assigned to a
constexpr variable, so the result is guaranteed to be computed
at compile-time.

* stratosphere: fix missing require clauses in definitions

GCC not requiring the require clauses to be repeated for member
definitions is actually a compiler bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96830

Clang rejects declarations with missing require clauses.

* Fix ALWAYS_INLINE_LAMBDA and parameter list relative order

While GCC doesn't seem to care about the position of the always_inline
attribute relative to the parameter list, Clang is very picky
and requires the attribute to appear after the parameter list
(and before a trailing return type)

* stratosphere: fix static constexpr member variable with incomplete type

GCC accepts this for some reason (because of the lambda?) but Clang
correctly rejects this.
2021-11-30 16:34:43 -08:00
Michael Scire
c542e49ae9 dmnt2: try to avoid writing out of bounds when generating packets 2021-11-03 23:59:56 -07:00
Michael Scire
54783b86f1 dmnt2: detect thread name, add monitor get mapping(s), increase buffer sizes 2021-11-03 23:59:55 -07:00
Michael Scire
cfb192e8a2 dmnt: enable experimental standalone usage of gdbstub, while starlink is in dev 2021-11-03 23:59:53 -07:00
Michael Scire
ceff2f3712 spl: fix legacy physical keyslot compatibility 2021-10-30 11:21:36 -07:00
Michael Scire
f8e294d6fc sprofile: various correctness fixes. 2021-10-29 17:47:14 -07:00
Michael Scire
9cc867eb21 sprofile: fix off-by-one in struct definition, fix GetImportableProfileUrls 2021-10-29 17:47:14 -07:00
Michael Scire
0a0bd74ca2 init: disable fsdev cwd to prevent abort on fsdev usage (fsdev should not be used) 2021-10-27 22:57:18 -07:00
Michael Scire
f68bae342c sprof: update for 13.1.0 (format version 1) 2021-10-26 01:11:19 -07:00
Michael Scire
d71b86281a hos: whoops 2021-10-26 01:11:17 -07:00
Michael Scire
1c768fe276 hos: better safe than sorry 2021-10-26 01:11:17 -07:00
Michael Scire
358cd4d95f hos: allow turning off ams extension hard-reqs for unit testing 2021-10-26 01:11:17 -07:00
Michael Scire
194e58a3e3 kern/test: add wip qemu-virt board support to mesosphere 2021-10-26 01:11:16 -07:00
SciresM
823c0df6b9 kern: avoid constexpr init for many objects (avoids unnecessary memory clear) (#1668) 2021-10-26 01:11:13 -07:00
Michael Scire
ea0de678ac lr: fix EraseRedirection hang introduced by refactoring 2021-10-26 01:11:11 -07:00
Michael Scire
960c5c19f9 ams: improve offsetof style consistency 2021-10-26 01:11:10 -07:00
Michael Scire
21cb300537 constexpr: resign ourselves to gcc dropping void -> T support 2021-10-26 01:11:10 -07:00
Michael Scire
d5ea59d8f8 powctl: remove unused arm_neon header after last commit 2021-10-26 01:11:09 -07:00
Michael Scire
6da57eff75 powctl: don't require arm64 arch for floating -> fixed conversion 2021-10-26 01:11:09 -07:00
Michael Scire
cf765c0946 tipc: implement special-case templating used by 13.0.0 pgl 2021-10-15 23:54:40 -07:00
Michael Scire
dbd0b13002 boot: update for 13.0.0/aula parameter changes (closes #1477) 2021-10-15 23:54:40 -07:00
Michael Scire
17bf5ee002 powctl: integrate 13.0.0 changes (aula params not done yet) 2021-10-15 23:54:40 -07:00
Michael Scire
68e9f7c853 strat: fix some mitm server management logic 2021-10-15 23:54:39 -07:00
Michael Scire
15b3f9545f sm/tipc: minor cleanup 2021-10-15 23:54:39 -07:00
Michael Scire
02c1d19605 strat: don't force fs globals to link into every process 2021-10-15 23:54:38 -07:00
Michael Scire
a9322a7245 sf: prevent emitting mitm/defer code unless server in process supports it 2021-10-15 23:54:38 -07:00
Michael Scire
3bef5b7d5a ams: allow bootloader to merely approximate correct target firmware 2021-10-15 23:54:37 -07:00
Michael Scire
3218308524 loader: refactor ro manager/improve accuracy 2021-10-15 23:54:36 -07:00
Michael Scire
0abb1e474e spl: refactor for accuracy/move into libstrat 2021-10-15 23:54:36 -07:00
Michael Scire
11e9dcfe11 os: add FlushDataCache 2021-10-15 23:54:36 -07:00
Michael Scire
3e33fb6361 strat: use m_ for member variables 2021-10-15 23:54:35 -07:00
Michael Scire
3b5f56ab9f ams: replace most remaining operator & with std::addressof 2021-10-15 23:54:34 -07:00
Michael Scire
02e98d84d7 settings: fix correctness issue in LazyFileAccessor 2021-10-15 23:54:34 -07:00
Michael Scire
5c32ec11ea strat: refactor address taking of form &var[...] 2021-10-15 23:54:34 -07:00
Michael Scire
e2df2f98a3 strat: always use explicit result namespacing 2021-10-15 23:54:33 -07:00
Adubbz
ea0bb620f2 settings: implement KeyValueStore (#1659)
* settings: implement KeyValueStore and dependencies

* settings: update KeyValueStore for recent refactoring

* settings: address feedback
2021-10-15 23:54:33 -07:00
Michael Scire
0a4c2759a1 os: fix mutex push/pop prototypes 2021-10-07 23:38:32 -07:00
Michael Scire
80d72af9f3 cs: prevent exceptions from manifesting 2021-10-07 23:06:30 -07:00
Michael Scire
3fcc3c8e72 boot: save 12KB 2021-10-07 23:06:29 -07:00
Michael Scire
c3583b8604 erpt: save 8KB 2021-10-07 23:06:29 -07:00
Michael Scire
2905319d46 strat: use ams::Main() instead of main(argc, argv) 2021-10-07 23:06:29 -07:00
Michael Scire
8a8631ebcb strat: build sysmodules with -Wextra/-Werror 2021-10-07 23:06:29 -07:00
Michael Scire
843dc8e521 libstrat: fix compilation without pre-compiled header/without lto 2021-10-07 23:06:28 -07:00
Michael Scire
fd1b6d4578 libstrat: enable -Wextra, -Werror
This caught an embarrassingly large number of bugs.
2021-10-07 23:06:28 -07:00
Michael Scire
408173da12 os: fix MapTransferMemory output not being set 2021-10-07 23:06:28 -07:00
Michael Scire
390ce66da1 svc: refactor/rename MemoryInfo fields 2021-10-07 23:06:28 -07:00
Michael Scire
782e449543 strat: remove map namespace, svc: add address space defs 2021-10-07 23:06:27 -07:00
Michael Scire
4ce6273f2b strat: use sf::NativeHandle for ipc templating 2021-10-07 23:06:27 -07:00
Michael Scire
612b9e2f01 strat: prefer os::NativeHandle to Handle/svc::Handle where sensible 2021-10-07 23:06:26 -07:00
Michael Scire
09a9fdb2c3 pm: use svc::LimitableResource where relevant 2021-10-07 23:06:26 -07:00
Michael Scire
5a71876ca8 strat: use svc:: over ::svc 2021-10-07 23:06:26 -07:00
Michael Scire
002422d5dc ams: the copyright^H^H^H^H^H^H^Hmplex plane is the algebraic closure of the reals 2021-10-07 23:06:25 -07:00
Michael Scire
304b0f8016 os: remove ManagedHandle, refactor to use NativeHandle typename 2021-10-07 23:06:25 -07:00
Michael Scire
4390df76ad pm/cfg: simplify initial process id range logic 2021-10-07 23:06:25 -07:00
Michael Scire
28756234d9 strat: automatic program id detection 2021-10-07 23:06:25 -07:00
Michael Scire
828506218f os: adopt nintendo ReaderWriter naming over ReadWrite 2021-10-07 23:06:24 -07:00
Michael Scire
a582429e6d os: amend io region api 2021-10-07 23:06:24 -07:00
Michael Scire
cc4133c1b7 os: improve thread name codegen 2021-10-07 23:06:24 -07:00
Michael Scire
d1c6b77f13 os: implement SharedMemory, update AslrSpaceManager 2021-10-07 23:06:23 -07:00
Michael Scire
b690bc1472 os: fix AttachTransferMemory return type 2021-10-07 23:06:23 -07:00
Michael Scire
6125281acd os: adopt multiwait naming over waitable 2021-10-07 23:06:23 -07:00
Michael Scire
71b389c9e4 os: add tentative IoRegionType 2021-10-07 23:06:22 -07:00
Michael Scire
28edc0ca8f lmem: fix assert with side effects 2021-10-07 23:06:22 -07:00
Michael Scire
c68298a00e stratosphere: use SdkMutex/SdkRecursiveMutex over Mutex 2021-10-07 23:06:22 -07:00
Michael Scire
6fdac55fd1 libstrat: uncomment some asserts 2021-10-07 23:06:21 -07:00
Michael Scire
7665721e03 ams-libs: AMS_ASSERT no longer invokes expression 2021-10-07 23:06:21 -07:00
Michael Scire
3ef8f0f73f os: implement Barrier 2021-10-07 23:06:21 -07:00
Michael Scire
389018db64 os: implement SdkRecursiveMutex 2021-10-07 23:06:21 -07:00
Michael Scire
47bbff43c5 os: add unit tests for ExpandUnsignedValueToAscii 2021-10-07 23:06:20 -07:00
Michael Scire
c357cf7b87 os: implement ExpandUnsignedValueToAscii
Nintendo does this as of latest firmware.

It's desirable because it removes the only usage of util::SNPrintf() from os library,
which means programs which don't otherwise use SNPrintf do not need to link it into .text.

This saves ~0xD40 of .text as of time-of-commit when successfully unlinking, and e.g.
reduces our sm (and other modules) memory size by a page.
2021-10-07 23:06:20 -07:00
Michael Scire
6f53cbbe79 os: implement LightSemaphore 2021-10-07 23:06:20 -07:00
Michael Scire
41495ef51b os: implement LightMessageQueue 2021-10-07 23:06:19 -07:00
Michael Scire
c00d83204f os: refactor MessageQueue to use new MessageQueueHelper template 2021-10-07 23:06:19 -07:00
Michael Scire
9035b840a2 os: tweak LightEvent codegen 2021-10-07 23:06:19 -07:00
Michael Scire
3d6e8d5281 os: implement LightEvent 2021-10-07 23:06:19 -07:00
Michael Scire
57e380b2d6 os: implement ReadWriteBusyMutex 2021-10-07 23:06:18 -07:00
Michael Scire
6c98cd1ce2 os: implement BusyMutex 2021-10-07 23:06:18 -07:00
Michael Scire
dc52a32285 ncm: fix destructor availability 2021-09-19 11:01:04 -07:00
Michael Scire
b579a6d75e svc/kern/dd: remove MapDeviceAddressSpace() 2021-09-19 10:35:39 -07:00
Adubbz
4afce6965f ncm: updated to 13.0.0 2021-09-19 10:35:35 -07:00
Adubbz
66104b830a ncm: skeleton new commands 2021-09-19 10:35:34 -07:00
Michael Scire
a8bccc95ab sprofile: fully reimplement sprof:bg + sprof:sp 2021-09-19 10:35:33 -07:00
Michael Scire
8a35d51406 sprofile: implement non-importer bgagent commands 2021-09-19 10:35:33 -07:00
Michael Scire
196c524768 sprofile: implement OpenProfileUpdateObserver 2021-09-19 10:35:33 -07:00
Michael Scire
6b66af37cd erpt: skeleton sprofile apis 2021-09-19 10:35:32 -07:00
Michael Scire
f85afd2980 boot2: launch nintendo lm from built in system, not none 2021-09-19 10:35:31 -07:00
Michael Scire
2ab649f2b0 cs: fix launching of tio server 2021-09-19 10:35:30 -07:00
Michael Scire
ad9c7eb4dd cs: fix screenshot packet semantics 2021-09-19 10:35:30 -07:00
Michael Scire
c53eeb27f3 cs: implement TakeScreenShot command 2021-09-19 10:35:30 -07:00
Michael Scire
c31069cc88 cs: fix allocator aborts 2021-09-19 10:35:30 -07:00
Michael Scire
7bb3153938 osdbg: implement thread info api 2021-09-19 10:35:27 -07:00
Michael Scire
f29660c335 boot2: launch dmnt.gen2 over dmnt, when using htc 2021-09-19 10:35:26 -07:00
Michael Scire
bd1fab8516 cs: implement GetFirmwareVersion command 2021-09-19 10:35:25 -07:00
Michael Scire
728191da43 scs: implement EventHandlerThread for shell 2021-09-19 10:35:25 -07:00
Michael Scire
a949c14c95 scs: implement DoShellServer 2021-09-19 10:35:25 -07:00
SciresM
277d2193e2 LogManager: implement system module, client api, logging api (#1617)
Some notes:

* Unless `atmosphere!enable_log_manager` is true, Nintendo's log manager will be used instead.
  * This prevents paying memory costs for LM when not enabling logging.
  * To facilitate this, Atmosphere's log manager has a different program id from Nintendo's.
  * `atmosphere!enable_htc` implies `atmosphere!enable_log_manager`.
* LogManager logs to tma, and the SD card (if `lm!enable_sd_card_logging` is true, which it is by default).
* Binary logs are saved to `lm!sd_card_log_output_directory`, which is `atmosphere/binlogs` by default.
2021-09-19 10:35:25 -07:00
Michael Scire
0c0bb8153a fusee: attempt reboot to self if possible, better abort/fatal handlers 2021-09-06 16:32:50 -07:00
Michael Scire
f78be93eac stratosphere: remove 0.19.0 update cleanup logic. 2021-09-06 16:32:49 -07:00
Michael Scire
fe21509991 ams-1.0.0: meso no longer optional, remove conditional logic 2021-09-06 16:32:47 -07:00
Michael Scire
5c215383b2 dmnt: various cheat changes/suggestions that have been cooking a while 2021-08-20 13:34:00 -07:00
Michael Scire
dc3f54a713 ams: std::optional -> util::optional 2021-07-12 01:59:51 -07:00
Michael Scire
2945208d6e erpt: fix 0x100 byte memory leak on creation of new report 2021-07-06 07:28:31 -07:00
Michael Scire
5a133af896 mem: actually fully fix the heap bug, add comments for future self 2021-06-08 08:09:22 -07:00
Michael Scire
b1f5e24044 mem: fix rare crash/logic error in heap allocation code 2021-06-08 08:09:21 -07:00
Michael Scire
156a5ceba2 libstrat: fix override operator new to be noexcept (closes #1494) 2021-06-08 08:09:21 -07:00
Michael Scire
82296aa0ee ams: move around abort handler to avoid linker errors 2021-05-12 09:09:42 -07:00
Michael Scire
07073a7580 sm: update to excise unnecessary library code 2021-05-12 09:09:41 -07:00