libroot: make all areas executable for old binaries

* If at least one image is either B_HAIKU_ABI_GCC_2_ANCIENT or
   B_HAIKU_ABI_GCC_2_BEOS almost all areas are marked as executable.
 * B_EXECUTE_AREA and B_STACK_AREA are made public. The former is enforced since
   the introduction of DEP and apps need it to correctly set area protection.
   The latter is currently needed only to recognize stack areas and fix their
   protection in compatibility mode, but may also be useful if an app wants
   to use sigaltstack from POSIX API.
This commit is contained in:
Pawel Dziepak
2013-05-15 00:06:39 +02:00
parent 37848383ca
commit 5d0a1da8bf
13 changed files with 99 additions and 21 deletions
+5 -1
View File
@@ -18,6 +18,8 @@ struct real_time_data;
extern "C" {
#endif
extern int __gCompatibilityMode;
extern char _single_threaded;
/* This determines if a process runs single threaded or not */
@@ -31,7 +33,7 @@ status_t __flatten_process_args(const char* const* args, int32 argCount,
size_t* _flatSize);
void _call_atexit_hooks_for_range(addr_t start, addr_t size);
void __init_env(const struct user_space_program_args *args);
void __init_heap(void);
status_t __init_heap(void);
void __init_heap_post_env(void);
void __init_time(addr_t commPageTable);
@@ -42,6 +44,8 @@ void __init_pwd_backend(void);
void __reinit_pwd_backend_after_fork(void);
void* __arch_get_caller(void);
void __set_stack_protection(void);
#ifdef __cplusplus
}