11 Commits
Author SHA1 Message Date
Simon South 5df5223b4b kernel: Don't send SIGTTOU if calling thread is blocking it
POSIX requires SIGTTOU to be sent to a process in a background process
group that tries to change the foreground process group ID associated
with its controlling terminal, unless the process is ignoring SIGTTOU or
the calling thread is blocking it. Previously the code checked the
former condition but not the latter, making it possible for calls to
tcsetpgrp() to get stuck in a loop and never return.

Should fix #3417.

Signed-off-by: Augustin Cavalier <[email protected]>
2015-10-08 19:25:31 -04:00
Simon South 338fd73327 Debugger: Fix TRACE_LOCALS statement.
- Correct a TRACE_LOCALS statement in ValueWriter.cpp and update it to
  match the current definition of ValuePieceLocation.

Fixes #12411.

Signed-off-by: Rene Gollent <[email protected]>
2015-10-08 18:59:54 -04:00
Simon South dbf060a3f7 libroot: Add brk() and sbrk().
This commit replaces the placeholder implementation of sbrk(), which
operated on a process' heap, with real implementations of brk() and
sbrk() that adjust a process' program break.

* unistd.h: Add standard definitions of brk() and sbrk(); include
  stdint.h for intptr_t.
* thread.cpp: Recognize RLIMIT_AS and RLIMIT_DATA resource limits
  (both currently unlimited); order limit identifiers alphabetically.
* arch-specific.cpp: Remove sbrk_hook().
* malloc_debug_api.cpp: Remove sbrk_hook().
* unistd/Jamfile: Build brk.c instead of sbrk.c.
* unistd/brk.c: Add.
* unistd/sbrk.c: Delete (placeholder implementation).
* libroot_stubs.c: Remove sbrk_hook().
* libroot_stubs_legacy.c: Remove sbrk_hook().
* src/tests/.../posix/Jamfile: Build brk_test.c.
* brk_test.c: Add (simple unit test that demonstrates behaviour of
  sbrk()).

Signed-off-by: Jérôme Duval <[email protected]>
2015-11-22 17:59:22 +01:00
Simon South 75c31ae28d system: Build using public elf.h header
Reduce duplication of code by

* Removing from elf_common.h definitions available in os/kernel/elf.h
* Deleting elf32.h and elf64.h
* Renaming elf_common.h to elf_private.h
* Updating source to build using public and private ELF header files
  together

Signed-off-by: Jessica Hamilton <[email protected]>
2015-11-07 11:49:56 +13:00
Simon South e3616ca108 system: Provide elf.h to applications
Make a version of elf.h (assembled from the private header files
elf_common.h, elf32.h and elf64.h, and including Haiku's extensions for
C++) available to applications ported from UNIX.

Signed-off-by: Jessica Hamilton <[email protected]>
2015-11-07 11:49:53 +13:00
Simon South 6abbd31061 unittests: Build copied BAppTest files
This adds to the "unittests" target a dependency on the
"AppTestRunApp3a" (etc.) files meant to be copied as part of the
BApplication test suite so they are generated when "jam unittests" is
run.

* TestsRules: Add "UnitTestDependency" rule.
* testapps/Jamfile: Make unit tests depend on copied files.

Fixes #12441.

Signed-off-by: Adrien Destugues <[email protected]>
2015-11-01 14:19:04 +01:00
Simon South 9e5091d7a3 Build without linker warnings about missing entry symbols.
* BootRules: Use -Xlinker option correctly to specify entry point.
* KernelRules: Build kernel add-ons as shared objects explicitly.

Signed-off-by: Jérôme Duval <[email protected]>
2015-10-29 16:59:59 +01:00
Simon South 874e9521b2 x86_64: Glue code: Keep stack 16-byte-aligned
Signed-off-by: Jérôme Duval <[email protected]>
2015-10-28 21:24:34 +01:00
Simon South 1a28be27e8 Fix unittests build.
Signed-off-by: John Scipione <[email protected]>
2015-10-27 10:28:36 -07:00
Simon South d5447eb9c0 runtime_loader: Do not assume executable has dynamic segment
This prevents a crash when loading a statically linked executable.

Fixes #12287.

Signed-off-by: Adrien Destugues <[email protected]>
2015-10-26 21:23:30 +01:00
Simon South 078b88b12d runtime_loader: Randomly position only relocatable code
The use of an unreliable test for relocatability effectively broke
runtime_loader's support for non-position-independent executables, as it
would insist on randomly positioning these files' segments in memory
anyway causing the program to quickly crash.

With this change runtime_loader uses the object type specified in the
file's header to determine whether its segments can be safely relocated,
restoring support for non-PI executables.

Fixes #12427.

Signed-off-by: Adrien Destugues <[email protected]>
2015-10-26 21:19:25 +01:00