Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 23 additions & 21 deletions qiling/os/posix/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,8 @@ def __str__(self) -> str:
# open flags #
################################

FLAG_UNSUPPORTED = -1

class macos_x86_open_flags(QlPrettyFlag):
O_RDONLY = 0x000000
O_WRONLY = 0x000001
Expand All @@ -473,8 +475,8 @@ class macos_x86_open_flags(QlPrettyFlag):
O_EXCL = 0x000800
O_NOCTTY = 0x020000
O_DIRECTORY = 0x100000
O_BINARY = 0x000000
O_LARGEFILE = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = FLAG_UNSUPPORTED


class linux_x86_open_flags(QlPrettyFlag):
Expand All @@ -491,8 +493,8 @@ class linux_x86_open_flags(QlPrettyFlag):
O_EXCL = 0x000080
O_NOCTTY = 0x000100
O_DIRECTORY = 0x010000
O_BINARY = 0x000000
O_LARGEFILE = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = FLAG_UNSUPPORTED


class linux_arm_open_flags(QlPrettyFlag):
Expand All @@ -509,7 +511,7 @@ class linux_arm_open_flags(QlPrettyFlag):
O_EXCL = 0x000080
O_NOCTTY = 0x000100
O_DIRECTORY = 0x004000
O_BINARY = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = 0x020000


Expand All @@ -527,7 +529,7 @@ class linux_mips_open_flags(QlPrettyFlag):
O_EXCL = 0x000400
O_NOCTTY = 0x000800
O_DIRECTORY = 0x010000
O_BINARY = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = 0x002000


Expand All @@ -545,8 +547,8 @@ class linux_riscv_open_flags(QlPrettyFlag):
O_EXCL = 0x000080
O_NOCTTY = 0x000100
O_DIRECTORY = 0x010000
O_BINARY = 0x000000
O_LARGEFILE = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = FLAG_UNSUPPORTED


class linux_ppc_open_flags(QlPrettyFlag):
Expand All @@ -563,7 +565,7 @@ class linux_ppc_open_flags(QlPrettyFlag):
O_EXCL = 0x000080
O_NOCTTY = 0x000100
O_DIRECTORY = 0x004000
O_BINARY = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = 0x010000


Expand All @@ -581,26 +583,26 @@ class freebsd_x86_open_flags(QlPrettyFlag):
O_EXCL = 0x000800
O_NOCTTY = 0x008000
O_DIRECTORY = 0x20000
O_BINARY = 0x000000
O_LARGEFILE = 0x000000
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = FLAG_UNSUPPORTED


class windows_x86_open_flags(QlPrettyFlag):
O_RDONLY = 0x000000
O_WRONLY = 0x000001
O_RDWR = 0x000002
O_NONBLOCK = 0x000000
O_NONBLOCK = FLAG_UNSUPPORTED
O_APPEND = 0x000008
O_ASYNC = 0x000000
O_SYNC = 0x000000
O_NOFOLLOW = 0x000000
O_ASYNC = FLAG_UNSUPPORTED
O_SYNC = FLAG_UNSUPPORTED
O_NOFOLLOW = FLAG_UNSUPPORTED
O_CREAT = 0x000100
O_TRUNC = 0x000200
O_EXCL = 0x000400
O_NOCTTY = 0x000000
O_DIRECTORY = 0x000000
O_NOCTTY = FLAG_UNSUPPORTED
O_DIRECTORY = FLAG_UNSUPPORTED
O_BINARY = 0x008000
O_LARGEFILE = 0x000000
O_LARGEFILE = FLAG_UNSUPPORTED


class qnx_arm_open_flags(QlPrettyFlag):
Expand All @@ -611,13 +613,13 @@ class qnx_arm_open_flags(QlPrettyFlag):
O_APPEND = 0x00008
O_ASYNC = 0x10000
O_SYNC = 0x00020
O_NOFOLLOW = 0x000000
O_NOFOLLOW = FLAG_UNSUPPORTED
O_CREAT = 0x00100
O_TRUNC = 0x00200
O_EXCL = 0x00400
O_NOCTTY = 0x00800
O_DIRECTORY = 0x000000
O_BINARY = 0x000000
O_DIRECTORY = FLAG_UNSUPPORTED
O_BINARY = FLAG_UNSUPPORTED
O_LARGEFILE = 0x08000


Expand Down
6 changes: 3 additions & 3 deletions qiling/os/posix/const_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,12 @@ def ql_open_flag_mapping(ql: Qiling, flags: int) -> int:
# convert emulated os flags to hosting os flags.
# flags names are consistent across all classes, even if they are not supported, to maintain compatibility
for ef in emul_flags:
# test whether flag i set, excluding unsupported flags and 0 values
if ef and flags & ef.value:
# test whether flag is set, excluding unsupported flags
if (ef != FLAG_UNSUPPORTED) and (flags & ef.value):
hf = host_flags[ef.name or '']

# if flag is also supported on the host, set it
if hf:
if hf != FLAG_UNSUPPORTED:
ret |= hf.value

# NOTE: not sure why this one is needed
Expand Down