add existing documentation

This commit is contained in:
2024-11-02 15:09:10 +00:00
parent 1c98ae8856
commit 60130ccd55
14 changed files with 1973 additions and 0 deletions

21
doc/abi.txt Executable file
View File

@@ -0,0 +1,21 @@
=== TASK ENVIRONMENT ====
This data is placed <somewhere> 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;
}

375
doc/boot-process.txt Executable file
View File

@@ -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

90
doc/filesystem.txt Executable file
View File

@@ -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)

468
doc/ld-linux.txt Executable file
View File

@@ -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

692
doc/ls.txt Executable file
View File

@@ -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

41
doc/protocols.txt Executable file
View File

@@ -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.

View File

@@ -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;
<-

View File

@@ -0,0 +1,12 @@
mod rosetta.io;
protocol File:
msg Read
-> u32 count;
<- i32 status, char[] data;
msg Write
-> char[] data;
<- i32 status;

View File

9
doc/service-hierarchy.txt Executable file
View File

@@ -0,0 +1,9 @@
systemd
+--fsd [fs-ext2.so]
+--emdevd
+--lockdownd
+--seatd
+--sessiond
| +--bash
| +--nano
+--airportd

76
doc/simple.elf.dump.txt Executable file
View File

@@ -0,0 +1,76 @@
simple: file format elf64-x86-64
Disassembly of section .text:
00000000004000b0 <a>:
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 <b>:
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 <c>:
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 <a>
4000e6: 41 89 c4 mov %eax,%r12d
4000e9: b8 00 00 00 00 mov $0x0,%eax
4000ee: e8 c8 ff ff ff call 4000bb <b>
4000f3: 89 c3 mov %eax,%ebx
4000f5: b8 00 00 00 00 mov $0x0,%eax
4000fa: e8 c7 ff ff ff call 4000c6 <c>
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 <result_a>
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 <result_a>
400119: 8b 15 fd 10 01 00 mov 0x110fd(%rip),%edx # 41121c <result_b>
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 <result_b>
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 <result_a>
400167: 8b 05 af 10 01 00 mov 0x110af(%rip),%eax # 41121c <result_b>
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

87
doc/simple.elf.txt Executable file
View File

@@ -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.

86
doc/system-services.txt Executable file
View File

@@ -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.