Itamar
b306ac9b2b
ptrace: Add PT_POKE
...
PT_POKE writes a single word to the tracee's address space.
Some caveats:
- If the user requests to write to an address in a read-only region, we
temporarily change the page's protections to allow it.
- If the user requests to write to a region that's backed by a
SharedInodeVMObject, we replace the vmobject with a PrivateIndoeVMObject.
2020-04-13 00:53:22 +02:00
Itamar
984ff93406
ptrace: Add PT_PEEK
...
PT_PEEK reads a single word from the tracee's address space and returns
it to the tracer.
2020-04-13 00:53:22 +02:00
Itamar
77f671b462
CPU: Handle breakpoint trap
...
Also, start working on the debugger app.
2020-04-13 00:53:22 +02:00
AnotherTest
364dbe28d6
LibLine: Remove unused cut_mismatching_chars() function
...
This is superceded by the suggest() mechanism
2020-04-13 00:49:24 +02:00
AnotherTest
fa0525b8bf
LibLine: Autocomplete single suggestions
...
`cd /h<tab>` -> `cd /home/`, pressing tab after that would
descend into `/home/' and show `/home/anon/`
2020-04-13 00:49:24 +02:00
Linus Groh
62d0fa5af8
LibWeb: Use specific error classes when throwing exceptions
...
Generally:
- interpreter.throw_exception<JS::Error>("TypeError", "Message");
+ interpreter.throw_exception<JS::TypeError>("Message");
2020-04-13 00:47:53 +02:00
Stephan Unverwerth
f8f65053bd
LibJS: Parse "this" as ThisExpression
2020-04-13 00:45:25 +02:00
Andreas Kling
110ca6b0b6
LibJS: Cache a FlyString for "this" to speed up variable lookup
...
We were hitting strcmp() in every variable lookup to see if the lookup
was for "this". Caching a FlyString("this") turns that check into one
pointer comparison instead. :^)
2020-04-12 20:40:02 +02:00
Andreas Kling
c84b8e597a
LibC: Cache the result of gettid() to avoid syscalls
...
We now use minherit(MAP_INHERIT_ZERO) to create a gettid() cache that
is automatically invalidated on fork(). This is needed since the TID
will be different in a forked child, and so we can't have a stale
cached TID lying around.
This is a gigantic speedup for LibJS (and everyone else too) :^)
2020-04-12 20:24:34 +02:00
Andreas Kling
c19b56dc99
Kernel+LibC: Add minherit() and MAP_INHERIT_ZERO
...
This patch adds the minherit() syscall originally invented by OpenBSD.
Only the MAP_INHERIT_ZERO mode is supported for now. If set on an mmap
region, that region will be zeroed out on fork().
2020-04-12 20:22:26 +02:00
Andreas Kling
dd00175ae2
LibWeb: Use an AffineTransform for CanvasRenderingContext2D :^)
...
This will allow us to support complex 2D transforms.
2020-04-12 19:23:39 +02:00
Andreas Kling
6f2c63000d
LibGfx: Add a basic AffineTransform class
...
We can now perform some basic 2D transforms through an affine matrix.
This patch adds translate() and scale() :^)
2020-04-12 19:23:39 +02:00
Andreas Kling
5c780c9ef7
LibGfx: Allow constructing Float{Rect,Point,Size} from integer buddies
2020-04-12 19:23:39 +02:00
Linus Groh
dd7796515f
LibJS: Add console.{debug,info,warn,error}()
2020-04-12 18:42:42 +02:00
Hüseyin ASLITÜRK
8e9d031cb3
LibGfx: Add Bitmap::rotated and Bitmap::flipped
2020-04-12 18:08:11 +02:00
Hüseyin ASLITÜRK
c6944f8cc2
LibGUI: Use parrent window icon for MessageBox dialog icon
2020-04-12 18:08:11 +02:00
Andreas Kling
235ae80e5e
LibGUI: Make TableView ignore custom colors for selected rows
...
This allows them to look selected instead.
2020-04-12 15:23:24 +02:00
Linus Groh
97de93eed1
LibJS: Add js_negative_infinity()
...
Value(-js_infinity().as_double()) is kind of awkward.
2020-04-12 14:39:38 +02:00
Linus Groh
f226746394
LibJS: Handle Infinity in Value::to_number()
2020-04-12 14:39:38 +02:00
Andreas Kling
e880e4c2d2
LibX86: Add a way for Instruction::to_string() to symbolicate addresses
...
This patch adds a pure virtual X86::SymbolProvider that can be passed
to Instruction::to_string(). If the instruction contains what appears
to be a program address, stringification will try to symbolicate that
address via the SymbolProvider.
This makes it possible (and very flexible) to add symbolication to
clients of the disassembler. :^)
2020-04-12 14:20:04 +02:00
Andreas Kling
5390d53a80
LibGUI: Remove debug spam in AbstractView::did_update_model()
2020-04-12 14:20:04 +02:00
Andreas Kling
8e4751a963
LibGUI: Add a way for models to update without invalidating indexes
...
This is really just a workaround to keep SystemMonitor's process table
working right wrt selection retention during resorts (while also doing
full index invalidation on things like ProfileViewer inversion.)
It's starting to feel like the model abstraction is not super great
and we'll need a better approach if we want to actually build some more
dynamic functionality into our views.
2020-04-12 12:03:33 +02:00
Andreas Kling
ff33c5b286
LibJS: Let's show a few more decimals when stringifying numeric values
...
I'm not sure what the correct behavior is supposed to be, but at least
this makes printing numbers show some more interesting detail for now.
2020-04-12 10:59:29 +02:00
Brendan Coles
2d699cd5da
LibWeb: Add port blacklist for ResourceLoader::load
...
`ResourceLoader::load` now rejects URLs which specify a `port`
associated with network services known to be vulnerable to
inter-protocol exploitation.
Fixes #1735
2020-04-12 10:33:35 +02:00
Andreas Kling
34d07e35bd
LibX86: Decode RDRAND instruction
...
I was looking at Kernel::get_good_random_bytes() and wondering where
the RDRAND instruction was. :^)
2020-04-11 23:37:00 +02:00
Andreas Kling
8daddcfa0a
LibX86: Fix duplicate '+' in SIB byte disassembly
...
For SIB bytes with base but no index, we were emitting two '+' chars
which looked very off.
2020-04-11 23:11:10 +02:00
Andrew Kaster
827e375297
LibELF: Validate the mapped file in DynamicLoader constructor
...
ELF::DynamicLoader now validates the ELF header and the program headers
in its constructor. The requested program interpreter from the
PT_INTERP program header is now avaiable via a getter. The dynamic
loader program will want to check that this matches its name, for extra
shenanigans checking.
2020-04-11 22:41:05 +02:00
Andrew Kaster
61acca223f
LibELF: Move validation methods to their own file
...
These validate_elf_* methods really had no business being static
methods of ELF::Image. Now that the ELF namespace exists, it makes
sense to just move them to be free functions in the namespace.
2020-04-11 22:41:05 +02:00
Andrew Kaster
21b5909dc6
LibELF: Move ELF classes into namespace ELF
...
This is for consistency with other namespace changes that were made
a while back to the other libraries :)
2020-04-11 22:41:05 +02:00
Brendan Coles
6b0f47683c
LibWeb: Prevent http:// URLs loading scripts sourced from file:// URLs
...
Fixes #1616
2020-04-11 21:10:50 +02:00
Andreas Kling
17b8857dc0
LibVT: Shift+Tab should generate ESC[Z
...
Fixes #1751 .
2020-04-11 21:09:47 +02:00
Linus Groh
c106451daf
LibLine: Cycle backward through suggestions using Shift+Tab
2020-04-11 20:42:17 +02:00
Andrew Kaster
f809231718
LibELF: Return false instead of assert on unrecognized program header
2020-04-11 19:32:28 +02:00
Andreas Kling
c199b0e1aa
LibGUI: Fill whole TableView cells with custom background color
...
This was easier than I expected. :^)
2020-04-11 19:20:40 +02:00
Andreas Kling
3a65e9107e
LibGUI: Respect Model::Role::BackgroundColor
...
This implementation is very gappy, but the basic feature allows us to
highlight cells with a custom background color.
2020-04-11 18:56:15 +02:00
Andreas Kling
5b91d848a7
LibELF: Add a find_symbol() API that finds a Symbol for an address
...
Also add ELFImage::Symbol::raw_data() to get a StringView containing
the entire symbol contents.
2020-04-11 18:45:17 +02:00
AnotherTest
2fdce695d6
LibLine: Display suggestions and cycle between them
...
With extra color (tm)
This commit also patches the users of LibLine to properly use the new
API
2020-04-11 17:15:19 +02:00
AnotherTest
b59a391a78
LibLine: Ask for cursor position once and handle the rest internally
...
Prior to this, writing to stdin while a display refresh was happening
corrupted the input and displayed garbage.
2020-04-11 17:15:19 +02:00
AnotherTest
f946d6ce79
LibLine: Properly handle window resize by not spamming DSRs
...
We have all the information necessary to find our new origin when a
window size change occurs.
2020-04-11 14:29:25 +02:00
AnotherTest
173c65660a
LibLine: Properly show and cleanup suggestions
...
Prior to this, we would display them and never clean then up.
2020-04-11 14:29:25 +02:00
Linus Groh
3b21c4aa56
LibJS: Add console.trace()
2020-04-11 14:10:42 +02:00
Linus Groh
eece424694
LibJS: Make Function and CallFrame aware of their function name
2020-04-11 14:10:42 +02:00
Andreas Kling
4eceea7c62
LibX86: When there are multiple REPZ/REPNZ prefixes, the last one wins
2020-04-11 14:05:10 +02:00
Andreas Kling
1924112d7d
LibX86: Tolerate invalid segment register indices when disassembling
...
While #6 and #7 are not valid segment register, they can still be
encoded in otherwise-valid instructions, so let's tolerate it.
2020-04-11 14:00:20 +02:00
Andreas Kling
d7d7a32d47
LibX86: Disassemble unknown opcodes as "db %#02x"
2020-04-11 13:57:28 +02:00
Andreas Kling
95df0847c5
LibX86: Decode PADDB, PADDW and PADDD
2020-04-11 13:57:20 +02:00
Andreas Kling
16455e91db
LibX86: Don't choke on invalid LOCK prefixes for now
...
This might be interesting information later, but I'm not sure how to
encode it at the moment.
2020-04-11 13:53:12 +02:00
Andreas Kling
f115416db3
LibX86: Fix backwards arguments to ENTER imm16,imm8
2020-04-11 13:51:00 +02:00
Andreas Kling
cf7d042e0f
LibX86: Add 8-bit CMPXCHG and allow LOCK CMPXCHG
2020-04-11 13:46:30 +02:00
Andreas Kling
2ce38d4699
LibX86: Support decoding basic MMX instructions like MOVQ
2020-04-11 13:42:18 +02:00