Commit graph

14 commits

Author SHA1 Message Date
Ben Wiederhake
9d2d97a059 LibC: Avoid ninja-imports of system functions
This adds a new header <sys/internals.h>, which provides access to LibC internals.
This is in the interest of type-checking LibC itself, as well as enabling less-hacky
access for uses like LinkDemo.

And, of course, this progresses LibC towards building cleanly with -Wmissing-declarations.
2020-08-12 20:40:59 +02:00
Ben Wiederhake
b493c6cd39 DynamicLink: Tell compiler about invisible calls
This makes DynamicLink, and in fact all Demos, build cleanly with -Wmissing-declarations.

Note that this won't be necessary for 'normal' dynamic shared objects, as those
usually already declare their symbols in a header file.
2020-08-12 20:40:59 +02:00
Andrew Kaster
02018af0cc Demos: Print out ELF Auxiliary Vector in LinkDemo
This is a test program anyway, so let's double check that the auxv
is done properly here.
2020-07-07 10:38:54 +02:00
Sergey Bugaev
450a2a0f9c Build: Switch to CMake :^)
Closes https://github.com/SerenityOS/serenity/issues/2080
2020-05-14 20:15:18 +02:00
Andrew Kaster
c678b35043 LibELF: Use MAP_PRIVATE for file-backed mmaps in ELFDynamicLoader
Clean up some unused code, clean up FIXMEs, and remove premature
--dynamic-loader/-pie from LinkDemo (so it runs again on master)
2020-02-29 10:58:45 +01:00
Andreas Kling
6cbd72f54f AK: Remove bitrotted Traits::dump() mechanism
This was only used by HashTable::dump() which I used when doing the
first HashTable implementation. Removing this allows us to also remove
most includes of <AK/kstdio.h>.
2020-02-10 11:55:34 +01:00
Andrew Kaster
117820f610 Meta: Claim copyright on files added by me
Demos/DynamicLink, LibC/cxxabi.cpp, and LibELF/ELFDynamic*.[cpp/h]
2020-02-02 02:05:38 +01:00
Andreas Kling
94ca55cefd Meta: Add license header to source files
As suggested by Joshua, this commit adds the 2-clause BSD license as a
comment block to the top of every source file.

For the first pass, I've just added myself for simplicity. I encourage
everyone to add themselves as copyright holders of any file they've
added or modified in some significant way. If I've added myself in
error somewhere, feel free to replace it with the appropriate copyright
holder instead.

Going forward, all new source files should include a license header.
2020-01-18 09:45:54 +01:00
Andrew Kaster
c3be3718cf Demos: Compile LinkDemo as a PIE with interpreter /lib/lib-elf.so 2020-01-13 13:03:30 +01:00
Andrew Kaster
5accedfedb Demos: Remove extra methods/globals from DynamicLib 2020-01-13 13:03:30 +01:00
Andrew Kaster
4698a10dd1 Demos: DynamicLink makefile now respects $(QUIET)
At a later date we'll probably want a template for SHLIB_OBJS and
SHLIB or some such, but for now at least the library demo isn't
printing compile commands all over the user's terminal.
2020-01-02 12:28:29 +01:00
Andrew Kaster
a755b80057 Demos: Link our normal startfiles into the dynamic lib demo
Now that gcc knows about crtbeginS and crtendS, and knows not to link
crt0.o into shared objects, we can get rid of the hacks required due to
--nostartfiles.
2020-01-01 23:05:17 +01:00
joshua stein
e7de8af379 Build: Demos/DynamicLink: use EXTRA_CLEAN 2020-01-01 22:21:50 +01:00
Andrew Kaster
b6590b7f83 Demos: Add a dynamic linking demo to show off dlfcn methods
The LinkDemo program calls dlopen/dlsym/dlclose to try and load
a dyanmic library from /usr/lib. It read a global variable and
calls a global function (extern "C" of course :) ).

There a few hacks left in the LinkLib dynamic library, however.
In order to get the linker to stop complaining, we have to use
-nostartfiles -ffreestanding otherwise it will link crt0.o to our
shared object, which is definitely not right as the _init function
for a main program (that calls main) is not suitable for our lib
2020-01-01 17:48:41 +01:00