1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:47:35 +00:00
serenity/Libraries/LibC
Andrew Kaster 767f4c7421 LibELF+LibC: Split ELFDynamicObject into a Loader + Object
Separate some responsibilities:

ELFDynamicLoader is responsible for loading elf binaries from disk and
performing relocations, calling init functions, and eventually calling
finalizer functions.

ELFDynamicObject is a helper class to parse the .dynamic section of an
elf binary, or the table of Elf32_Dyn entries at the _DYNAMIC symbol.
ELFDynamicObject now owns the helper classes for Relocations, Symbols,
Sections and the like that ELFDynamicLoader will use to perform
relocations and symbol lookup.

Because these new helpers are constructed from offsets into the .dynamic
section within the loaded .data section of the binary, we don't need the
ELFImage for nearly as much of the loading processes as we did before.
Therefore we can remove most of the extra DynamicXXX classes and just
keep the one that lets us find the location of _DYNAMIC in the new ELF.

And finally, since we changed the name of the class that dlopen/dlsym
care about, we need to compile/link and use the new ELFDynamicLoader
class in LibC.
2020-01-04 10:39:04 +01:00
..
arpa LibC: fix arpa/inet.h guards 2019-11-16 16:27:48 +01:00
bits LibC: Minor changes to make nasm work 2019-11-09 20:52:34 +01:00
net Kernel: Add SIOCGIFHWADDR ioctl to get the MAC address of an adapter 2019-10-02 18:20:11 +02:00
netinet LibC: move in_addr and sockaddr_in to netinet/in.h 2020-01-02 04:09:56 +01:00
sys LibC: move in_addr and sockaddr_in to netinet/in.h 2020-01-02 04:09:56 +01:00
alloca.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
assert.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
assert.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
crt0.cpp LibC: Move __cxa_finalize and __cxa_atexit code to their own file 2020-01-01 17:48:41 +01:00
crti.S Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
crtn.S Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
ctype.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
ctype.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
cxxabi.cpp LibC: Move __cxa_finalize and __cxa_atexit code to their own file 2020-01-01 17:48:41 +01:00
dirent.cpp LibC: Add readdir_r for re-entrant directory reading (#648) 2019-10-12 22:35:23 +02:00
dirent.h LibC: Added some missing directory type constants 2019-11-16 12:50:50 +01:00
dlfcn.cpp LibELF+LibC: Split ELFDynamicObject into a Loader + Object 2020-01-04 10:39:04 +01:00
dlfcn.h LibC: Misc additions 2019-10-03 08:18:05 +02:00
endian.h LibC: Oopsie, add the missing semicolons to __bswap32() and __bswap64() 2019-11-17 15:37:46 +01:00
errno.h LibC: sys_errlist should be const char* const 2019-10-17 09:18:01 +02:00
errno_numbers.h LibC: Add some missing errno codes 2019-09-12 18:26:19 +02:00
fcntl.cpp LibC: Move the creat() and open() families to <fcntl.h> 2019-11-16 17:29:09 +01:00
fcntl.h LibC: Add O_ACCMODE to fcntl.h 2019-11-18 08:55:45 +01:00
fd_set.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
float.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
getopt.cpp LibC: Ensure getopt error messages end with a newline 2019-09-17 21:56:42 +02:00
getopt.h LibC: Borrow a slightly more functional getopt() 2019-09-06 20:03:16 +02:00
grp.cpp AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
grp.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
iconv.h LibC: iconv.h needs stddef.h for size_t 2019-11-10 13:07:51 +01:00
inttypes.h LibC: Add PRIXPTR definition to inttypes.h 2019-12-09 16:33:14 +01:00
ioctl.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
libgen.cpp LibC: Implement dirname() and basename() 2019-10-03 08:23:54 +02:00
libgen.h LibC: Implement dirname() and basename() 2019-10-03 08:23:54 +02:00
limits.h Build: add support for building on OpenBSD 2020-01-02 21:03:53 +01:00
locale.cpp LibC: Added additional fields to lconv struct 2019-11-16 12:50:50 +01:00
locale.h LibC: Added additional fields to lconv struct 2019-11-16 12:50:50 +01:00
Makefile LibELF+LibC: Split ELFDynamicObject into a Loader + Object 2020-01-04 10:39:04 +01:00
malloc.cpp LibC: Prevent assertions in malloc/free at exit time 2019-12-22 10:47:39 +01:00
mallocdefs.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
memory.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
mman.cpp Kernel: Remove broken implementation of Unix SHM 2020-01-02 12:44:21 +01:00
mman.h Kernel: Remove broken implementation of Unix SHM 2020-01-02 12:44:21 +01:00
mntent.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
mntent.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
netdb.cpp AK: Use size_t for the length of strings 2019-12-09 17:51:21 +01:00
netdb.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
poll.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
poll.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
pwd.cpp AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
pwd.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
qsort.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
scanf.cpp LibC: Some build fixes for strange platforms 2019-09-29 21:02:13 +02:00
sched.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
sched.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
serenity.cpp LibC+Userland: Add a proper syscall wrapper for purge() 2020-01-02 13:37:02 +01:00
serenity.h Lib: Remove Stopwatch class 2020-01-03 09:10:55 +01:00
setjmp.h LibC: jmp_buf and sigjmp_buf should be distinct types 2019-11-17 21:01:26 +01:00
setjmp.S Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
signal.cpp Kernel+LibC: A lot of the signal handling code was off-by-one. 2019-08-01 11:03:48 +02:00
signal.h LibC: Added missing signal flags 2019-11-16 12:50:50 +01:00
signal_numbers.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
stat.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
stdarg.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
stdbool.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
stddef.h LibC: Tolerate stddef.h being included from the kernel 2019-11-29 14:53:35 +01:00
stdint.h Libc: make library internal includes come from private include namespace 2019-10-11 12:17:05 +02:00
stdio.cpp LibC: implement fgetpos and fsetpos 2019-12-27 23:09:08 +01:00
stdio.h LibC: implement fgetpos and fsetpos 2019-12-27 23:09:08 +01:00
stdlib.cpp LibC: Oops x2, we can't use "bool" in stdlib.h either 2019-12-26 10:30:34 +01:00
stdlib.h LibC: Oops x2, we can't use "bool" in stdlib.h either 2019-12-26 10:30:34 +01:00
string.cpp LibC: Remove some functions we had two of 2019-12-27 16:55:10 +01:00
string.h LibC: Add strtok_r() and make strtok() a wrapper around it 2019-11-10 21:19:08 +01:00
strings.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
strings.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
syslog.cpp LibC: syslog and lots of compat stuff for it 2019-10-15 09:52:55 +02:00
syslog.h LibC: syslog and lots of compat stuff for it 2019-10-15 09:52:55 +02:00
termcap.cpp AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
termcap.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
termios.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
termios.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
time.cpp Kernel+LibC: Publish a "kernel info page" and use it for gettimeofday() 2019-12-15 21:29:26 +01:00
time.h LibC, LibM: Add functions needed to compile python3 2019-11-11 22:04:16 +01:00
times.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
ulimit.cpp LibC: Some build fixes for strange platforms 2019-09-29 21:02:13 +02:00
ulimit.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
unistd.cpp Kernel: Remove read_tsc() syscall 2020-01-03 09:27:09 +01:00
unistd.h Kernel: Remove read_tsc() syscall 2020-01-03 09:27:09 +01:00
utime.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
utime.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
utmp.h Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
utsname.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
wchar.cpp LibC, LibM: Add functions needed to compile python3 2019-11-11 22:04:16 +01:00
wchar.h LibC, LibM: Add functions needed to compile python3 2019-11-11 22:04:16 +01:00