diff --git a/doc/abi.txt b/doc/abi.txt new file mode 100755 index 0000000..be630dc --- /dev/null +++ b/doc/abi.txt @@ -0,0 +1,21 @@ +=== TASK ENVIRONMENT ==== + +This data is placed in the address space +of a new task. + +environment_t { + /** array of string pointers for command line arguments. */ + size_t argc; + char **argv; + + /** handles to the system manager and session manager services + respectively */ + kern_handle_t system; + kern_handle_t session; + + /** handles to the pagebuf objects storing the initial thread + stack and task heap respectively */ + kern_handle_t stack; + kern_handle_t heap; +} + diff --git a/doc/boot-process.txt b/doc/boot-process.txt new file mode 100755 index 0000000..64ee75c --- /dev/null +++ b/doc/boot-process.txt @@ -0,0 +1,375 @@ +================================================================================ +| Rosetta Operating System | +| ~~~~~~~~~~~~~~~~~~~~~~~~ | +| The Boot Process | +================================================================================ + +1 Bootloader +------------ + + The bootloader loads the kernel executable and an initrd. + + +2 Kernel +-------- + + The kernel initialises itself, extracts the bootstrap program from the initrd + and executes it. + + The initrd is an EC3 image containing (in most cases) two key items: + 1) A bootstrap executable. + 2) A volume containing the boot filesystem. + + This data is stored in several 'tags' within the container: + * VOLU, CTAB, STAB, and XATR for the boot filesystem volume (ignored by + the kernel) + * EXEC for the bootstrap program. + + (technically speaking, the only hard requirement as far as the kernel is + concerned is the EXEC tag. The initrd could contain any number of other + volumes or tags, including none at all) + + The boot filesystem is ignored by the kernel. It is up to the bootstrap + program to make use of it. + + The bootstrap program is a static ELF binary in an EXEC tag with an + identifier of 0x555345524C414E44 ("USERLAND" in ASCII). + + The key feature of the EXEC tag in an EC3 image is that, for static and flat + binaries, it extracts the information needed to run the executable and stores + it in a special data structure for easy parsing. This allows the reader (the + kernel in this case) to load and run the executable without having to + implement an ELF parser. + + Such information includes: + * The offset and size of the read-write (.data, .bss) and read-exec + (.text, .rodata) segments both in the file (source) and in virtual + memory (destination). + * The entry point address. + + The following structure can be found at the beginning of the EXEC tag. + Any *_faddr variables are offsets relative to the beginning of the tag. + + struct ec3_exec_aux { + uint8_t e_type; // EXEC_ELF, EXEC_FLAT, etc + + union { + struct { + uintptr_t rx_segment_faddr, rx_segment_vaddr; + size_t rx_segment_fsize, rx_segment_vsize; + + uintptr_t rw_segment_faddr, rw_segment_vaddr; + size_t rw_segment_fsize, rw_segment_vsize; + + uintptr_t entry; + } i_elf; + + struct { + uintptr_t base; + uintptr_t entry; + } i_flat; + } e_info; + } + + As long as you aren't reading any volumes, the EC3 image format is simple + enough that finding the EXEC tag and reading its contents is a trivial + operation. This minimises the amount of code needed in the kernel to find + the bootstrap program. + + The auxiliary information in the EXEC tag is enough for the kernel to copy + the executable into memory, set the appropriate memory permissions, and + jump to the entry point. + + +3 Userland Bootstrap +-------------------- + + The userland bootstrap program (or "userboot") is responsible for making + available the boot filesystem and starting the system management task. + + Any kernel tasks have a negative task ID, and the userland bootstrap task + will always be given a task ID of zero. Therefore, the first task spawned by + userboot will always have a task ID of 1. + + Once the system management process is started, userboot can (but doesn't HAVE + to) exit. The system management task will automatically become the root of + the task tree. + + If userboot exits without spawning any other tasks, the action taken will + depend on the command-line arguments given to the kernel. + + Some options include: + * Shut the system down + * Restart the system + * Trigger a kernel panic + + In most cases, userboot will remain running, providing the system management + task with access to the boot filesystem until other drivers are online, at + which point the bootstrap program will exit. + + In more specialised cases, userboot can remain running for the life of the + system. It can wait for the task it spawns to exit before taking some action. + + This is useful for automated testing. The bootstrap program can run a program + that will run the test suite (or could itself be a test suite program), wait + for the tests to finish, and then shut down the system. + + +3 System Management Task +------------------------ + + The system management task will be in charge of the system for the entire + time the system is up. It is responsible for starting device drivers and + setting up an environment for the system to carry out its intended purpose + (i.e. handling interactive user sessions). + + Of course, the system management task can (and certainly should) delegate + these tasks to other system services. + + On Rosetta-based systems, system management duties are handled by the systemd + daemon. systemd fulfills a few important roles, including: + 1) managing system services, and restarting them if they fail. + 2) loading and launching executables. + 3) managing the system namespace. + + userboot sends commands to systemd to bring up the rest of the userland + environment. During this process, systemd maintains a connection to userboot + to load files from the boot filesystem. You might think that having two tasks + communicate with each other (violating the strict one-way client-server + message flow) would result in deadlocks, but a few key design choices in + userboot and systemd avoid this. + + technically, there is nothing wrong with two tasks waiting on each other, as + long as two THREADS within those tasks don't end up (directly or indirectly) + waiting on each other. + + therefore, to ensure that this principle is not violated: + 1) systemd performs all process-launching activities and request-handling + activities on separate threads that never wait on each other. when a + request is received to launch a new process, systemd's request-handler + thread dispatches the request (and the responsibility to respond to the + client) to a separate loader thread. this allows systemd to continue + servicing other requests (including filesystem requests from its own + loader threads). + 2) userboot performs all system startup activities (including sending + commands to systemd) and filesystem request-handing activities on + separate threads that never wait on each other. + + because of this, despite the circular communications between userboot and + systemd, messages between the two tasks still technically only travel in a + single direction when you consider their individual threads: + + userboot[init] -----> systemd[req-handler] + | : + ═════NO═COMMUNICATION═════ : (async task dispatch) + | v + userboot[fs-handler] <----- systemd[launcher] + + key: + task-name[thread-name] + ---> Request/reply exchange (the arrow points toward the request + recipient) + ...> Non-blocking action (e.g. scheduling another thread to run) + + technically, systemd[req-handler] schedules systemd[launcher] to run and + doesn't wait on it. therefore, if userboot[init] sends a request to + systemd[req-handler] to launch a server, it will receive a reply from + systemd[launcher]. + + Because of the fixed order in which userboot and systemd are started, and + the deterministic assignment of task IDs mentioned in the USERLAND BOOTSTRAP + section, the channels that the two tasks use to communicate with each other + have well-defined locations: + + * userboot always has TID 0, and always hosts the boot filesystem on its + first channel, giving a tuple of (nd:0, tid:0, chid:0). + * systemd always has TID 1, and always hosts its system management + interface on its first channel, giving a tuple of (nd:0, tid:1, chid:0). + + +5 From Userboot to the Root Filesystem +-------------------------------------- + + Now that we are familiar with the inner workings of these two critical tasks, + lets go through the steps taken to bring up the full userland environment: + + 1) when userboot starts, it is given (by the kernel) a handle to a pagebuf + object containing the initrd. userboot maps this pagebuf into its + address space and mounts the initrd[1]. + 2) userboot creates a new task to run the system management service. + userboot contains just enough ELF-related code to do one of the + following: + * if the system management executable is statically-linked, simply copy + the relevant ELF segments into the new task's address space and + create a thread that will start running at the executable's entry + point. + * if the system management executable is dynamically-linked (the more + likely scenario), load the dynamic linker[2] into the new task's + address space and creates a new thread that will start running at the + dynamic linker's entry point. + 3) systemd initialises the system namespace and mounts the boot filesystem + provided by userboot at '/', temporarily making it the root filesystem. + 4) systemd starts the device manager service, emdevd, and instructs it + to scan the system devices. this blocks systemd until the scan is + complete. + 5) in response to a scan command, emdevd uses whatever drivers are + available in the current root filesystem to find and initialise as many + devices as possible. because the boot filesystem only contains the + drivers needed to mount the root filesystem, this scan will be + far from complete, but it will be repeated once the real root + filesystem is available. + 6) eventually the scan will complete, and emdevd will return control + back to systemd. at this point, the storage device containing the + root filesystem has been found and brought online. + 7) emdevd provides a devfs-like interface to all the devices on the + system. systemd mounts this pseudo-filesystem at '/dev' in the + system namespace. + 8) systemd starts an instance of the filesystem server, fsd, and provides + it with three parameters: + * the path to the device node containing the root filesystem (e.g. + '/dev/disk0s1') + * the name of the filesystem format to be mounted (e.g. 'ext2') + * the mount flags (the root filesystem is always mounted read-only + during boot. once /etc/fstab is accessible, the root filesystem + is re-mounted with the flags it specifies) + 9) fsd will load the necessary filesystem driver (e.g. for ext2 + filesystems, fsd will load fs-ext2.so) and mount the filesystem + on the provided device. + 10) systemd mounts the filesystem provided by fsd to the root of + the system namespace. at this point, the root filesystem is now + available (albeit read-only for now). + + Notes: + [1] In this case, mounting doesn't involve the system namespace (until + systemd starts up, there *is* no system namespace), but rather + userboot creating any data structures it needs to be able to privately + locate and read files within the boot image. + [2] despite being a .so file, the dynamic linker is designed to be a + self-contained position-independent executable with no external + dependencies, in order to avoid a chicken-and-egg situation where the + dynamic linker itself requires a dynamic linker to load. the only + functionality required to load it (beyond copying its code and data + into memory) is finding and iterating through the DYNAMIC segment, + processing any relocation entries contained within. + + +6 Runlevels +----------- + + the state of the system, and what functionality the system has, depends on + which services are running. For example: + * without deviced or fsd, no filesystems are available. + * without lockdownd, user authentication and authorisation is not + available. + * without airportd, network connectivity is not available. + * without seatd, multiplexing of peripherals between multiple user + sessions is not available. + * without sessiond, user sessions are not available. + ... and so on. + + different sets of services can be brought online to tailor the available + functionality. under systemd, these sets of services are called runlevels. + runlevels are hierarchical, with higher runlevels building upon the + functionality provided by lower runlevels. as the runlevel increases, the + number of system services running on the machine increases. + + + 6.1 Pre-defined Runlevels + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + Rosetta has a range of pre-defined runlevels: + * Off: + - Instructing systemd to move to this runlevel will shut the system down. + * Minimal: + - Only the root filesystem is available, and is read-only. + - All device drivers are loaded, and all devices are visible. + - All network interfaces are down, and no socket I/O is possible. + - The security service is offline, so no authentication or authorisation + checks can be performed, and the interactive user is effectively root. + - Neither the session nor seat managers are online, so only one session + is supported. + - A basic console and shell are started to allow the user to interact + with the system. + * Single-User: Same as Minimal, except: + - all filesystems mounts prescribed by /etc/fstab are performed. + * Multi-User: Same as Single-User, except: + - The security service is running, allowing user authentication. + - System security and permissions are now enforced. + - The seat and session manager services are running, allowing multiple + user sessions to be running simultaneously. + - instead of dropping straight into a shell, the interactive user is + presented with a text-based login prompt before their shell is + launched. + * Networking: Same as Multi-User, except: + - The networking service is running, and all network interfaces are + brought up and configured according to system configuration. + * Full Mode: Same as Networking, except: + - The system's display manager is running, allowing for logging in + and interacting with the system via a graphical user interface. + + In most circumstances, the system will be running in one of the runlevels + based on Multi-User. Not only does this enable most of the "usual" system + functionality, but it also enforces user authentication and authorisation. + The lower runlevels are mostly used for system administration and + troubleshooting when there is a problem preventing the system from reaching + a higher runlevel. + + + 6.2 How Runlevels Affect Security Enforcement + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + User authentication and authorisation depend on the system security service + (lockdownd). Without it, no users can log on to the system, and no permission + checks can be performed. So, how does a system behave when lockdownd isn't + running? + + There are a few circumstances where lockdownd may be offline, some + intentional and some unintentional. The system may be booted in Minimal or + Single-User mode. These runlevels don't start lockdownd as the interactive + user is root by default. However, lockdownd may crash while running on a + multi-user system. + + So if you are an application or service running on a Rosetta system, and your + attempt to connect to the security service fails because the service has + stopped working, or was never running in the first place, what do you do? + + The system management service keeps track of what runlevel the system is + currently running at, and anyone can contact the service to query this + information. So, you can take action depending on the system runlevel: + * If the runlevel is Single-User or below, you know that system security + is not being enforced, so there is no need to contact the security + service. + * If the runlevel is Multi-User or higher, you know that system security + is (or should be) enforced. If the security service cannot be reached + in this case, you should wait for the system management service to + (re)start it. In the worst case scenario, where the security service + cannot be started, all authentication and authorisation actions should + be presumed to fail, so that there is never a lapse in security. + + +7 From the Root Filesystem to User Interaction +---------------------------------------------- + + Now that the root filesystem is available, we can start bringing other + system components online. This process culminates in an interactive user + session. + + 1) systemd instructs emdevd to perform another scan of the system devices. + with a wider range of drivers now available, (hopefully) all devices + will now be detected and initialised. + 2) systemd will now start working towards reaching a target runlevel. + right now, the system is running at the Minimum runlevel. For the + purposes of this document, let's assume that the target runlevel is + Networking, and the system will move through the Single-User and Multi- + User runlevels to get there. + 3) In order to reach the Single-User runlevel, the filesystem mounts + specified in /etc/fstab must be performed. The Single-User runlevel + defines a script for systemd to execute, which performs the necessary + mount operations. + 4) The Multi-User runlevel is more complex and will require starting a + range of services. + 5) First, the security service, lockdownd, is brought online. This is the + pivotal service that converts the system from single-user to multi-user. + + +vim: shiftwidth=3 expandtab diff --git a/doc/filesystem.txt b/doc/filesystem.txt new file mode 100755 index 0000000..8407671 --- /dev/null +++ b/doc/filesystem.txt @@ -0,0 +1,90 @@ +/ [nsd:0, fsd:0] (drivers/fs/fs-ec3.so) +|--svc [nsd:0] +| |--os.SystemManager -> overlordd +| |--os.Launcher -> launchd +| |--os.SeatManager -> seatd +| |--os.NetworkManager -> airportd +| |--os.DeviceManager -> emdevd +| \--os.SecurityManager -> lockdownd +|--dev [emdevd:0] +| |--zero (drivers/char/io-misc.so) +| |--null (drivers/char/io-misc.so) +| |--random (drivers/char/io-random.so) +| |--urandom (drivers/char/io-random.so) +| |--bus +| | |--pci (drivers/bus/io-pci.so) +| | | |--0000:00:00.0 +| | | |--0000:00:02.0 +| | | |--0000:00:05.0 +| | | | ... +| | | \--0000:ff:16.7 +| | |--acpi (drivers/bus/io-acpi.so) +| | | |--PNP0A03 +| | | |--PNP0C0B +| | | |--PNP0900 +| | | | ... +| | | \--PNP0500 +| | \--usb (drivers/bus/io-xhci.so) +| | |--1-0:1.0 +| | |--1-1 +| | |--1-1:1.0 +| | | ... +| | \--4-6:1.0 +| |--block +| | |--disk0 (drivers/block/io-ahci.so) +| | |--disk0s0 (drivers/block/io-block.so) +| | |--disk0s1 (drivers/block/io-block.so) +| | |--disk1 (drivers/block/io-xhci.so) +| | \--disk1s0 (drivers/block/io-block.so) +| |--char +| | |--ser0 (drivers/char/io-serial.so) +| | |--ser1 (drivers/char/io-serial.so) +| | |--ser2 (drivers/char/io-serial.so) +| | \--ser3 (drivers/char/io-serial.so) +| |--input +| | |--event0 (drivers/input/io-ps2.so) +| | \--event1 (drivers/input/io-ps2.so) +| |--net +| | |--eth0 (drivers/net/io-e1000.so) +| | \--wlan0 (drivers/net/io-b43.so) +| \--video +| \--card0 (drivers/video/gfx-vga.so) +|--home +| \--max +| |--Downloads +| \--Documents +|--boot +| |--mango_kernel +| \--initrd.ec3 +|--usr +| \--lib +| |--libsystem.so +| \--drivers +| |--bus +| | |--io-pci.so +| | |--io-acpi.so +| | \--io-xhci.so +| |--block +| | |--io-ahci.so +| | \--io-block.so +| |--char +| | \--io-serial.so +| |--input +| | \--io-ps2.so +| |--video +| | \--gfx-vga.so +| |--net +| | |--io-e1000.so +| | \--io-b43.so +| \--fs +| |--fs-ext2.so +| |--fs-fat32.so +| \--fs-ec3.so +|--net [airportd:0] +| |--node1 +| | \-- ... +| \--node2 +| \-- ... +\--vol + |--disk1 [fsd:0] (drivers/fs/fs-ext2.so) + \--disk2 [fsd:1] (drivers/fs/fs-fat32.so) diff --git a/doc/ld-linux.txt b/doc/ld-linux.txt new file mode 100755 index 0000000..cd027fc --- /dev/null +++ b/doc/ld-linux.txt @@ -0,0 +1,468 @@ +ELF Header: + Magic: 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 + Class: ELF64 + Data: 2's complement, little endian + Version: 1 (current) + OS/ABI: UNIX - GNU + ABI Version: 0 + Type: DYN (Shared object file) + Machine: Advanced Micro Devices X86-64 + Version: 0x1 + Entry point address: 0x20290 + Start of program headers: 64 (bytes into file) + Start of section headers: 239208 (bytes into file) + Flags: 0x0 + Size of this header: 64 (bytes) + Size of program headers: 56 (bytes) + Number of program headers: 11 + Size of section headers: 64 (bytes) + Number of section headers: 27 + Section header string table index: 26 + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .note.gnu.pr[...] NOTE 00000000000002a8 000002a8 + 0000000000000020 0000000000000000 A 0 0 8 + [ 2] .note.gnu.bu[...] NOTE 00000000000002c8 000002c8 + 0000000000000024 0000000000000000 A 0 0 4 + [ 3] .hash HASH 00000000000002f0 000002f0 + 000000000000013c 0000000000000004 A 5 0 8 + [ 4] .gnu.hash GNU_HASH 0000000000000430 00000430 + 0000000000000160 0000000000000000 A 5 0 8 + [ 5] .dynsym DYNSYM 0000000000000590 00000590 + 00000000000003c0 0000000000000018 A 6 1 8 + [ 6] .dynstr STRTAB 0000000000000950 00000950 + 00000000000002c1 0000000000000000 A 0 0 1 + [ 7] .gnu.version VERSYM 0000000000000c12 00000c12 + 0000000000000050 0000000000000002 A 5 0 2 + [ 8] .gnu.version_d VERDEF 0000000000000c68 00000c68 + 00000000000000ec 0000000000000000 A 6 7 8 + [ 9] .rela.dyn RELA 0000000000000d58 00000d58 + 0000000000000d98 0000000000000018 A 5 0 8 + [10] .rela.plt RELA 0000000000001af0 00001af0 + 0000000000000060 0000000000000018 AI 5 21 8 + [11] .plt PROGBITS 0000000000002000 00002000 + 0000000000000050 0000000000000010 AX 0 0 16 + [12] .plt.sec PROGBITS 0000000000002050 00002050 + 0000000000000040 0000000000000010 AX 0 0 16 + [13] .text PROGBITS 0000000000002090 00002090 + 0000000000029285 0000000000000000 AX 0 0 16 + [14] .rodata PROGBITS 000000000002c000 0002c000 + 0000000000006fc0 0000000000000000 A 0 0 32 + [15] .stapsdt.base PROGBITS 0000000000032fc0 00032fc0 + 0000000000000001 0000000000000000 A 0 0 1 + [16] .eh_frame_hdr PROGBITS 0000000000032fc4 00032fc4 + 0000000000000944 0000000000000000 A 0 0 4 + [17] .eh_frame PROGBITS 0000000000033908 00033908 + 000000000000362c 0000000000000000 A 0 0 8 + [18] .data.rel.ro PROGBITS 0000000000038620 00037620 + 0000000000001860 0000000000000000 WA 0 0 32 + [19] .dynamic DYNAMIC 0000000000039e80 00038e80 + 0000000000000170 0000000000000010 WA 6 0 8 + [20] .got PROGBITS 0000000000039ff0 00038ff0 + 0000000000000010 0000000000000008 WA 0 0 8 + [21] .got.plt PROGBITS 000000000003a000 00039000 + 0000000000000038 0000000000000008 WA 0 0 8 + [22] .data PROGBITS 000000000003a040 00039040 + 00000000000010d0 0000000000000000 WA 0 0 32 + [23] .bss NOBITS 000000000003b110 0003a110 + 00000000000001c8 0000000000000000 WA 0 0 16 + [24] .note.stapsdt NOTE 0000000000000000 0003a110 + 0000000000000420 0000000000000000 0 0 4 + [25] .gnu_debuglink PROGBITS 0000000000000000 0003a530 + 0000000000000034 0000000000000000 0 0 4 + [26] .shstrtab STRTAB 0000000000000000 0003a564 + 0000000000000104 0000000000000000 0 0 1 +Key to Flags: + W (write), A (alloc), X (execute), M (merge), S (strings), I (info), + L (link order), O (extra OS processing required), G (group), T (TLS), + C (compressed), x (unknown), o (OS specific), E (exclude), + R (retain), D (mbind), l (large), p (processor specific) + +There are no section groups in this file. + +Program Headers: + Type Offset VirtAddr PhysAddr + FileSiz MemSiz Flags Align + LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000 + 0x0000000000001b50 0x0000000000001b50 R 0x1000 + LOAD 0x0000000000002000 0x0000000000002000 0x0000000000002000 + 0x0000000000029315 0x0000000000029315 R E 0x1000 + LOAD 0x000000000002c000 0x000000000002c000 0x000000000002c000 + 0x000000000000af34 0x000000000000af34 R 0x1000 + LOAD 0x0000000000037620 0x0000000000038620 0x0000000000038620 + 0x0000000000002af0 0x0000000000002cb8 RW 0x1000 + DYNAMIC 0x0000000000038e80 0x0000000000039e80 0x0000000000039e80 + 0x0000000000000170 0x0000000000000170 RW 0x8 + NOTE 0x00000000000002a8 0x00000000000002a8 0x00000000000002a8 + 0x0000000000000020 0x0000000000000020 R 0x8 + NOTE 0x00000000000002c8 0x00000000000002c8 0x00000000000002c8 + 0x0000000000000024 0x0000000000000024 R 0x4 + GNU_PROPERTY 0x00000000000002a8 0x00000000000002a8 0x00000000000002a8 + 0x0000000000000020 0x0000000000000020 R 0x8 + GNU_EH_FRAME 0x0000000000032fc4 0x0000000000032fc4 0x0000000000032fc4 + 0x0000000000000944 0x0000000000000944 R 0x4 + GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 + 0x0000000000000000 0x0000000000000000 RW 0x10 + GNU_RELRO 0x0000000000037620 0x0000000000038620 0x0000000000038620 + 0x00000000000019e0 0x00000000000019e0 R 0x1 + + Section to Segment mapping: + Segment Sections... + 00 .note.gnu.property .note.gnu.build-id .hash .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_d .rela.dyn .rela.plt + 01 .plt .plt.sec .text + 02 .rodata .stapsdt.base .eh_frame_hdr .eh_frame + 03 .data.rel.ro .dynamic .got .got.plt .data .bss + 04 .dynamic + 05 .note.gnu.property + 06 .note.gnu.build-id + 07 .note.gnu.property + 08 .eh_frame_hdr + 09 + 10 .data.rel.ro .dynamic .got + +Dynamic section at offset 0x38e80 contains 19 entries: + Tag Type Name/Value + 0x000000000000000e (SONAME) Library soname: [ld-linux-x86-64.so.2] + 0x0000000000000004 (HASH) 0x2f0 + 0x000000006ffffef5 (GNU_HASH) 0x430 + 0x0000000000000005 (STRTAB) 0x950 + 0x0000000000000006 (SYMTAB) 0x590 + 0x000000000000000a (STRSZ) 705 (bytes) + 0x000000000000000b (SYMENT) 24 (bytes) + 0x0000000000000003 (PLTGOT) 0x3a000 + 0x0000000000000002 (PLTRELSZ) 96 (bytes) + 0x0000000000000014 (PLTREL) RELA + 0x0000000000000017 (JMPREL) 0x1af0 + 0x0000000000000007 (RELA) 0xd58 + 0x0000000000000008 (RELASZ) 3480 (bytes) + 0x0000000000000009 (RELAENT) 24 (bytes) + 0x000000006ffffffc (VERDEF) 0xc68 + 0x000000006ffffffd (VERDEFNUM) 7 + 0x000000006ffffff0 (VERSYM) 0xc12 + 0x000000006ffffff9 (RELACOUNT) 142 + 0x0000000000000000 (NULL) 0x0 + +Relocation section '.rela.dyn' at offset 0xd58 contains 145 entries: + Offset Info Type Sym. Value Sym. Name + Addend +000000038620 000000000008 R_X86_64_RELATIVE 2f041 +000000038628 000000000008 R_X86_64_RELATIVE 2e8c9 +000000038630 000000000008 R_X86_64_RELATIVE 2e8af +000000038638 000000000008 R_X86_64_RELATIVE 2f049 +000000038640 000000000008 R_X86_64_RELATIVE 2f059 +000000038648 000000000008 R_X86_64_RELATIVE 2e8e1 +000000038650 000000000008 R_X86_64_RELATIVE 2f071 +000000038658 000000000008 R_X86_64_RELATIVE 2f08b +000000038660 000000000008 R_X86_64_RELATIVE 2f0a2 +000000038668 000000000008 R_X86_64_RELATIVE 2f0b4 +000000038670 000000000008 R_X86_64_RELATIVE 2f0c8 +000000038678 000000000008 R_X86_64_RELATIVE 32b48 +000000038680 000000000008 R_X86_64_RELATIVE 2e887 +000000038688 000000000008 R_X86_64_RELATIVE 2e8f4 +000000038690 000000000008 R_X86_64_RELATIVE 2f0db +000000038698 000000000008 R_X86_64_RELATIVE 2f0e7 +0000000386a0 000000000008 R_X86_64_RELATIVE 2f0fd +0000000386a8 000000000008 R_X86_64_RELATIVE 2f115 +0000000386b0 000000000008 R_X86_64_RELATIVE 2f121 +0000000386b8 000000000008 R_X86_64_RELATIVE 2f13b +0000000386c0 000000000008 R_X86_64_RELATIVE 2f14a +0000000386c8 000000000008 R_X86_64_RELATIVE 2f15a +0000000386d0 000000000008 R_X86_64_RELATIVE 2e89e +0000000386d8 000000000008 R_X86_64_RELATIVE 2f169 +0000000386e0 000000000008 R_X86_64_RELATIVE 2f187 +0000000386e8 000000000008 R_X86_64_RELATIVE 32b70 +0000000386f0 000000000008 R_X86_64_RELATIVE 2f19b +0000000386f8 000000000008 R_X86_64_RELATIVE 2f1aa +000000038700 000000000008 R_X86_64_RELATIVE 2f1b9 +000000038708 000000000008 R_X86_64_RELATIVE 2f1d1 +000000038710 000000000008 R_X86_64_RELATIVE 2f1de +000000038718 000000000008 R_X86_64_RELATIVE 2f1f4 +000000038720 000000000008 R_X86_64_RELATIVE 2f203 +000000038728 000000000008 R_X86_64_RELATIVE 32b90 +000000038730 000000000008 R_X86_64_RELATIVE 2f20f +000000038738 000000000008 R_X86_64_RELATIVE 2f22d +000000038740 000000000008 R_X86_64_RELATIVE 2f247 +000000038748 000000000008 R_X86_64_RELATIVE 2f25a +000000038750 000000000008 R_X86_64_RELATIVE 2f26d +000000038758 000000000008 R_X86_64_RELATIVE 2f286 +000000038760 000000000008 R_X86_64_RELATIVE 32bb8 +000000038770 000000000008 R_X86_64_RELATIVE 2f29a +000000038778 000000000008 R_X86_64_RELATIVE 2f2b5 +000000038780 000000000008 R_X86_64_RELATIVE 2f2c8 +000000038788 000000000008 R_X86_64_RELATIVE 2f2e4 +000000038790 000000000008 R_X86_64_RELATIVE 2f2fd +000000038798 000000000008 R_X86_64_RELATIVE 2f30c +0000000387a0 000000000008 R_X86_64_RELATIVE 2f31a +0000000387a8 000000000008 R_X86_64_RELATIVE 2f333 +0000000387b0 000000000008 R_X86_64_RELATIVE 2f350 +0000000387b8 000000000008 R_X86_64_RELATIVE 2f36b +0000000387c0 000000000008 R_X86_64_RELATIVE 2f37a +0000000387c8 000000000008 R_X86_64_RELATIVE 2f38b +0000000387d0 000000000008 R_X86_64_RELATIVE 2f3a6 +0000000387d8 000000000008 R_X86_64_RELATIVE 2f3b4 +0000000387e0 000000000008 R_X86_64_RELATIVE 2f3bd +0000000387e8 000000000008 R_X86_64_RELATIVE 2f3d2 +0000000387f8 000000000008 R_X86_64_RELATIVE 2f3df +000000038800 000000000008 R_X86_64_RELATIVE 2f3f4 +000000038808 000000000008 R_X86_64_RELATIVE 2f408 +000000038810 000000000008 R_X86_64_RELATIVE 2f41a +000000038818 000000000008 R_X86_64_RELATIVE 2f428 +000000038820 000000000008 R_X86_64_RELATIVE 2f441 +000000038828 000000000008 R_X86_64_RELATIVE 2f45f +000000038830 000000000008 R_X86_64_RELATIVE 2f475 +000000038838 000000000008 R_X86_64_RELATIVE 2f486 +000000038840 000000000008 R_X86_64_RELATIVE 2f49c +000000038848 000000000008 R_X86_64_RELATIVE 2f4ac +000000038850 000000000008 R_X86_64_RELATIVE 2f4ba +000000038858 000000000008 R_X86_64_RELATIVE 2f4d6 +000000038860 000000000008 R_X86_64_RELATIVE 2f4e5 +000000038868 000000000008 R_X86_64_RELATIVE 2f4f8 +000000038870 000000000008 R_X86_64_RELATIVE 2f50b +000000038878 000000000008 R_X86_64_RELATIVE 32be0 +000000038880 000000000008 R_X86_64_RELATIVE 2f517 +000000038888 000000000008 R_X86_64_RELATIVE 2f532 +000000038890 000000000008 R_X86_64_RELATIVE 2f54f +000000038898 000000000008 R_X86_64_RELATIVE 32c08 +0000000388a0 000000000008 R_X86_64_RELATIVE 32c30 +0000000388a8 000000000008 R_X86_64_RELATIVE 32c58 +0000000388b0 000000000008 R_X86_64_RELATIVE 32c78 +0000000388b8 000000000008 R_X86_64_RELATIVE 32ca8 +0000000388c0 000000000008 R_X86_64_RELATIVE 32cd0 +0000000388c8 000000000008 R_X86_64_RELATIVE 32d08 +0000000388d0 000000000008 R_X86_64_RELATIVE 2f566 +0000000388d8 000000000008 R_X86_64_RELATIVE 2f579 +0000000388e0 000000000008 R_X86_64_RELATIVE 32d38 +0000000388e8 000000000008 R_X86_64_RELATIVE 2f588 +0000000388f0 000000000008 R_X86_64_RELATIVE 2f5a5 +0000000388f8 000000000008 R_X86_64_RELATIVE 32d58 +000000038900 000000000008 R_X86_64_RELATIVE 2f5b6 +000000038908 000000000008 R_X86_64_RELATIVE 2f5cd +000000038910 000000000008 R_X86_64_RELATIVE 2f5e4 +000000038918 000000000008 R_X86_64_RELATIVE 2f5fe +000000038920 000000000008 R_X86_64_RELATIVE 2f616 +000000038928 000000000008 R_X86_64_RELATIVE 32d78 +000000038930 000000000008 R_X86_64_RELATIVE 2f634 +000000038938 000000000008 R_X86_64_RELATIVE 32da8 +000000038940 000000000008 R_X86_64_RELATIVE 2f64b +000000038948 000000000008 R_X86_64_RELATIVE 2f65b +000000038950 000000000008 R_X86_64_RELATIVE 32dc8 +000000038958 000000000008 R_X86_64_RELATIVE 32df0 +000000038960 000000000008 R_X86_64_RELATIVE 2f672 +000000038968 000000000008 R_X86_64_RELATIVE 2f68b +000000038970 000000000008 R_X86_64_RELATIVE 32e18 +000000038978 000000000008 R_X86_64_RELATIVE 32e40 +000000038980 000000000008 R_X86_64_RELATIVE 32e68 +000000038988 000000000008 R_X86_64_RELATIVE 32e98 +000000038990 000000000008 R_X86_64_RELATIVE 2f6a5 +000000038998 000000000008 R_X86_64_RELATIVE 2f6ba +0000000389a0 000000000008 R_X86_64_RELATIVE 2f6cd +0000000389a8 000000000008 R_X86_64_RELATIVE 2f6da +0000000389b0 000000000008 R_X86_64_RELATIVE 2f6eb +0000000389b8 000000000008 R_X86_64_RELATIVE 2f709 +0000000389c0 000000000008 R_X86_64_RELATIVE 2f723 +0000000389c8 000000000008 R_X86_64_RELATIVE 2f735 +0000000389d0 000000000008 R_X86_64_RELATIVE 2f74e +0000000389d8 000000000008 R_X86_64_RELATIVE 2f76a +0000000389e0 000000000008 R_X86_64_RELATIVE 2f788 +0000000389e8 000000000008 R_X86_64_RELATIVE 2f79d +0000000389f0 000000000008 R_X86_64_RELATIVE 2f7ae +0000000389f8 000000000008 R_X86_64_RELATIVE 2f7c2 +000000038a00 000000000008 R_X86_64_RELATIVE 2f7d2 +000000038a08 000000000008 R_X86_64_RELATIVE 2f7e4 +000000038a10 000000000008 R_X86_64_RELATIVE 2f7f7 +000000038a18 000000000008 R_X86_64_RELATIVE 2f812 +000000038a20 000000000008 R_X86_64_RELATIVE 2f822 +000000038a28 000000000008 R_X86_64_RELATIVE 2f837 +000000038a30 000000000008 R_X86_64_RELATIVE 2f853 +000000038a38 000000000008 R_X86_64_RELATIVE 2f85e +000000038a40 000000000008 R_X86_64_RELATIVE 32ec0 +000000038a48 000000000008 R_X86_64_RELATIVE 32ee8 +000000039e10 000000000008 R_X86_64_RELATIVE fbc0 +000000039e18 000000000008 R_X86_64_RELATIVE 107b0 +000000039e20 000000000008 R_X86_64_RELATIVE c0d0 +000000039e28 000000000008 R_X86_64_RELATIVE e2a0 +000000039e30 000000000008 R_X86_64_RELATIVE 3230 +000000039e38 000000000008 R_X86_64_RELATIVE 1d470 +000000039e40 000000000008 R_X86_64_RELATIVE 4a70 +000000039e48 000000000008 R_X86_64_RELATIVE 14d80 +000000039e50 000000000008 R_X86_64_RELATIVE 1e2d0 +000000039e60 000000000008 R_X86_64_RELATIVE 1fa40 +000000039ff0 001800000006 R_X86_64_GLOB_DAT 0000000000038ae8 __rseq_offset@@GLIBC_2.35 + 0 +000000039ff8 001d00000006 R_X86_64_GLOB_DAT 0000000000038af0 __rseq_size@@GLIBC_2.35 + 0 +000000039a50 000000000025 R_X86_64_IRELATIV 1a780 + +Relocation section '.rela.plt' at offset 0x1af0 contains 4 entries: + Offset Info Type Sym. Value Sym. Name + Addend +00000003a018 001100000007 R_X86_64_JUMP_SLO 000000000001d2e0 _dl_catch_exception@@GLIBC_PRIVATE + 0 +00000003a020 000f00000007 R_X86_64_JUMP_SLO 000000000001d110 _dl_signal_exception@@GLIBC_PRIVATE + 0 +00000003a028 001f00000007 R_X86_64_JUMP_SLO 000000000001d160 _dl_signal_error@@GLIBC_PRIVATE + 0 +00000003a030 002300000007 R_X86_64_JUMP_SLO 000000000001d3d0 _dl_catch_error@@GLIBC_PRIVATE + 0 +No processor specific unwind information to decode + +Symbol table '.dynsym' contains 40 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 000000000000af60 723 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 2: 000000000001b730 449 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 3: 000000000003b1d8 1 OBJECT GLOBAL DEFAULT 23 _[...]@@GLIBC_PRIVATE + 4: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBC_2.2.5 + 5: 0000000000039ae0 928 OBJECT GLOBAL DEFAULT 18 _[...]@@GLIBC_PRIVATE + 6: 00000000000147a0 711 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 7: 0000000000032fb0 4 OBJECT GLOBAL DEFAULT 14 __rs[...]@@GLIBC_2.35 + 8: 000000000003a040 4304 OBJECT GLOBAL DEFAULT 22 _[...]@@GLIBC_PRIVATE + 9: 00000000000144f0 673 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 10: 0000000000039a90 8 OBJECT GLOBAL DEFAULT 18 __l[...]@@GLIBC_2.2.5 + 11: 0000000000039a98 4 OBJECT GLOBAL DEFAULT 18 _[...]@@GLIBC_PRIVATE + 12: 00000000000051b0 59 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 13: 0000000000014a70 131 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 14: 000000000001a7d0 12 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 15: 000000000001d110 72 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 16: 000000000003b118 40 OBJECT GLOBAL DEFAULT 23 _r_debug@@GLIBC_2.2.5 + 17: 000000000001d2e0 227 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 18: 00000000000181d0 65 FUNC GLOBAL DEFAULT 13 __tls[...]@@GLIBC_2.3 + 19: 0000000000005010 35 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 20: 0000000000003300 5 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 21: 00000000000143f0 25 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 22: 000000000000e1d0 196 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 23: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBC_PRIVATE + 24: 0000000000038ae8 8 OBJECT GLOBAL DEFAULT 18 __rs[...]@@GLIBC_2.35 + 25: 000000000002b310 5 FUNC GLOBAL DEFAULT 13 __rtl[...]@GLIBC_2.34 + 26: 000000000000ff20 169 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 27: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBC_2.3 + 28: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBC_2.4 + 29: 0000000000038af0 4 OBJECT GLOBAL DEFAULT 18 __rs[...]@@GLIBC_2.35 + 30: 0000000000017d70 109 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 31: 000000000001d160 83 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 32: 0000000000004ba0 1132 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 33: 0000000000039ac0 8 OBJECT GLOBAL DEFAULT 18 _[...]@@GLIBC_PRIVATE + 34: 00000000000107b0 599 FUNC GLOBAL DEFAULT 13 _dl[...]@@GLIBC_2.2.5 + 35: 000000000001d3d0 69 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 36: 0000000000004aa0 244 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 37: 000000000001b660 205 FUNC GLOBAL DEFAULT 13 _[...]@@GLIBC_PRIVATE + 38: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBC_2.34 + 39: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS GLIBC_2.35 + +Histogram for bucket list length (total of 37 buckets): + Length Number % of total Coverage + 0 13 ( 35.1%) + 1 13 ( 35.1%) 33.3% + 2 8 ( 21.6%) 74.4% + 3 2 ( 5.4%) 89.7% + 4 1 ( 2.7%) 100.0% + +Histogram for `.gnu.hash' bucket list length (total of 37 buckets): + Length Number % of total Coverage + 0 12 ( 32.4%) + 1 15 ( 40.5%) 38.5% + 2 7 ( 18.9%) 74.4% + 3 2 ( 5.4%) 89.7% + 4 1 ( 2.7%) 100.0% + +Version symbols section '.gnu.version' contains 40 entries: + Addr: 0x0000000000000c12 Offset: 0x000c12 Link: 5 (.dynsym) + 000: 0 (*local*) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) + 004: 2 (GLIBC_2.2.5) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 6 (GLIBC_2.35) + 008: 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 2 (GLIBC_2.2.5) 7 (GLIBC_PRIVATE) + 00c: 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) + 010: 2 (GLIBC_2.2.5) 7 (GLIBC_PRIVATE) 3 (GLIBC_2.3) 7 (GLIBC_PRIVATE) + 014: 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) + 018: 6 (GLIBC_2.35) 5h(GLIBC_2.34) 7 (GLIBC_PRIVATE) 3 (GLIBC_2.3) + 01c: 4 (GLIBC_2.4) 6 (GLIBC_2.35) 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) + 020: 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 2 (GLIBC_2.2.5) 7 (GLIBC_PRIVATE) + 024: 7 (GLIBC_PRIVATE) 7 (GLIBC_PRIVATE) 5 (GLIBC_2.34) 6 (GLIBC_2.35) + +Version definition section '.gnu.version_d' contains 7 entries: + Addr: 0x0000000000000c68 Offset: 0x000c68 Link: 6 (.dynstr) + 000000: Rev: 1 Flags: BASE Index: 1 Cnt: 1 Name: ld-linux-x86-64.so.2 + 0x001c: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: GLIBC_2.2.5 + 0x0038: Rev: 1 Flags: none Index: 3 Cnt: 2 Name: GLIBC_2.3 + 0x0054: Parent 1: GLIBC_2.2.5 + 0x005c: Rev: 1 Flags: none Index: 4 Cnt: 2 Name: GLIBC_2.4 + 0x0078: Parent 1: GLIBC_2.3 + 0x0080: Rev: 1 Flags: none Index: 5 Cnt: 2 Name: GLIBC_2.34 + 0x009c: Parent 1: GLIBC_2.4 + 0x00a4: Rev: 1 Flags: none Index: 6 Cnt: 2 Name: GLIBC_2.35 + 0x00c0: Parent 1: GLIBC_2.34 + 0x00c8: Rev: 1 Flags: none Index: 7 Cnt: 2 Name: GLIBC_PRIVATE + 0x00e4: Parent 1: GLIBC_2.35 + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 feature: IBT, SHSTK + +Displaying notes found in: .note.gnu.build-id + Owner Data size Description + GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) + Build ID: 4186944c50f8a32b47d74931e3f512b811813b64 + +Displaying notes found in: .note.stapsdt + Owner Data size Description + stapsdt 0x00000038 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: unmap_start + Location: 0x00000000000029ba, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -8@%r15 8@%r13 + stapsdt 0x0000003b NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: unmap_complete + Location: 0x0000000000002c24, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -8@%r15 8@%rbx + stapsdt 0x0000003a NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: map_start + Location: 0x0000000000009add, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -8@40(%rbp) 8@%rbx + stapsdt 0x00000044 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: map_complete + Location: 0x000000000000ea68, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -8@32(%rbx) 8@%r14 8@%r15 + stapsdt 0x0000003f NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: reloc_start + Location: 0x000000000000eb88, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -8@32(%rbx) 8@8(%rsp) + stapsdt 0x00000049 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: reloc_complete + Location: 0x000000000000ece6, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -8@32(%rbx) 8@8(%rsp) 8@%r15 + stapsdt 0x00000035 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: init_start + Location: 0x0000000000023300, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -4@$0 8@%rbx + stapsdt 0x00000038 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: init_complete + Location: 0x0000000000024258, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: -4@$0 8@%rbx + stapsdt 0x0000003a NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: lll_lock_wait_private + Location: 0x0000000000026d66, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: 8@%rdi + stapsdt 0x00000032 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: lll_lock_wait + Location: 0x0000000000026dc9, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: 8@%rdi + stapsdt 0x0000003a NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: setjmp + Location: 0x0000000000026f31, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: 8@%rdi -4@%esi 8@%rax + stapsdt 0x0000003b NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: longjmp + Location: 0x0000000000026faf, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: 8@%rdi -4@%esi 8@%rdx + stapsdt 0x00000042 NT_STAPSDT (SystemTap probe descriptors) + Provider: rtld + Name: longjmp_target + Location: 0x0000000000026fcb, Base: 0x0000000000032fc0, Semaphore: 0x0000000000000000 + Arguments: 8@%rdi -4@%eax 8@%rdx diff --git a/doc/ls.txt b/doc/ls.txt new file mode 100755 index 0000000..a15d235 --- /dev/null +++ b/doc/ls.txt @@ -0,0 +1,692 @@ +ELF Header: + Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 + Class: ELF64 + Data: 2's complement, little endian + Version: 1 (current) + OS/ABI: UNIX - System V + ABI Version: 0 + Type: DYN (Position-Independent Executable file) + Machine: Advanced Micro Devices X86-64 + Version: 0x1 + Entry point address: 0x6aa0 + Start of program headers: 64 (bytes into file) + Start of section headers: 136232 (bytes into file) + Flags: 0x0 + Size of this header: 64 (bytes) + Size of program headers: 56 (bytes) + Number of program headers: 13 + Size of section headers: 64 (bytes) + Number of section headers: 31 + Section header string table index: 30 + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .interp PROGBITS 0000000000000318 00000318 + 000000000000001c 0000000000000000 A 0 0 1 + [ 2] .note.gnu.pr[...] NOTE 0000000000000338 00000338 + 0000000000000030 0000000000000000 A 0 0 8 + [ 3] .note.gnu.bu[...] NOTE 0000000000000368 00000368 + 0000000000000024 0000000000000000 A 0 0 4 + [ 4] .note.ABI-tag NOTE 000000000000038c 0000038c + 0000000000000020 0000000000000000 A 0 0 4 + [ 5] .gnu.hash GNU_HASH 00000000000003b0 000003b0 + 000000000000004c 0000000000000000 A 6 0 8 + [ 6] .dynsym DYNSYM 0000000000000400 00000400 + 0000000000000b88 0000000000000018 A 7 1 8 + [ 7] .dynstr STRTAB 0000000000000f88 00000f88 + 00000000000005a6 0000000000000000 A 0 0 1 + [ 8] .gnu.version VERSYM 000000000000152e 0000152e + 00000000000000f6 0000000000000002 A 6 0 2 + [ 9] .gnu.version_r VERNEED 0000000000001628 00001628 + 00000000000000c0 0000000000000000 A 7 2 8 + [10] .rela.dyn RELA 00000000000016e8 000016e8 + 0000000000001410 0000000000000018 A 6 0 8 + [11] .rela.plt RELA 0000000000002af8 00002af8 + 0000000000000960 0000000000000018 AI 6 25 8 + [12] .init PROGBITS 0000000000004000 00004000 + 000000000000001b 0000000000000000 AX 0 0 4 + [13] .plt PROGBITS 0000000000004020 00004020 + 0000000000000650 0000000000000010 AX 0 0 16 + [14] .plt.got PROGBITS 0000000000004670 00004670 + 0000000000000030 0000000000000010 AX 0 0 16 + [15] .plt.sec PROGBITS 00000000000046a0 000046a0 + 0000000000000640 0000000000000010 AX 0 0 16 + [16] .text PROGBITS 0000000000004ce0 00004ce0 + 00000000000123a2 0000000000000000 AX 0 0 16 + [17] .fini PROGBITS 0000000000017084 00017084 + 000000000000000d 0000000000000000 AX 0 0 4 + [18] .rodata PROGBITS 0000000000018000 00018000 + 0000000000004dcc 0000000000000000 A 0 0 32 + [19] .eh_frame_hdr PROGBITS 000000000001cdcc 0001cdcc + 000000000000056c 0000000000000000 A 0 0 4 + [20] .eh_frame PROGBITS 000000000001d338 0001d338 + 0000000000002120 0000000000000000 A 0 0 8 + [21] .init_array INIT_ARRAY 0000000000020fd0 0001ffd0 + 0000000000000008 0000000000000008 WA 0 0 8 + [22] .fini_array FINI_ARRAY 0000000000020fd8 0001ffd8 + 0000000000000008 0000000000000008 WA 0 0 8 + [23] .data.rel.ro PROGBITS 0000000000020fe0 0001ffe0 + 0000000000000a78 0000000000000000 WA 0 0 32 + [24] .dynamic DYNAMIC 0000000000021a58 00020a58 + 0000000000000200 0000000000000010 WA 7 0 8 + [25] .got PROGBITS 0000000000021c58 00020c58 + 00000000000003a0 0000000000000008 WA 0 0 8 + [26] .data PROGBITS 0000000000022000 00021000 + 0000000000000278 0000000000000000 WA 0 0 32 + [27] .bss NOBITS 0000000000022280 00021278 + 00000000000012c0 0000000000000000 WA 0 0 32 + [28] .gnu_debugaltlink PROGBITS 0000000000000000 00021278 + 0000000000000049 0000000000000000 0 0 1 + [29] .gnu_debuglink PROGBITS 0000000000000000 000212c4 + 0000000000000034 0000000000000000 0 0 4 + [30] .shstrtab STRTAB 0000000000000000 000212f8 + 000000000000012f 0000000000000000 0 0 1 +Key to Flags: + W (write), A (alloc), X (execute), M (merge), S (strings), I (info), + L (link order), O (extra OS processing required), G (group), T (TLS), + C (compressed), x (unknown), o (OS specific), E (exclude), + D (mbind), l (large), p (processor specific) + +There are no section groups in this file. + +Program Headers: + Type Offset VirtAddr PhysAddr + FileSiz MemSiz Flags Align + PHDR 0x0000000000000040 0x0000000000000040 0x0000000000000040 + 0x00000000000002d8 0x00000000000002d8 R 0x8 + INTERP 0x0000000000000318 0x0000000000000318 0x0000000000000318 + 0x000000000000001c 0x000000000000001c R 0x1 + [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] + LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000 + 0x0000000000003458 0x0000000000003458 R 0x1000 + LOAD 0x0000000000004000 0x0000000000004000 0x0000000000004000 + 0x0000000000013091 0x0000000000013091 R E 0x1000 + LOAD 0x0000000000018000 0x0000000000018000 0x0000000000018000 + 0x0000000000007458 0x0000000000007458 R 0x1000 + LOAD 0x000000000001ffd0 0x0000000000020fd0 0x0000000000020fd0 + 0x00000000000012a8 0x0000000000002570 RW 0x1000 + DYNAMIC 0x0000000000020a58 0x0000000000021a58 0x0000000000021a58 + 0x0000000000000200 0x0000000000000200 RW 0x8 + NOTE 0x0000000000000338 0x0000000000000338 0x0000000000000338 + 0x0000000000000030 0x0000000000000030 R 0x8 + NOTE 0x0000000000000368 0x0000000000000368 0x0000000000000368 + 0x0000000000000044 0x0000000000000044 R 0x4 + GNU_PROPERTY 0x0000000000000338 0x0000000000000338 0x0000000000000338 + 0x0000000000000030 0x0000000000000030 R 0x8 + GNU_EH_FRAME 0x000000000001cdcc 0x000000000001cdcc 0x000000000001cdcc + 0x000000000000056c 0x000000000000056c R 0x4 + GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 + 0x0000000000000000 0x0000000000000000 RW 0x10 + GNU_RELRO 0x000000000001ffd0 0x0000000000020fd0 0x0000000000020fd0 + 0x0000000000001030 0x0000000000001030 R 0x1 + + Section to Segment mapping: + Segment Sections... + 00 + 01 .interp + 02 .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt + 03 .init .plt .plt.got .plt.sec .text .fini + 04 .rodata .eh_frame_hdr .eh_frame + 05 .init_array .fini_array .data.rel.ro .dynamic .got .data .bss + 06 .dynamic + 07 .note.gnu.property + 08 .note.gnu.build-id .note.ABI-tag + 09 .note.gnu.property + 10 .eh_frame_hdr + 11 + 12 .init_array .fini_array .data.rel.ro .dynamic .got + +Dynamic section at offset 0x20a58 contains 28 entries: + Tag Type Name/Value + 0x0000000000000001 (NEEDED) Shared library: [libselinux.so.1] + 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] + 0x000000000000000c (INIT) 0x4000 + 0x000000000000000d (FINI) 0x17084 + 0x0000000000000019 (INIT_ARRAY) 0x20fd0 + 0x000000000000001b (INIT_ARRAYSZ) 8 (bytes) + 0x000000000000001a (FINI_ARRAY) 0x20fd8 + 0x000000000000001c (FINI_ARRAYSZ) 8 (bytes) + 0x000000006ffffef5 (GNU_HASH) 0x3b0 + 0x0000000000000005 (STRTAB) 0xf88 + 0x0000000000000006 (SYMTAB) 0x400 + 0x000000000000000a (STRSZ) 1446 (bytes) + 0x000000000000000b (SYMENT) 24 (bytes) + 0x0000000000000015 (DEBUG) 0x0 + 0x0000000000000003 (PLTGOT) 0x21c58 + 0x0000000000000002 (PLTRELSZ) 2400 (bytes) + 0x0000000000000014 (PLTREL) RELA + 0x0000000000000017 (JMPREL) 0x2af8 + 0x0000000000000007 (RELA) 0x16e8 + 0x0000000000000008 (RELASZ) 5136 (bytes) + 0x0000000000000009 (RELAENT) 24 (bytes) + 0x000000000000001e (FLAGS) BIND_NOW + 0x000000006ffffffb (FLAGS_1) Flags: NOW PIE + 0x000000006ffffffe (VERNEED) 0x1628 + 0x000000006fffffff (VERNEEDNUM) 2 + 0x000000006ffffff0 (VERSYM) 0x152e + 0x000000006ffffff9 (RELACOUNT) 201 + 0x0000000000000000 (NULL) 0x0 + +Relocation section '.rela.dyn' at offset 0x16e8 contains 214 entries: + Offset Info Type Sym. Value Sym. Name + Addend +000000020fd0 000000000008 R_X86_64_RELATIVE 6b80 +000000020fd8 000000000008 R_X86_64_RELATIVE 6b40 +000000020fe0 000000000008 R_X86_64_RELATIVE 19e42 +000000020fe8 000000000008 R_X86_64_RELATIVE 19e51 +000000021000 000000000008 R_X86_64_RELATIVE af40 +000000021008 000000000008 R_X86_64_RELATIVE afa0 +000000021010 000000000008 R_X86_64_RELATIVE af70 +000000021018 000000000008 R_X86_64_RELATIVE b060 +000000021020 000000000008 R_X86_64_RELATIVE 8250 +000000021028 000000000008 R_X86_64_RELATIVE 8280 +000000021030 000000000008 R_X86_64_RELATIVE 8260 +000000021038 000000000008 R_X86_64_RELATIVE 8330 +000000021040 000000000008 R_X86_64_RELATIVE b120 +000000021048 000000000008 R_X86_64_RELATIVE b240 +000000021050 000000000008 R_X86_64_RELATIVE b1b0 +000000021058 000000000008 R_X86_64_RELATIVE b350 +000000021060 000000000008 R_X86_64_RELATIVE 9c90 +000000021068 000000000008 R_X86_64_RELATIVE 9b70 +000000021070 000000000008 R_X86_64_RELATIVE 9d10 +000000021078 000000000008 R_X86_64_RELATIVE 9d90 +000000021080 000000000008 R_X86_64_RELATIVE ad00 +000000021088 000000000008 R_X86_64_RELATIVE adc0 +000000021090 000000000008 R_X86_64_RELATIVE ad60 +000000021098 000000000008 R_X86_64_RELATIVE ae80 +0000000210a0 000000000008 R_X86_64_RELATIVE 8120 +0000000210a8 000000000008 R_X86_64_RELATIVE 81a0 +0000000210b0 000000000008 R_X86_64_RELATIVE 8160 +0000000210b8 000000000008 R_X86_64_RELATIVE 8070 +0000000210c0 000000000008 R_X86_64_RELATIVE 87c0 +0000000210c8 000000000008 R_X86_64_RELATIVE 87f0 +0000000210d0 000000000008 R_X86_64_RELATIVE 87d0 +0000000210d8 000000000008 R_X86_64_RELATIVE 88a0 +000000021100 000000000008 R_X86_64_RELATIVE a700 +000000021108 000000000008 R_X86_64_RELATIVE ac10 +000000021110 000000000008 R_X86_64_RELATIVE a770 +000000021118 000000000008 R_X86_64_RELATIVE acf0 +000000021120 000000000008 R_X86_64_RELATIVE 8c80 +000000021128 000000000008 R_X86_64_RELATIVE 8d20 +000000021130 000000000008 R_X86_64_RELATIVE 8cd0 +000000021138 000000000008 R_X86_64_RELATIVE 8dd0 +000000021140 000000000008 R_X86_64_RELATIVE a440 +000000021148 000000000008 R_X86_64_RELATIVE a540 +000000021150 000000000008 R_X86_64_RELATIVE a4c0 +000000021158 000000000008 R_X86_64_RELATIVE a620 +000000021160 000000000008 R_X86_64_RELATIVE 8a50 +000000021168 000000000008 R_X86_64_RELATIVE 8990 +000000021170 000000000008 R_X86_64_RELATIVE 8ab0 +000000021178 000000000008 R_X86_64_RELATIVE 8b10 +000000021180 000000000008 R_X86_64_RELATIVE a7e0 +000000021188 000000000008 R_X86_64_RELATIVE a8c0 +000000021190 000000000008 R_X86_64_RELATIVE a850 +000000021198 000000000008 R_X86_64_RELATIVE a990 +0000000211a0 000000000008 R_X86_64_RELATIVE 8f30 +0000000211a8 000000000008 R_X86_64_RELATIVE 8e80 +0000000211b0 000000000008 R_X86_64_RELATIVE 8f80 +0000000211b8 000000000008 R_X86_64_RELATIVE 8fd0 +0000000211c0 000000000008 R_X86_64_RELATIVE aa60 +0000000211c8 000000000008 R_X86_64_RELATIVE ab40 +0000000211d0 000000000008 R_X86_64_RELATIVE aad0 +0000000211d8 000000000008 R_X86_64_RELATIVE ac20 +0000000211e0 000000000008 R_X86_64_RELATIVE 9080 +0000000211e8 000000000008 R_X86_64_RELATIVE 8bd0 +0000000211f0 000000000008 R_X86_64_RELATIVE 90d0 +0000000211f8 000000000008 R_X86_64_RELATIVE 9120 +000000021200 000000000008 R_X86_64_RELATIVE 19c61 +000000021208 000000000008 R_X86_64_RELATIVE 19e54 +000000021210 000000000008 R_X86_64_RELATIVE 19e59 +000000021218 000000000008 R_X86_64_RELATIVE 19c84 +000000021240 000000000008 R_X86_64_RELATIVE 19e5d +000000021248 000000000008 R_X86_64_RELATIVE 19e62 +000000021250 000000000008 R_X86_64_RELATIVE 19e68 +000000021258 000000000008 R_X86_64_RELATIVE 19e72 +000000021280 000000000008 R_X86_64_RELATIVE 1a08d +000000021288 000000000008 R_X86_64_RELATIVE 19e7b +000000021290 000000000008 R_X86_64_RELATIVE 19e7f +000000021298 000000000008 R_X86_64_RELATIVE 19e85 +0000000212a0 000000000008 R_X86_64_RELATIVE 19e8b +0000000212a8 000000000008 R_X86_64_RELATIVE 19e5d +0000000212b0 000000000008 R_X86_64_RELATIVE 19e8e +0000000212b8 000000000008 R_X86_64_RELATIVE 19e96 +0000000212c0 000000000008 R_X86_64_RELATIVE 19e93 +0000000212e0 000000000008 R_X86_64_RELATIVE 19e9a +0000000212e8 000000000008 R_X86_64_RELATIVE 19ea2 +0000000212f0 000000000008 R_X86_64_RELATIVE 19ea7 +0000000212f8 000000000008 R_X86_64_RELATIVE 19eae +000000021300 000000000008 R_X86_64_RELATIVE 19eb9 +000000021308 000000000008 R_X86_64_RELATIVE 19ec0 +000000021310 000000000008 R_X86_64_RELATIVE 19ec9 +000000021320 000000000008 R_X86_64_RELATIVE 19ed7 +000000021328 000000000008 R_X86_64_RELATIVE 19b66 +000000021330 000000000008 R_X86_64_RELATIVE 19edd +000000021338 000000000008 R_X86_64_RELATIVE 19ee1 +000000021340 000000000008 R_X86_64_RELATIVE 19ee7 +000000021348 000000000008 R_X86_64_RELATIVE 19eee +000000021350 000000000008 R_X86_64_RELATIVE 19ef4 +000000021360 000000000008 R_X86_64_RELATIVE 19e5d +000000021368 000000000008 R_X86_64_RELATIVE 19ce1 +000000021370 000000000008 R_X86_64_RELATIVE 19cd3 +000000021378 000000000008 R_X86_64_RELATIVE 19efd +000000021380 000000000008 R_X86_64_RELATIVE 19b1d +0000000213a0 000000000008 R_X86_64_RELATIVE 19f84 +0000000213c0 000000000008 R_X86_64_RELATIVE 1a079 +0000000213e0 000000000008 R_X86_64_RELATIVE 19f07 +000000021400 000000000008 R_X86_64_RELATIVE 19f11 +000000021420 000000000008 R_X86_64_RELATIVE 19f17 +000000021440 000000000008 R_X86_64_RELATIVE 19f21 +000000021460 000000000008 R_X86_64_RELATIVE 19e42 +000000021480 000000000008 R_X86_64_RELATIVE 19f39 +0000000214a0 000000000008 R_X86_64_RELATIVE 19f3f +0000000214c0 000000000008 R_X86_64_RELATIVE 19f49 +0000000214e0 000000000008 R_X86_64_RELATIVE 19f59 +000000021500 000000000008 R_X86_64_RELATIVE 19f62 +000000021520 000000000008 R_X86_64_RELATIVE 19f75 +000000021540 000000000008 R_X86_64_RELATIVE 19cd3 +000000021560 000000000008 R_X86_64_RELATIVE 19cb6 +000000021580 000000000008 R_X86_64_RELATIVE 19f7d +0000000215a0 000000000008 R_X86_64_RELATIVE 19f88 +0000000215c0 000000000008 R_X86_64_RELATIVE 19e72 +0000000215e0 000000000008 R_X86_64_RELATIVE 19e68 +000000021600 000000000008 R_X86_64_RELATIVE 19e51 +000000021620 000000000008 R_X86_64_RELATIVE 19f97 +000000021640 000000000008 R_X86_64_RELATIVE 1c4b0 +000000021660 000000000008 R_X86_64_RELATIVE 19fb0 +000000021680 000000000008 R_X86_64_RELATIVE 19fb5 +0000000216a0 000000000008 R_X86_64_RELATIVE 19d05 +0000000216c0 000000000008 R_X86_64_RELATIVE 19fbc +0000000216e0 000000000008 R_X86_64_RELATIVE 19fc8 +000000021700 000000000008 R_X86_64_RELATIVE 19fd0 +000000021720 000000000008 R_X86_64_RELATIVE 19d17 +000000021740 000000000008 R_X86_64_RELATIVE 19fdb +000000021760 000000000008 R_X86_64_RELATIVE 19ce8 +000000021780 000000000008 R_X86_64_RELATIVE 19fe5 +0000000217a0 000000000008 R_X86_64_RELATIVE 19cda +0000000217c0 000000000008 R_X86_64_RELATIVE 19ff8 +0000000217e0 000000000008 R_X86_64_RELATIVE 19ce1 +000000021800 000000000008 R_X86_64_RELATIVE 1a000 +000000021820 000000000008 R_X86_64_RELATIVE 19cf1 +000000021840 000000000008 R_X86_64_RELATIVE 19cf9 +000000021860 000000000008 R_X86_64_RELATIVE 1a00b +000000021880 000000000008 R_X86_64_RELATIVE 1a016 +0000000218a0 000000000008 R_X86_64_RELATIVE 1a01e +0000000218c0 000000000008 R_X86_64_RELATIVE 1a025 +0000000218e0 000000000008 R_X86_64_RELATIVE 19b1d +000000021920 000000000008 R_X86_64_RELATIVE 19c6a +000000021928 000000000008 R_X86_64_RELATIVE 1a02a +000000021930 000000000008 R_X86_64_RELATIVE 1a02d +000000021938 000000000008 R_X86_64_RELATIVE 19f72 +000000021940 000000000008 R_X86_64_RELATIVE 19e8b +000000021948 000000000008 R_X86_64_RELATIVE 1a030 +000000021950 000000000008 R_X86_64_RELATIVE 1a033 +000000021958 000000000008 R_X86_64_RELATIVE 1a036 +000000021960 000000000008 R_X86_64_RELATIVE 1a039 +000000021968 000000000008 R_X86_64_RELATIVE 19e5a +000000021970 000000000008 R_X86_64_RELATIVE 1a03c +000000021978 000000000008 R_X86_64_RELATIVE 1a03f +000000021980 000000000008 R_X86_64_RELATIVE 1a042 +000000021988 000000000008 R_X86_64_RELATIVE 1a022 +000000021990 000000000008 R_X86_64_RELATIVE 1a045 +000000021998 000000000008 R_X86_64_RELATIVE 1a048 +0000000219a0 000000000008 R_X86_64_RELATIVE 1a04b +0000000219a8 000000000008 R_X86_64_RELATIVE 1a04e +0000000219b0 000000000008 R_X86_64_RELATIVE 19f36 +0000000219b8 000000000008 R_X86_64_RELATIVE 1a051 +0000000219c0 000000000008 R_X86_64_RELATIVE 1a054 +0000000219c8 000000000008 R_X86_64_RELATIVE 1a057 +0000000219d0 000000000008 R_X86_64_RELATIVE 1a05a +0000000219d8 000000000008 R_X86_64_RELATIVE 1a05d +000000021a00 000000000008 R_X86_64_RELATIVE 19fc8 +000000021a08 000000000008 R_X86_64_RELATIVE 1a060 +000000021a10 000000000008 R_X86_64_RELATIVE 1a066 +000000021a18 000000000008 R_X86_64_RELATIVE 1a073 +000000021a20 000000000008 R_X86_64_RELATIVE 1a080 +000000021a28 000000000008 R_X86_64_RELATIVE 19b09 +000000021a30 000000000008 R_X86_64_RELATIVE 1a094 +000000021a38 000000000008 R_X86_64_RELATIVE 1a079 +000000021a40 000000000008 R_X86_64_RELATIVE 19c84 +000000021a48 000000000008 R_X86_64_RELATIVE 1a09c +000000022008 000000000008 R_X86_64_RELATIVE 22008 +0000000220a0 000000000008 R_X86_64_RELATIVE 98a0 +0000000220c8 000000000008 R_X86_64_RELATIVE 1a0a4 +0000000220d8 000000000008 R_X86_64_RELATIVE 19989 +0000000220f8 000000000008 R_X86_64_RELATIVE 19b00 +000000022128 000000000008 R_X86_64_RELATIVE 1a0a7 +000000022138 000000000008 R_X86_64_RELATIVE 1a0ad +000000022148 000000000008 R_X86_64_RELATIVE 1a0bc +000000022158 000000000008 R_X86_64_RELATIVE 1a0b3 +000000022168 000000000008 R_X86_64_RELATIVE 1a0b9 +000000022178 000000000008 R_X86_64_RELATIVE 1a0b9 +0000000221a8 000000000008 R_X86_64_RELATIVE 1a0bf +0000000221b8 000000000008 R_X86_64_RELATIVE 1a0b3 +0000000221c8 000000000008 R_X86_64_RELATIVE 1a0c5 +0000000221d8 000000000008 R_X86_64_RELATIVE 1a0cb +0000000221e8 000000000008 R_X86_64_RELATIVE 1a0d1 +0000000221f8 000000000008 R_X86_64_RELATIVE 1a0d7 +000000022208 000000000008 R_X86_64_RELATIVE 1a0dd +000000022218 000000000008 R_X86_64_RELATIVE 1a0e3 +000000022238 000000000008 R_X86_64_RELATIVE 1a0e9 +000000022240 000000000008 R_X86_64_RELATIVE 1a0ed +000000022248 000000000008 R_X86_64_RELATIVE 1a0f7 +000000022268 000000000008 R_X86_64_RELATIVE 23440 +000000022270 000000000008 R_X86_64_RELATIVE 22260 +000000021f90 007600000006 R_X86_64_GLOB_DAT 0000000000000000 free@GLIBC_2.2.5 + 0 +000000021f98 000700000006 R_X86_64_GLOB_DAT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +000000021fa0 000b00000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_deregisterTM[...] + 0 +000000021fa8 000c00000006 R_X86_64_GLOB_DAT 0000000000000000 stdout@GLIBC_2.2.5 + 0 +000000021fb0 001d00000006 R_X86_64_GLOB_DAT 0000000000000000 optind@GLIBC_2.2.5 + 0 +000000021fb8 003e00000006 R_X86_64_GLOB_DAT 0000000000000000 optarg@GLIBC_2.2.5 + 0 +000000021fc0 004100000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000021fc8 004300000006 R_X86_64_GLOB_DAT 0000000000000000 program_invocatio[...]@GLIBC_2.2.5 + 0 +000000021fd0 007800000006 R_X86_64_GLOB_DAT 0000000000000000 malloc@GLIBC_2.2.5 + 0 +000000021fd8 006500000006 R_X86_64_GLOB_DAT 0000000000000000 _ITM_registerTMCl[...] + 0 +000000021fe0 006a00000006 R_X86_64_GLOB_DAT 0000000000000000 program_invocatio[...]@GLIBC_2.2.5 + 0 +000000021fe8 007500000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.2.5 + 0 +000000021ff0 006f00000006 R_X86_64_GLOB_DAT 0000000000000000 stderr@GLIBC_2.2.5 + 0 + +Relocation section '.rela.plt' at offset 0x2af8 contains 100 entries: + Offset Info Type Sym. Value Sym. Name + Addend +000000021c70 000100000007 R_X86_64_JUMP_SLO 0000000000000000 __ctype_toupper_loc@GLIBC_2.3 + 0 +000000021c78 000200000007 R_X86_64_JUMP_SLO 0000000000000000 getenv@GLIBC_2.2.5 + 0 +000000021c80 000400000007 R_X86_64_JUMP_SLO 0000000000000000 sigprocmask@GLIBC_2.2.5 + 0 +000000021c88 000500000007 R_X86_64_JUMP_SLO 0000000000000000 __snprintf_chk@GLIBC_2.3.4 + 0 +000000021c90 000600000007 R_X86_64_JUMP_SLO 0000000000000000 raise@GLIBC_2.2.5 + 0 +000000021c98 000800000007 R_X86_64_JUMP_SLO 0000000000000000 abort@GLIBC_2.2.5 + 0 +000000021ca0 000900000007 R_X86_64_JUMP_SLO 0000000000000000 __errno_location@GLIBC_2.2.5 + 0 +000000021ca8 000a00000007 R_X86_64_JUMP_SLO 0000000000000000 strncmp@GLIBC_2.2.5 + 0 +000000021cb0 000d00000007 R_X86_64_JUMP_SLO 0000000000000000 localtime_r@GLIBC_2.2.5 + 0 +000000021cb8 000e00000007 R_X86_64_JUMP_SLO 0000000000000000 _exit@GLIBC_2.2.5 + 0 +000000021cc0 000f00000007 R_X86_64_JUMP_SLO 0000000000000000 strcpy@GLIBC_2.2.5 + 0 +000000021cc8 001000000007 R_X86_64_JUMP_SLO 0000000000000000 __mbstowcs_chk@GLIBC_2.4 + 0 +000000021cd0 001100000007 R_X86_64_JUMP_SLO 0000000000000000 __fpending@GLIBC_2.2.5 + 0 +000000021cd8 001200000007 R_X86_64_JUMP_SLO 0000000000000000 isatty@GLIBC_2.2.5 + 0 +000000021ce0 001300000007 R_X86_64_JUMP_SLO 0000000000000000 sigaction@GLIBC_2.2.5 + 0 +000000021ce8 001400000007 R_X86_64_JUMP_SLO 0000000000000000 iswcntrl@GLIBC_2.2.5 + 0 +000000021cf0 001500000007 R_X86_64_JUMP_SLO 0000000000000000 wcswidth@GLIBC_2.2.5 + 0 +000000021cf8 001600000007 R_X86_64_JUMP_SLO 0000000000000000 localeconv@GLIBC_2.2.5 + 0 +000000021d00 001700000007 R_X86_64_JUMP_SLO 0000000000000000 mbstowcs@GLIBC_2.2.5 + 0 +000000021d08 001800000007 R_X86_64_JUMP_SLO 0000000000000000 readlink@GLIBC_2.2.5 + 0 +000000021d10 001900000007 R_X86_64_JUMP_SLO 0000000000000000 clock_gettime@GLIBC_2.17 + 0 +000000021d18 001a00000007 R_X86_64_JUMP_SLO 0000000000000000 setenv@GLIBC_2.2.5 + 0 +000000021d20 001b00000007 R_X86_64_JUMP_SLO 0000000000000000 textdomain@GLIBC_2.2.5 + 0 +000000021d28 001c00000007 R_X86_64_JUMP_SLO 0000000000000000 fclose@GLIBC_2.2.5 + 0 +000000021d30 001e00000007 R_X86_64_JUMP_SLO 0000000000000000 opendir@GLIBC_2.2.5 + 0 +000000021d38 001f00000007 R_X86_64_JUMP_SLO 0000000000000000 getpwuid@GLIBC_2.2.5 + 0 +000000021d40 002000000007 R_X86_64_JUMP_SLO 0000000000000000 bindtextdomain@GLIBC_2.2.5 + 0 +000000021d48 002100000007 R_X86_64_JUMP_SLO 0000000000000000 dcgettext@GLIBC_2.2.5 + 0 +000000021d50 002200000007 R_X86_64_JUMP_SLO 0000000000000000 __ctype_get_mb_cur_max@GLIBC_2.2.5 + 0 +000000021d58 002300000007 R_X86_64_JUMP_SLO 0000000000000000 strlen@GLIBC_2.2.5 + 0 +000000021d60 002400000007 R_X86_64_JUMP_SLO 0000000000000000 __stack_chk_fail@GLIBC_2.4 + 0 +000000021d68 002500000007 R_X86_64_JUMP_SLO 0000000000000000 getopt_long@GLIBC_2.2.5 + 0 +000000021d70 002600000007 R_X86_64_JUMP_SLO 0000000000000000 mbrtowc@GLIBC_2.2.5 + 0 +000000021d78 002700000007 R_X86_64_JUMP_SLO 0000000000000000 freecon@LIBSELINUX_1.0 + 0 +000000021d80 002800000007 R_X86_64_JUMP_SLO 0000000000000000 strchr@GLIBC_2.2.5 + 0 +000000021d88 002900000007 R_X86_64_JUMP_SLO 0000000000000000 getgrgid@GLIBC_2.2.5 + 0 +000000021d90 002a00000007 R_X86_64_JUMP_SLO 0000000000000000 snprintf@GLIBC_2.2.5 + 0 +000000021d98 002b00000007 R_X86_64_JUMP_SLO 0000000000000000 __overflow@GLIBC_2.2.5 + 0 +000000021da0 002c00000007 R_X86_64_JUMP_SLO 0000000000000000 strrchr@GLIBC_2.2.5 + 0 +000000021da8 002d00000007 R_X86_64_JUMP_SLO 0000000000000000 gmtime_r@GLIBC_2.2.5 + 0 +000000021db0 002e00000007 R_X86_64_JUMP_SLO 0000000000000000 lseek@GLIBC_2.2.5 + 0 +000000021db8 002f00000007 R_X86_64_JUMP_SLO 0000000000000000 __assert_fail@GLIBC_2.2.5 + 0 +000000021dc0 003000000007 R_X86_64_JUMP_SLO 0000000000000000 fnmatch@GLIBC_2.2.5 + 0 +000000021dc8 003100000007 R_X86_64_JUMP_SLO 0000000000000000 memset@GLIBC_2.2.5 + 0 +000000021dd0 003200000007 R_X86_64_JUMP_SLO 0000000000000000 ioctl@GLIBC_2.2.5 + 0 +000000021dd8 003300000007 R_X86_64_JUMP_SLO 0000000000000000 getcwd@GLIBC_2.2.5 + 0 +000000021de0 003400000007 R_X86_64_JUMP_SLO 0000000000000000 closedir@GLIBC_2.2.5 + 0 +000000021de8 003500000007 R_X86_64_JUMP_SLO 0000000000000000 lstat@GLIBC_2.33 + 0 +000000021df0 003600000007 R_X86_64_JUMP_SLO 0000000000000000 memcmp@GLIBC_2.2.5 + 0 +000000021df8 003700000007 R_X86_64_JUMP_SLO 0000000000000000 _setjmp@GLIBC_2.2.5 + 0 +000000021e00 003800000007 R_X86_64_JUMP_SLO 0000000000000000 fputs_unlocked@GLIBC_2.2.5 + 0 +000000021e08 003900000007 R_X86_64_JUMP_SLO 0000000000000000 calloc@GLIBC_2.2.5 + 0 +000000021e10 003a00000007 R_X86_64_JUMP_SLO 0000000000000000 strcmp@GLIBC_2.2.5 + 0 +000000021e18 003b00000007 R_X86_64_JUMP_SLO 0000000000000000 signal@GLIBC_2.2.5 + 0 +000000021e20 003c00000007 R_X86_64_JUMP_SLO 0000000000000000 dirfd@GLIBC_2.2.5 + 0 +000000021e28 003d00000007 R_X86_64_JUMP_SLO 0000000000000000 fputc_unlocked@GLIBC_2.2.5 + 0 +000000021e30 003f00000007 R_X86_64_JUMP_SLO 0000000000000000 __memcpy_chk@GLIBC_2.3.4 + 0 +000000021e38 004000000007 R_X86_64_JUMP_SLO 0000000000000000 sigemptyset@GLIBC_2.2.5 + 0 +000000021e40 004200000007 R_X86_64_JUMP_SLO 0000000000000000 memcpy@GLIBC_2.14 + 0 +000000021e48 004400000007 R_X86_64_JUMP_SLO 0000000000000000 tzset@GLIBC_2.2.5 + 0 +000000021e50 004500000007 R_X86_64_JUMP_SLO 0000000000000000 fileno@GLIBC_2.2.5 + 0 +000000021e58 004600000007 R_X86_64_JUMP_SLO 0000000000000000 tcgetpgrp@GLIBC_2.2.5 + 0 +000000021e60 004700000007 R_X86_64_JUMP_SLO 0000000000000000 readdir@GLIBC_2.2.5 + 0 +000000021e68 004800000007 R_X86_64_JUMP_SLO 0000000000000000 wcwidth@GLIBC_2.2.5 + 0 +000000021e70 004900000007 R_X86_64_JUMP_SLO 0000000000000000 fflush@GLIBC_2.2.5 + 0 +000000021e78 004a00000007 R_X86_64_JUMP_SLO 0000000000000000 nl_langinfo@GLIBC_2.2.5 + 0 +000000021e80 004b00000007 R_X86_64_JUMP_SLO 0000000000000000 strcoll@GLIBC_2.2.5 + 0 +000000021e88 004c00000007 R_X86_64_JUMP_SLO 0000000000000000 mktime@GLIBC_2.2.5 + 0 +000000021e90 004d00000007 R_X86_64_JUMP_SLO 0000000000000000 __freading@GLIBC_2.2.5 + 0 +000000021e98 004e00000007 R_X86_64_JUMP_SLO 0000000000000000 fwrite_unlocked@GLIBC_2.2.5 + 0 +000000021ea0 004f00000007 R_X86_64_JUMP_SLO 0000000000000000 realloc@GLIBC_2.2.5 + 0 +000000021ea8 005000000007 R_X86_64_JUMP_SLO 0000000000000000 stpncpy@GLIBC_2.2.5 + 0 +000000021eb0 005100000007 R_X86_64_JUMP_SLO 0000000000000000 setlocale@GLIBC_2.2.5 + 0 +000000021eb8 005200000007 R_X86_64_JUMP_SLO 0000000000000000 __printf_chk@GLIBC_2.3.4 + 0 +000000021ec0 005300000007 R_X86_64_JUMP_SLO 0000000000000000 statx@GLIBC_2.28 + 0 +000000021ec8 005400000007 R_X86_64_JUMP_SLO 0000000000000000 timegm@GLIBC_2.2.5 + 0 +000000021ed0 005500000007 R_X86_64_JUMP_SLO 0000000000000000 strftime@GLIBC_2.2.5 + 0 +000000021ed8 005600000007 R_X86_64_JUMP_SLO 0000000000000000 mempcpy@GLIBC_2.2.5 + 0 +000000021ee0 005700000007 R_X86_64_JUMP_SLO 0000000000000000 memmove@GLIBC_2.2.5 + 0 +000000021ee8 005800000007 R_X86_64_JUMP_SLO 0000000000000000 error@GLIBC_2.2.5 + 0 +000000021ef0 005a00000007 R_X86_64_JUMP_SLO 0000000000000000 fseeko@GLIBC_2.2.5 + 0 +000000021ef8 005b00000007 R_X86_64_JUMP_SLO 0000000000000000 strtoumax@GLIBC_2.2.5 + 0 +000000021f00 005c00000007 R_X86_64_JUMP_SLO 0000000000000000 unsetenv@GLIBC_2.2.5 + 0 +000000021f08 005d00000007 R_X86_64_JUMP_SLO 0000000000000000 __cxa_atexit@GLIBC_2.2.5 + 0 +000000021f10 005e00000007 R_X86_64_JUMP_SLO 0000000000000000 wcstombs@GLIBC_2.2.5 + 0 +000000021f18 005f00000007 R_X86_64_JUMP_SLO 0000000000000000 getxattr@GLIBC_2.3 + 0 +000000021f20 006000000007 R_X86_64_JUMP_SLO 0000000000000000 gethostname@GLIBC_2.2.5 + 0 +000000021f28 006100000007 R_X86_64_JUMP_SLO 0000000000000000 sigismember@GLIBC_2.2.5 + 0 +000000021f30 006200000007 R_X86_64_JUMP_SLO 0000000000000000 exit@GLIBC_2.2.5 + 0 +000000021f38 006300000007 R_X86_64_JUMP_SLO 0000000000000000 fwrite@GLIBC_2.2.5 + 0 +000000021f40 006400000007 R_X86_64_JUMP_SLO 0000000000000000 __fprintf_chk@GLIBC_2.3.4 + 0 +000000021f48 006600000007 R_X86_64_JUMP_SLO 0000000000000000 getfilecon@LIBSELINUX_1.0 + 0 +000000021f50 006700000007 R_X86_64_JUMP_SLO 0000000000000000 fflush_unlocked@GLIBC_2.2.5 + 0 +000000021f58 006800000007 R_X86_64_JUMP_SLO 0000000000000000 mbsinit@GLIBC_2.2.5 + 0 +000000021f60 006900000007 R_X86_64_JUMP_SLO 0000000000000000 lgetfilecon@LIBSELINUX_1.0 + 0 +000000021f68 006b00000007 R_X86_64_JUMP_SLO 0000000000000000 iswprint@GLIBC_2.2.5 + 0 +000000021f70 006c00000007 R_X86_64_JUMP_SLO 0000000000000000 sigaddset@GLIBC_2.2.5 + 0 +000000021f78 006d00000007 R_X86_64_JUMP_SLO 0000000000000000 __ctype_tolower_loc@GLIBC_2.3 + 0 +000000021f80 006e00000007 R_X86_64_JUMP_SLO 0000000000000000 __ctype_b_loc@GLIBC_2.3 + 0 +000000021f88 007000000007 R_X86_64_JUMP_SLO 0000000000000000 __sprintf_chk@GLIBC_2.3.4 + 0 +No processor specific unwind information to decode + +Symbol table '.dynsym' contains 123 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __[...]@GLIBC_2.3 (2) + 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 3: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.3.4 (4) + 6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND raise@GLIBC_2.2.5 (3) + 7: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _[...]@GLIBC_2.34 (5) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.2.5 (3) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 10: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 11: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterT[...] + 12: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 14: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _exit@GLIBC_2.2.5 (3) + 15: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 16: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __[...]@GLIBC_2.4 (6) + 17: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 18: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 19: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 20: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 21: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 22: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 23: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 24: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 25: 0000000000000000 0 FUNC GLOBAL DEFAULT UND c[...]@GLIBC_2.17 (7) + 26: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 27: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 28: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 29: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 30: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 31: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 32: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 33: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 34: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 35: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 36: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __[...]@GLIBC_2.4 (6) + 37: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 38: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 39: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@LIBSELINUX_1.0 (8) + 40: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 41: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 42: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 43: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 44: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 45: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 46: 0000000000000000 0 FUNC GLOBAL DEFAULT UND lseek@GLIBC_2.2.5 (3) + 47: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 48: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 49: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 50: 0000000000000000 0 FUNC GLOBAL DEFAULT UND ioctl@GLIBC_2.2.5 (3) + 51: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 52: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 53: 0000000000000000 0 FUNC GLOBAL DEFAULT UND lstat@GLIBC_2.33 (9) + 54: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 55: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 56: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 57: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 58: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 59: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 60: 0000000000000000 0 FUNC GLOBAL DEFAULT UND dirfd@GLIBC_2.2.5 (3) + 61: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 62: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 63: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.3.4 (4) + 64: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 65: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 66: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.14 (10) + 67: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND tzset@GLIBC_2.2.5 (3) + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 71: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 72: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 73: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 74: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 75: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 76: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 77: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 81: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 82: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.3.4 (4) + 83: 0000000000000000 0 FUNC GLOBAL DEFAULT UND statx@GLIBC_2.28 (11) + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND error@GLIBC_2.2.5 (3) + 89: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 90: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 91: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 92: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 93: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 94: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 95: 0000000000000000 0 FUNC GLOBAL DEFAULT UND ge[...]@GLIBC_2.3 (2) + 96: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 97: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 98: 0000000000000000 0 FUNC GLOBAL DEFAULT UND exit@GLIBC_2.2.5 (3) + 99: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 100: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.3.4 (4) + 101: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMC[...] + 102: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@LIBSELINUX_1.0 (8) + 103: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 104: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 105: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@LIBSELINUX_1.0 (8) + 106: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 107: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 108: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 109: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __[...]@GLIBC_2.3 (2) + 110: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __[...]@GLIBC_2.3 (2) + 111: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 112: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.3.4 (4) + 113: 00000000000220a0 8 OBJECT GLOBAL DEFAULT 26 obstack_alloc_fa[...] + 114: 000000000000fc60 296 FUNC GLOBAL DEFAULT 16 _obstack_newchunk + 115: 000000000000fc40 25 FUNC GLOBAL DEFAULT 16 _obstack_begin_1 + 116: 0000000000010680 55 FUNC GLOBAL DEFAULT 16 _obstack_allocated_p + 117: 0000000000000000 0 FUNC WEAK DEFAULT UND [...]@GLIBC_2.2.5 (3) + 118: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.2.5 (3) + 119: 000000000000fc20 21 FUNC GLOBAL DEFAULT 16 _obstack_begin + 120: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [...]@GLIBC_2.2.5 (3) + 121: 0000000000010750 38 FUNC GLOBAL DEFAULT 16 _obstack_memory_used + 122: 00000000000106c0 133 FUNC GLOBAL DEFAULT 16 _obstack_free + +Histogram for `.gnu.hash' bucket list length (total of 3 buckets): + Length Number % of total Coverage + 0 0 ( 0.0%) + 1 1 ( 33.3%) 10.0% + 2 0 ( 0.0%) 10.0% + 3 0 ( 0.0%) 10.0% + 4 1 ( 33.3%) 50.0% + 5 1 ( 33.3%) 100.0% + +Version symbols section '.gnu.version' contains 123 entries: + Addr: 0x000000000000152e Offset: 0x00152e Link: 6 (.dynsym) + 000: 0 (*local*) 2 (GLIBC_2.3) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 004: 3 (GLIBC_2.2.5) 4 (GLIBC_2.3.4) 3 (GLIBC_2.2.5) 5 (GLIBC_2.34) + 008: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 1 (*global*) + 00c: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 010: 6 (GLIBC_2.4) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 014: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 018: 3 (GLIBC_2.2.5) 7 (GLIBC_2.17) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 01c: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 020: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 024: 6 (GLIBC_2.4) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 8 (LIBSELINUX_1.0) + 028: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 02c: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 030: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 034: 3 (GLIBC_2.2.5) 9 (GLIBC_2.33) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 038: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 03c: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 4 (GLIBC_2.3.4) + 040: 3 (GLIBC_2.2.5) 1 (*global*) a (GLIBC_2.14) 3 (GLIBC_2.2.5) + 044: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 048: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 04c: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 050: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 4 (GLIBC_2.3.4) b (GLIBC_2.28) + 054: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 058: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 05c: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 2 (GLIBC_2.3) + 060: 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 064: 4 (GLIBC_2.3.4) 1 (*global*) 8 (LIBSELINUX_1.0) 3 (GLIBC_2.2.5) + 068: 3 (GLIBC_2.2.5) 8 (LIBSELINUX_1.0) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) + 06c: 3 (GLIBC_2.2.5) 2 (GLIBC_2.3) 2 (GLIBC_2.3) 3 (GLIBC_2.2.5) + 070: 4 (GLIBC_2.3.4) 1 (*global*) 1 (*global*) 1 (*global*) + 074: 1 (*global*) 3 (GLIBC_2.2.5) 3 (GLIBC_2.2.5) 1 (*global*) + 078: 3 (GLIBC_2.2.5) 1 (*global*) 1 (*global*) + +Version needs section '.gnu.version_r' contains 2 entries: + Addr: 0x0000000000001628 Offset: 0x001628 Link: 7 (.dynstr) + 000000: Version: 1 File: libselinux.so.1 Cnt: 1 + 0x0010: Name: LIBSELINUX_1.0 Flags: none Version: 8 + 0x0020: Version: 1 File: libc.so.6 Cnt: 9 + 0x0030: Name: GLIBC_2.28 Flags: none Version: 11 + 0x0040: Name: GLIBC_2.14 Flags: none Version: 10 + 0x0050: Name: GLIBC_2.33 Flags: none Version: 9 + 0x0060: Name: GLIBC_2.17 Flags: none Version: 7 + 0x0070: Name: GLIBC_2.4 Flags: none Version: 6 + 0x0080: Name: GLIBC_2.34 Flags: none Version: 5 + 0x0090: Name: GLIBC_2.3.4 Flags: none Version: 4 + 0x00a0: Name: GLIBC_2.2.5 Flags: none Version: 3 + 0x00b0: Name: GLIBC_2.3 Flags: none Version: 2 + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 feature: IBT, SHSTK + x86 ISA needed: x86-64-baseline + +Displaying notes found in: .note.gnu.build-id + Owner Data size Description + GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) + Build ID: 36b86f957a1be53733633d184c3a3354f3fc7b12 + +Displaying notes found in: .note.ABI-tag + Owner Data size Description + GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag) + OS: Linux, ABI: 3.2.0 diff --git a/doc/protocols.txt b/doc/protocols.txt new file mode 100755 index 0000000..0e52a3d --- /dev/null +++ b/doc/protocols.txt @@ -0,0 +1,41 @@ +vim: shiftwidth=3 + +Rosetta Operating System: Protocols +=================================== + +1 Introduction +-------------- + + Due to its nature as a message-passing operating system, a standard + "langauge" is needed in order to allow different components of the system + to communicate with each other. This document describes the communication + layer built on top of kernel IPC primitives to facilitate the fast transfer + of structured data between components. + + +2 Design Goals +-------------- + + The key consideration for Protocols is low-overhead and speed. All system + functionality is accessed via sending messages, so any speed or memory costs + incurred will affect the performance of the entire system. + + In addition, Protocols should be language-agnostic. Two components written + in two different programming languages should be able to communicate as long + as they both understand the same protocol. + + +3 Overview +---------- + + Protocols is a very thin layer overtop of Mango ports. It provides a + declarative language for describing message layouts in a language-agnostic + format, and a tool for generating concrete implementations of protocols in + various programming languages. + + Protocols makes heavy use of Mango's I/O vectors facility to avoid performing + any dynamic memory allocation or unnecessary copying of data. As often as + possible, any parameters you pass to a protocol function will be copied + directly into the address space of the recipient. This makes Protocols + essentially free to use. + diff --git a/doc/protocols/rosetta/io/Directory.rp b/doc/protocols/rosetta/io/Directory.rp new file mode 100755 index 0000000..5d83b41 --- /dev/null +++ b/doc/protocols/rosetta/io/Directory.rp @@ -0,0 +1,16 @@ + +mod rosetta.io; + +protocol Directory; + +struct Entry { + char[64] name; +} + +msg Open + -> string path, i32 flags; + <- i32 status; + +msg GetEntries + -> i32 count; + <- diff --git a/doc/protocols/rosetta/io/File.rp b/doc/protocols/rosetta/io/File.rp new file mode 100755 index 0000000..d2f3e5b --- /dev/null +++ b/doc/protocols/rosetta/io/File.rp @@ -0,0 +1,12 @@ + +mod rosetta.io; + +protocol File: + +msg Read + -> u32 count; + <- i32 status, char[] data; + +msg Write + -> char[] data; + <- i32 status; diff --git a/doc/protocols/rosetta/sys/SecurityManager.proto b/doc/protocols/rosetta/sys/SecurityManager.proto new file mode 100755 index 0000000..e69de29 diff --git a/doc/protocols/rosetta/sys/SystemManager.proto b/doc/protocols/rosetta/sys/SystemManager.proto new file mode 100755 index 0000000..e69de29 diff --git a/doc/service-hierarchy.txt b/doc/service-hierarchy.txt new file mode 100755 index 0000000..c9151cb --- /dev/null +++ b/doc/service-hierarchy.txt @@ -0,0 +1,9 @@ +systemd ++--fsd [fs-ext2.so] ++--emdevd ++--lockdownd ++--seatd ++--sessiond +| +--bash +| +--nano ++--airportd diff --git a/doc/simple.elf.dump.txt b/doc/simple.elf.dump.txt new file mode 100755 index 0000000..673979e --- /dev/null +++ b/doc/simple.elf.dump.txt @@ -0,0 +1,76 @@ + +simple: file format elf64-x86-64 + + +Disassembly of section .text: + +00000000004000b0 : + 4000b0: 55 push %rbp + 4000b1: 48 89 e5 mov %rsp,%rbp + 4000b4: b8 34 12 00 00 mov $0x1234,%eax + 4000b9: 5d pop %rbp + 4000ba: c3 ret + +00000000004000bb : + 4000bb: 55 push %rbp + 4000bc: 48 89 e5 mov %rsp,%rbp + 4000bf: b8 00 d0 00 00 mov $0xd000,%eax + 4000c4: 5d pop %rbp + 4000c5: c3 ret + +00000000004000c6 : + 4000c6: 55 push %rbp + 4000c7: 48 89 e5 mov %rsp,%rbp + 4000ca: b8 25 00 00 00 mov $0x25,%eax + 4000cf: 5d pop %rbp + 4000d0: c3 ret + +00000000004000d1 <_start>: + 4000d1: 55 push %rbp + 4000d2: 48 89 e5 mov %rsp,%rbp + 4000d5: 41 54 push %r12 + 4000d7: 53 push %rbx + 4000d8: 48 83 ec 10 sub $0x10,%rsp + 4000dc: b8 00 00 00 00 mov $0x0,%eax + 4000e1: e8 ca ff ff ff call 4000b0 + 4000e6: 41 89 c4 mov %eax,%r12d + 4000e9: b8 00 00 00 00 mov $0x0,%eax + 4000ee: e8 c8 ff ff ff call 4000bb + 4000f3: 89 c3 mov %eax,%ebx + 4000f5: b8 00 00 00 00 mov $0x0,%eax + 4000fa: e8 c7 ff ff ff call 4000c6 + 4000ff: 0f af c3 imul %ebx,%eax + 400102: 44 01 e0 add %r12d,%eax + 400105: 89 45 e8 mov %eax,-0x18(%rbp) + 400108: 8b 15 12 11 01 00 mov 0x11112(%rip),%edx # 411220 + 40010e: 8b 45 e8 mov -0x18(%rbp),%eax + 400111: 01 d0 add %edx,%eax + 400113: 89 05 07 11 01 00 mov %eax,0x11107(%rip) # 411220 + 400119: 8b 15 fd 10 01 00 mov 0x110fd(%rip),%edx # 41121c + 40011f: 8b 45 e8 mov -0x18(%rbp),%eax + 400122: 01 d0 add %edx,%eax + 400124: 89 05 f2 10 01 00 mov %eax,0x110f2(%rip) # 41121c + 40012a: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%rbp) + 400131: eb 24 jmp 400157 <_start+0x86> + 400133: 8b 45 ec mov -0x14(%rbp),%eax + 400136: 48 98 cltq + 400138: 0f b6 80 80 01 40 00 movzbl 0x400180(%rax),%eax + 40013f: 89 c2 mov %eax,%edx + 400141: 8b 45 e8 mov -0x18(%rbp),%eax + 400144: 01 d0 add %edx,%eax + 400146: 89 c2 mov %eax,%edx + 400148: 8b 45 ec mov -0x14(%rbp),%eax + 40014b: 48 98 cltq + 40014d: 88 90 40 12 41 00 mov %dl,0x411240(%rax) + 400153: 83 45 ec 01 addl $0x1,-0x14(%rbp) + 400157: 8b 45 ec mov -0x14(%rbp),%eax + 40015a: 3d ff ff 00 00 cmp $0xffff,%eax + 40015f: 76 d2 jbe 400133 <_start+0x62> + 400161: 8b 15 b9 10 01 00 mov 0x110b9(%rip),%edx # 411220 + 400167: 8b 05 af 10 01 00 mov 0x110af(%rip),%eax # 41121c + 40016d: 01 d0 add %edx,%eax + 40016f: 48 83 c4 10 add $0x10,%rsp + 400173: 5b pop %rbx + 400174: 41 5c pop %r12 + 400176: 5d pop %rbp + 400177: c3 ret diff --git a/doc/simple.elf.txt b/doc/simple.elf.txt new file mode 100755 index 0000000..d83e622 --- /dev/null +++ b/doc/simple.elf.txt @@ -0,0 +1,87 @@ +ELF Header: + Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 + Class: ELF64 + Data: 2's complement, little endian + Version: 1 (current) + OS/ABI: UNIX - System V + ABI Version: 0 + Type: EXEC (Executable file) + Machine: Advanced Micro Devices X86-64 + Version: 0x1 + Entry point address: 0x4000d1 + Start of program headers: 64 (bytes into file) + Start of section headers: 66560 (bytes into file) + Flags: 0x0 + Size of this header: 64 (bytes) + Size of program headers: 56 (bytes) + Number of program headers: 2 + Size of section headers: 64 (bytes) + Number of section headers: 10 + Section header string table index: 9 + +Section Headers: + [Nr] Name Type Address Offset + Size EntSize Flags Link Info Align + [ 0] NULL 0000000000000000 00000000 + 0000000000000000 0000000000000000 0 0 0 + [ 1] .text PROGBITS 00000000004000b0 000000b0 + 00000000000000c8 0000000000000000 AX 0 0 1 + [ 2] .rodata PROGBITS 0000000000400180 00000180 + 0000000000010000 0000000000000000 A 0 0 32 + [ 3] .eh_frame PROGBITS 0000000000410180 00010180 + 000000000000009c 0000000000000000 A 0 0 8 + [ 4] .data PROGBITS 000000000041121c 0001021c + 0000000000000004 0000000000000000 WA 0 0 4 + [ 5] .bss NOBITS 0000000000411220 00010220 + 0000000000010020 0000000000000000 WA 0 0 32 + [ 6] .comment PROGBITS 0000000000000000 00010220 + 0000000000000012 0000000000000001 MS 0 0 1 + [ 7] .symtab SYMTAB 0000000000000000 00010238 + 0000000000000138 0000000000000018 8 2 8 + [ 8] .strtab STRTAB 0000000000000000 00010370 + 0000000000000043 0000000000000000 0 0 1 + [ 9] .shstrtab STRTAB 0000000000000000 000103b3 + 0000000000000047 0000000000000000 0 0 1 +Key to Flags: + W (write), A (alloc), X (execute), M (merge), S (strings), I (info), + L (link order), O (extra OS processing required), G (group), T (TLS), + C (compressed), x (unknown), o (OS specific), E (exclude), + D (mbind), l (large), p (processor specific) + +There are no section groups in this file. + +Program Headers: + Type Offset VirtAddr PhysAddr + FileSiz MemSiz Flags Align + LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000 + 0x000000000001021c 0x000000000001021c R E 0x1000 + LOAD 0x000000000001021c 0x000000000041121c 0x000000000041121c + 0x0000000000000004 0x0000000000010024 RW 0x1000 + + Section to Segment mapping: + Segment Sections... + 00 .text .rodata .eh_frame + 01 .data .bss + +There is no dynamic section in this file. + +There are no relocations in this file. +No processor specific unwind information to decode + +Symbol table '.symtab' contains 13 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS simple.c + 2: 00000000004000bb 11 FUNC GLOBAL DEFAULT 1 b + 3: 0000000000411220 4 OBJECT GLOBAL DEFAULT 5 result_a + 4: 000000000041121c 4 OBJECT GLOBAL DEFAULT 4 result_b + 5: 0000000000400180 65536 OBJECT GLOBAL DEFAULT 2 buffer2 + 6: 00000000004000d1 167 FUNC GLOBAL DEFAULT 1 _start + 7: 0000000000411240 65536 OBJECT GLOBAL DEFAULT 5 buffer + 8: 00000000004000c6 11 FUNC GLOBAL DEFAULT 1 c + 9: 0000000000411220 0 NOTYPE GLOBAL DEFAULT 5 __bss_start + 10: 0000000000411220 0 NOTYPE GLOBAL DEFAULT 4 _edata + 11: 0000000000421240 0 NOTYPE GLOBAL DEFAULT 5 _end + 12: 00000000004000b0 11 FUNC GLOBAL DEFAULT 1 a + +No version information found in this file. diff --git a/doc/system-services.txt b/doc/system-services.txt new file mode 100755 index 0000000..24c917a --- /dev/null +++ b/doc/system-services.txt @@ -0,0 +1,86 @@ +==== SERVICE LIST ============================================================== + +overlordd root process, manages all system-level services +launchd launches executables +nsd manages the system namespace (aka where all filesystems are + mounted) +lockdownd implements security and authentication +sessiond manager and root process for a user session +airportd manages sockets and network communications. +emdevd host process for device drivers, one instance per system, hosts + *all* devices +seatd Manages and controls access to monitor and peripheral devices. +fsd host process for filesystem driver, one instance per mounted + filesystem + + +==== TASK HIERARCHY ============================================================ + +backboardd ++--launchd ++--nsd ++--lockdownd ++--deviced ++--airportd ++--sysfsd ++--seatd ++--sessiond +| +--window-manager +| +--file-browser +| +--web-browser ++--sessiond +| +--fbterm +| +--bshell +| +--vim ++--e2fsd ++--fatfsd + + +==== SERVICE DETAILS =========================================================== + +## BACKBOARDD #### + * Root task (ID 1) created by the kernel during boot + * manages the startup and lifecycle of all system-level services + * Every task is provided with a handle to backboardd as part of the initial + task environment + * Backboardd can be used to gain access to certain system-level services, such + as the namespace and task launcher + +## LAUNCHD #### + * Task creation service + * Accepts requests from clients to run executable files + +## NSD #### + * Manages the system namespace + * Filesystems can be mounted in the system namespace to make them visible to + clients. + +## LOCKDOWND #### + * Manages security and authentication + * Provides security tokens that can be associated with privileges and used + for authorisation. + +## SESSIOND #### + * Root process for user login sessions. + * All child tasks receive a connection to the session controller. + * Holds session-wide data + +## DEVICED #### + * Hosts all device drivers. + * Device drivers are implemented as shared libraries that are loaded into + the device server at runtime. + * Also hosts the device filesystem (usually mounted at /dev) + +## SEATD #### + * Manages 'seats'. + * A seat is all of the peripherals that a user needs to interact with the + system. Includes the monitor, keyboard, and mouse. + * Allows multiple tasks to access a single seat at once. The user can use a + special keyboard shortcut to switch between tasks. + +## AIRPORTD #### + * Manages remote communications. + * All open sockets are represented internally as connections to airportd. + * Supports loadable modules, which provide support for different network features, + such as unix sockets, internet sockets, and passing messages between remote machines. +