Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold fc76f5a866 Debugger: Support for reading symbols from core file images
* New class ElfSymbolLookup. Given a data source, the address of a
  symbol table, symbol hash table, string table, and a few more details
  it provides access to the symbol information.
* CoreFile: Add CreateSymbolLookup(). Creates an ElfSymbolLookup for a
  specified image.
* CoreFileDebuggerInterface: Implement GetSymbolInfos() for regular
  images (no commpage yet) via the new functionality.
2016-04-29 22:32:15 +02:00
Ingo Weinhold a0c364c70d Core file images note: Add text delta field 2016-04-29 22:32:15 +02:00
Ingo Weinhold 9266cd66c7 extended_image_info: Add text_delta field
Needed to offset a symbol address read from the symbol table to the
actual load address.
2016-04-29 22:32:14 +02:00
Ingo Weinhold 42f9500235 Debugger: CoreFile: read symbol and string table addresses 2016-04-27 02:17:15 +02:00
Ingo Weinhold 5cde7a856d Add symbol and string table addresses to core file 2016-04-27 02:16:54 +02:00
Ingo Weinhold 8c6cb8af01 runtime loader: Register extended image info with kernel
Add structure extended_image_info which extends image_info by the
fields symbol_table, symbol_hash, string_table.
2016-04-27 02:16:09 +02:00
Ingo Weinhold 82185a52e2 Future proofing core file format
* The Haiku specific notes contain a structure size field, now.
* Change the type of the count and size fields in the Haiku specific
  notes to uint32 also for 64 bit ELF. The size field for a note is a
  uint32 anyway.
2016-04-27 00:55:23 +02:00
Ingo Weinhold 6d5951d612 Debugger: Handle RefsReceived(), opening core files 2016-04-26 23:48:41 +02:00
Ingo Weinhold b7e6e93165 MIME type for core files
Icon wanted!
2016-04-26 23:48:04 +02:00
Ingo Weinhold 1a899ed474 Debugger: Beginning of core file support
* DebuggerInterface: Add method IsPostMortem() to be able to
  descriminate between live and post mortem debugging.
* Add DebuggerInterface implementation CoreFileDebuggerInterface which
  provides information from a core file.
* TeamDebugger: Don't start the debug event thread when debugging post
  mortem.
* Debugger: New command line variant "Debugger --core <file path>",
  which starts a team debugger using the core file.

There are a few issues:
* I didn't see an easy way to integrate with the new
  TargetHostInterface framework and I didn't want to get into Rene's
  way changing stuff. As a side effect core file debug windows are not
  counted and Debugger will quit when only those are left, respectively
  will additionally open a teams window on start-up.
* There aren't any symbols yet. We can't use the debug kit
  functionality, since it isn't bitness/endianess agnostic. So either
  it needs to be adjusted or ported over to Debugger.
2016-04-24 18:48:37 +02:00
Ingo Weinhold 3d26e83096 Debugger: TeamInfo: Add SetTo() version
... that doesn't expect a team_info.
2016-04-24 18:35:45 +02:00
Ingo Weinhold 86fe52b6bc Debugger: Add class CoreFile
Reads data from Haiku specific core files.
2016-04-24 18:34:51 +02:00
Ingo Weinhold 05c7cd7647 Debugger: Make ElfFile more flexible
* It was previously geared towards shared object files. Now it is
  fairly agostic and also accepts e.g. files without sections and
  different endianess.
* The handling of 32 vs. 64 bit files works a bit differently now.
  There're structs ElfClass32 and ElfClass64 now which provide the
  types for the respective bitness.
* Add a few more getters.
2016-04-24 18:34:07 +02:00
Ingo Weinhold 6dc2384f6e debug server: Offer option to write a core file
... when a team crashes/hits a debug event.
2016-04-24 18:24:50 +02:00
Ingo Weinhold 467fe4ca0c kernel: Add core dump facility
* Add function core_dump_write_core_file(). It writes a core file for
  the current thread's team. The file format is similar to that of
  other OSs (i.e. ELF with PT_LOAD segments and a PT_NOTE segment), but
  most of the notes are Haiku specific (infos for team, areas, images,
  threads). More data will probably need to be added.
* Add team flag TEAM_FLAG_DUMP_CORE, thread flag
  THREAD_FLAGS_TRAP_FOR_CORE_DUMP, and Team property coreDumpCondition,
  a condition variable available while a core dump is progress. A
  thread that finds its flag THREAD_FLAGS_TRAP_FOR_CORE_DUMP set before
  exiting the kernel to userland calls core_dump_trap_thread(), which
  blocks on the condition variable until the core dump has finished. We
  need the team's threads to stop so we can get their CPU state (and
  have a generally unchanging team state while writing the core file).
* Add user debugger message B_DEBUG_WRITE_CORE_FILE. It causes
  core_dump_write_core_file() to be called for the team.
* Dumping core as an immediate effect of a terminal signal has not been
  implemented yet, but that should be fairly straight forward.
2016-04-24 18:22:14 +02:00
Ingo Weinhold ac1f1a926e kernel: +image_iterate_through_team_images()
Like image_iterate_through_images(), but iterates though the images of
the given team only.
2016-04-24 17:30:52 +02:00
Ingo Weinhold 99f00556a4 kernel: +arch_get_thread_debug_cpu_state()
Similar to arch_get_debug_cpu_state(), but the thread whose CPU state
to retrieve is specified. Works only for threads that aren't running,
and on x86-64 we can get the FPU state only when the thread was
interrupted in userland.
Not implemented for the incomplete architecture ports.
2016-04-24 17:29:28 +02:00
Ingo Weinhold 7a187cd629 _user_debug_thread(): Use new signal SIGNAL_DEBUG_THREAD
This resolves a TODO: We used thread_interrupt() to wake up the thread
from an interruptable wait. However, if the thread was already in the
kernel and about to start waiting, that would have no effect and the
thread would wait anyway. Now there's the new non-blockable signal
SIGNAL_DEBUG_THREAD, which is sent to the thread instead, making sure
that thread doesn't start waiting.
2016-04-24 11:54:17 +02:00
Ingo Weinhold 52100b0c0e Terminal: Support paths starting with '~' in hyperlink mode
Implements #12282.
2015-08-03 13:15:59 +02:00
Ingo Weinhold 0721444745 hvif2png: Fix closing of streams
* h2p_close_state():
  - Don't close stdin/stdout.
  - Set in/out to NULL to prevent accidental double closing.
* h2p_open_streams(): Simplify closing on error. No need for
  fclose_quietly().
2015-07-18 09:04:33 +02:00
Ingo Weinhold afdc8efb27 hvif2png: Coding style cleanup 2015-07-18 09:02:59 +02:00
Ingo Weinhold fb29004aaf disk device manager: Remove obsolete include path
virtualdrive hasn't been used for a long time. Should help with #12162.
2015-07-05 09:40:13 +02:00
Ingo Weinhold 96a321df07 bootstrap image: Add remote command execution script
In order to automate the complete bootstrap build process we need a
mechanism to control the second phase which builds the final packages
on the booted bootstrap Haiku. To avoid additional dependencies
(buildbot slave, ssh, rsh,...) we'd have to cross-build, there's now a
pair of simple python scripts that allows executing commands on a remote
machine. The server script (bootstrap_daemon.py) is added to the
bootstrap image and started automatically during the boot.
2014-10-30 16:43:54 +01:00
Ingo Weinhold dfb13a8716 Increase the size of the kernel FD table
With packagefs potentially opening quite a few packages the default of
256 slots is a bit tight. It's 4096 now, which should be safe for a
while, but we might want to consider resizing the table dynamically and
probably even switching to another algorithm for allocating the slots.

Should fix #11328.
2014-10-29 21:07:03 +01:00
Ingo Weinhold 6bbd25f071 Make vfs_resize_fd_table() accessible in the kernel
Also update some types from int to uint32.
2014-10-29 21:07:02 +01:00
Ingo Weinhold 53aae3db4d packagefs: Package::Open(): Also log error code 2014-10-29 16:06:01 +01:00
Ingo Weinhold 7ca277b9ca vm_soft_fault(): remove unused wiredRange parameter 2014-10-29 12:37:25 +01:00
Ingo Weinhold 078a965f65 vm_soft_fault(): Avoid deadlock waiting for wired ranges
* VMArea::AddWaiterIfWired(): Replace the ignoreRange argument by a
flags argument and introduce (currently only) flag
IGNORE_WRITE_WIRED_RANGES. If specified, ranges wired for writing
are ignored. Ignoring just a single specified range doesn't cut it
in vm_soft_fault(), and there aren't any other users of that feature.
* vm_soft_fault(): When having to unmap a page of a lower cache, this
page cannot be wired for writing. So we can safely ignore all
writed-wired ranges, instead of just our own. We even have to do that
in case there's another thread that concurrently tries to write-wire
the same page, since otherwise we'd deadlock waiting for each other.
2014-10-29 12:37:25 +01:00
Ingo Weinhold 8ef857d85c vm_soft_fault(): Avoid inconsistent state when seeing wired page
When we encounter a wired page that we'd have to unmap to map our newly
allocated one, we need to get rid of the latter before unlocking
everything and waiting for the wired page. Otherwise we'd leave things
in an inconsistent state (a page from an upper cache shadowing a mapped
page from a lower cache).
2014-10-29 02:36:09 +01:00
Ingo Weinhold 699b57307e VMAnonymousCache::_MergePagesSmallerConsumer(): Add ASSERT 2014-10-29 02:36:08 +01:00
Ingo Weinhold 9da590f73e Add vm_page_free_etc()
It additionally gets a vm_page_reservation* argument. If not NULL, the
page count of the reservation is incremented for the freed page.
2014-10-29 02:36:08 +01:00
Ingo Weinhold 70d3bd5592 vm_soft_fault(): Missing DEBUG_PAGE_ACCESS_END()
... in case we'd need to unmap a page that is wired.

Fixes the immediate issue of #10977. There's a problem remaining (as
discussed in comment 1): If two threads want to wire the same page at
the same time (which led to the assertion being triggered), they will
now deadlock, waiting for each other to remove the pre-registered
VMAreaWiredRange.
2014-10-29 02:36:08 +01:00
Ingo Weinhold fa80e7b28f x86 kernel args: Increase number of page tables 2014-10-27 10:57:28 +01:00
Ingo Weinhold 4ce1f197fa x86 boot loader: check gKernelArgs.arch_args.pgtables overflow 2014-10-26 22:34:52 +01:00
Ingo Weinhold 1714eaf29e pkgman resolve-dependencies: Add --debug option 2014-10-26 13:41:00 +01:00
Ingo Weinhold f76e8e9d92 Terminal: Fix pagewise scrolling in alternate screen buffer mode
It still used the old modifiers. Now it's shift as elsewhere.
2014-10-26 13:19:45 +01:00
Ingo Weinhold dd15db954b pkgman: Add --debug option for most commands
* Add CommonOptions class and add an instance to Command. It supports a
debug level.
* full-sync, install, search, uninstall, update: Add option --debug.
This allows getting some debug output from the solver in cases where
the result seems weird.
2014-10-26 00:19:35 +02:00
Ingo Weinhold d228f29f6e BPackageManager: Add SetDebugLevel()
Sets the debug level of the solver.
2014-10-26 00:19:35 +02:00
Ingo Weinhold 74b582a4e5 BSolver: Add SetDebugLevel()
In LibsolvSolver set the debug level of the pool.
2014-10-26 00:19:35 +02:00
Ingo Weinhold cd8a7df77d ImageRules: Fix issues where file names may contain parens
Parentheses in target names are considered by Jam to mean an archive
member. We have to explicitly use the M selector to keep that part.

Fixes #10378 (certain keymaps missing on image).
2014-08-10 10:17:26 +02:00
Ingo Weinhold fa50ee854d package: Add checksum command 2014-07-14 00:46:20 +02:00
Ingo Weinhold 03b36acbe6 package recompress: Small cleanup 2014-07-14 00:45:45 +02:00
Ingo Weinhold e1e6c12480 BPackageWriter::Recompress(): Change param to BPositionIO*
Besides that this is a nicer interface, it allows us to get a the HPKG
header as a side effect of initializing the reader, thus preventing
seeking backward in the file. This makes "package recompress - <file>"
work.
2014-07-13 17:57:57 +02:00
Ingo Weinhold 43a6b92c64 PackageReaderImpl: Delay reading sections until ParseContent() 2014-07-13 17:57:56 +02:00
Ingo Weinhold 3cc6297e22 package recompress: Add stdin/stdout support
stdin doesn't work quite yet. We'll need to convince the BPackageReader
to skip parsing the TOC and package attributes sections.
2014-07-13 17:57:56 +02:00
Ingo Weinhold 1606450b32 ReaderImplBase::Init(): Make file size check optional
If the file doesn't support GetSize(), skip the header total size file
size check.
2014-07-13 17:57:56 +02:00
Ingo Weinhold 05b565f4f2 Add private BDataPositionIOWrapper
Implements the BPositionIO interface on top of a BDataIO, requiring the
{Read,Write}At() accesses to be sequential.
2014-07-13 17:57:56 +02:00
Ingo Weinhold 44c4771163 BPackageWriter: Add BPositionIO support 2014-07-13 17:57:55 +02:00
Ingo Weinhold f9ecc54e69 package: Explicitly use B_HPKG_COMPRESSION_NONE 2014-07-12 23:13:11 +02:00
Ingo Weinhold 8f5130edfa package kit: Actually add support for B_HPKG_COMPRESSION_NONE
Until now we always declared in the HPKG header that the package file is
zlib compressed. For uncompressed files we would just store all
individual chunks uncompressed. Now we handle completely uncompressed
files slightly differently: We don't write the redundant chunk size
table anymore. The size savings are minor, but it makes the uncompressed
format read-streamable which may be handy.
2014-07-12 23:12:21 +02:00
Ingo Weinhold e8681d9409 Increase boot loader size for x86* boot floppy a bit 2014-07-12 18:41:09 +02:00
Ingo Weinhold e527b79631 Switch package file accessor classes to use BPositionIO
* PackageFileHeap{Reader,Writer} as well as Package{Reader,Writer} and
  their implementation and super classes do now internally use a
  BPositionIO instead of a FD to access the package file. This provides
  more flexibility needed for features to come.
* BPackageReader has already grown a new Init() version with a
  BPositionIO* parameter.
2014-07-12 15:40:22 +02:00
Ingo Weinhold 01e6d687c0 boot loader: Add pwrite(), lseek(), ftruncate()
ftruncate() is just a stub (needed for BFdIO).
2014-07-12 15:40:22 +02:00
Ingo Weinhold c55a06055f Add private class BFdIO
Simple BPositionIO implementation using the POSIX API on a FD. In effect
similar to BFile, but more easily ported to kernel and boot loader (and
the FD is reusable).
2014-07-12 15:40:21 +02:00
Ingo Weinhold 8546c4160e BPositionIO: Add {Read,Write}AtExactly()
Analoguous to {Read,Write}Exactly(), just for the *At() versions.
2014-07-12 15:40:21 +02:00
Ingo Weinhold 1b50eb7d91 Remove unnecessary zlib build feature dependency 2014-07-12 15:40:21 +02:00
Ingo Weinhold a629567a90 package: Add command recompress
The streaming feature for -0 is missing yet.
2014-07-08 22:00:36 +02:00
Ingo Weinhold cdfeba5a1e BPackageWriter: Add Recompress()
Allows rewriting an existing package file with a different compression.
2014-07-08 22:00:35 +02:00
Ingo Weinhold 2fc2aebcba PackageWriterImpl: Move _Finish() impl to match order in header 2014-07-08 22:00:35 +02:00
Ingo Weinhold f5a20d5ff1 package kit: PackageFileHeapReader::Init(): Sanity checks
Make sure the compressed/uncompressed heap size and the chunk size
table look plausible, so we can rely on the values later. Fixes
potential crashes for corrupt packages.
2014-07-08 22:00:35 +02:00
Ingo Weinhold b04949711d BUrl::IsValid(): Replace with a slightly better dummy impl 2014-07-03 17:39:59 +02:00
Ingo Weinhold c666db88ef BZlibCompressionAlgorithm: Missing NULL check 2014-07-03 17:39:59 +02:00
Ingo Weinhold a5330a8e41 Remove private support kit BUrl
Use the public BUrl from the network kit instead.
2014-07-03 17:39:59 +02:00
Ingo Weinhold 72f6b787cf BUrl: Add missing functionality from support kit BUrl 2014-07-03 17:39:59 +02:00
Ingo Weinhold 2573655b79 Revert "Revert "HttpRequest: support gzip and deflate compression.""
This reverts commit 256080b112.

With the following changes:
* Adjusted to the BZlibCompressionAlgorithm API.
* Add some error handling.
2014-07-03 17:39:58 +02:00
Ingo Weinhold c99f294eb0 BNetBuffer: Restore semantics after DynamicBuffer -> BDataIO 2014-07-03 17:39:58 +02:00
Ingo Weinhold 25d34313d0 DynamicBuffer::Read(): Small optimization (skip 0 case) 2014-07-03 17:39:58 +02:00
Ingo Weinhold 6926863e37 DynamicBuffer::Write(): Fix return type and semantics 2014-07-03 17:39:58 +02:00
Ingo Weinhold 7616c39db6 DynamicBuffer: dos2unix 2014-07-03 17:39:57 +02:00
Ingo Weinhold 739f15e144 Revert "Revert "DynamicBuffer: implement BDataIO""
This reverts commit 747b401e87.
2014-07-03 17:39:57 +02:00
Ingo Weinhold 5c8bfe24ea compression_test: Add option for gzip format 2014-07-01 21:54:58 +02:00
Ingo Weinhold 72cf56a0fd BZlibCompressionAlgorithm: Basic support for gzip format 2014-07-01 21:54:58 +02:00
Ingo Weinhold b3263ad3e1 Switch package kit to BZlibCompressionAlgorithm
... and remove the Zlib{Compressor,Decompressor} API.
2014-06-30 21:55:41 +02:00
Ingo Weinhold 377ecc1e55 Test program for the B[Zlib]CompressionAlgorithm functionality 2014-06-30 21:55:41 +02:00
Ingo Weinhold dcdc33b0af Add B[Zlib]CompressionAlgorithm
* BCompressionAlgorithm is a base class for classes that provide
  compression/decompression functionality. There are methods for
  compressing/decompressing a single buffer and factory methods for
  a compressing/decompressing input/output BDataIO.
* BZlibCompressionAlgorithm is a BCompressionAlgorithm implementation
  using zlib.
2014-06-30 21:55:41 +02:00
Ingo Weinhold 6a89a36aa0 Move package kit Zlib* classes to support kit
Also move to B* namespace and no longer expose the zlib dependency in
the headers.
2014-06-30 21:55:41 +02:00
Ingo Weinhold b773d89eba BDataIO: Add Flush() 2014-06-30 21:55:40 +02:00
Ingo Weinhold 60ccc119b0 packagefs: CachedDataReader: Don't implement ReadData()
It's already done the same way in the base class.
2014-06-30 21:51:17 +02:00
Ingo Weinhold 0dab9e5cb4 package kit: ReaderImplBase: Remove superfluous scratch buffer 2014-06-30 21:51:16 +02:00
Ingo Weinhold 0a62e01902 PackageWriterImpl: Remove superfluous method 2014-06-30 21:51:16 +02:00
Ingo Weinhold f1a12bcfc0 ReaderImplBase::ReadSection(): Small simplification 2014-06-30 21:51:16 +02:00
Ingo Weinhold 5ede33ed15 BDataIO: Hopefully fix native build 2014-06-23 23:18:00 +02:00
Ingo Weinhold 84297881bb Remove BPackageKit::[...]::AbstractDataWriter and friends
* FDDataWriter and ZlibDataWriter weren't used anymore.
* AbstractDataWriter was implemented only by PackageFileHeapWriter,
  which was only used by WriterImplBase.
* Add a PackageFileHeapWriter::AddDataThrows() which has semantics
  equivalent to the previously inherited WriteDataThrows().
2014-06-23 22:58:15 +02:00
Ingo Weinhold 32832cbe47 Remove BPackageKit::BDataOutput
Use BDataIO instead.
2014-06-23 22:58:15 +02:00
Ingo Weinhold 0d8b44e25b BDataIO: Add methods {Read,Write}Exactly() 2014-06-23 22:58:15 +02:00
Ingo Weinhold dec78bb27c Add new error codes B_PARTIAL_{READ,WRITE} 2014-06-23 22:58:15 +02:00
Ingo Weinhold 98759fe6e6 BDataIO: Provide default implementations for Read()/Write()
This makes the interface somewhat more suitable for unidirectional use,
since one doesn't have to implement the other, not needed method.
2014-06-23 22:58:14 +02:00
Ingo Weinhold d2d1af830b Revert "Move ZlibDecompressor to libshared"
This reverts commit 9af2105d36.

Conflicts:
	src/kits/package/Jamfile
2014-06-18 22:13:39 +02:00
Ingo Weinhold 5cd75b56a8 Revert "ZlibDecompressor: also accept gzip format"
This reverts commit 142d59ca90.
2014-06-18 22:13:39 +02:00
Ingo Weinhold 747b401e87 Revert "DynamicBuffer: implement BDataIO"
This reverts commit 36b1f55a18.
2014-06-18 22:13:39 +02:00
Ingo Weinhold 256080b112 Revert "HttpRequest: support gzip and deflate compression."
This reverts commit c3d0dd7a5e.

Conflicts:
	src/kits/network/libnetapi/HttpRequest.cpp
	src/kits/network/libnetapi/Jamfile
2014-06-18 22:13:39 +02:00
Ingo Weinhold 707f60f4e9 Revert "Fix build."
This reverts commit 00dfae0bce.
2014-06-18 22:13:39 +02:00
Ingo Weinhold a05da9f4b2 Revert "...and also fix a mismatched prototype"
This reverts commit 6555120f3b.
2014-06-18 22:13:38 +02:00
Ingo Weinhold 4c235c7497 Revert "Fix more issues detected by gcc4 compiler:"
This reverts commit 19f3bae071.
2014-06-18 22:13:38 +02:00
Ingo Weinhold d5660e67af Revert "build fix follow up on status_t/ssize_t changes."
This reverts commit 7202cfb455.
2014-06-18 22:13:38 +02:00
Ingo Weinhold 94a66563f5 Revert "shared kit: fixed headers dependency."
This reverts commit 675878fcfe.
2014-06-18 22:13:38 +02:00
Ingo Weinhold 3528fd2d66 Revert "Fix one more status_t/ssize_t mixup."
This reverts commit f6658d2c2c.
2014-06-18 22:13:37 +02:00
Ingo Weinhold cc66d3a051 Revert "Style fixes, no functional changes"
This reverts commit 916382a10f.
2014-06-18 22:13:37 +02:00
Ingo Weinhold a01adf34d6 Revert "boot packagefs: Fix zlib dependency declaration"
This reverts commit 0b565a6f51.
2014-06-18 22:13:37 +02:00
Ingo Weinhold f39d7f1096 Revert "boot packagefs: Fix header path in zlib dependency"
This reverts commit aafc3386ef.
2014-06-18 22:13:37 +02:00