mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:47:46 +00:00
Demos: Add "DynamicObjectDemo" to demo the dynamic loader
This commit is contained in:
parent
79769ee74e
commit
09ccdc697b
7 changed files with 101 additions and 1 deletions
|
@ -1,4 +1,5 @@
|
|||
add_subdirectory(Cube)
|
||||
add_subdirectory(DynamicObject)
|
||||
add_subdirectory(DynamicLink)
|
||||
add_subdirectory(Eyes)
|
||||
add_subdirectory(Fire)
|
||||
|
|
11
Demos/DynamicObject/CMakeLists.txt
Normal file
11
Demos/DynamicObject/CMakeLists.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
set(SOURCES
|
||||
main.cpp
|
||||
../../Libraries/LibC/crt0_shared.cpp
|
||||
)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostartfiles -pie -fpic")
|
||||
|
||||
serenity_bin(DynamicObjectDemo)
|
||||
target_link_libraries(DynamicObjectDemo SampleLib LibCShared)
|
||||
|
||||
add_subdirectory(SampleLib)
|
11
Demos/DynamicObject/SampleLib/CMakeLists.txt
Normal file
11
Demos/DynamicObject/SampleLib/CMakeLists.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
|
||||
set(SOURCES
|
||||
lib.cpp
|
||||
)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib -fpic")
|
||||
|
||||
add_library(SampleLib SHARED ${SOURCES})
|
||||
target_link_libraries(SampleLib LibCShared)
|
||||
#target_link_libraries(SampleLib)
|
||||
install(TARGETS SampleLib DESTINATION usr/lib)
|
20
Demos/DynamicObject/SampleLib/lib.cpp
Normal file
20
Demos/DynamicObject/SampleLib/lib.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
#include "../lib.h"
|
||||
|
||||
int func();
|
||||
|
||||
__thread int g_tls1 = 0;
|
||||
__thread int g_tls2 = 0;
|
||||
|
||||
static void init_function() __attribute__((constructor));
|
||||
|
||||
void init_function()
|
||||
{
|
||||
g_tls1 = 1;
|
||||
g_tls2 = 2;
|
||||
}
|
||||
|
||||
int func()
|
||||
{
|
||||
return 3;
|
||||
}
|
24
Demos/DynamicObject/main.cpp
Normal file
24
Demos/DynamicObject/main.cpp
Normal file
|
@ -0,0 +1,24 @@
|
|||
#include "lib.h"
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/internals.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main(int argc, char** argv, char** env)
|
||||
{
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
(void)env;
|
||||
|
||||
printf("Well Hello Friends!\n");
|
||||
printf("trying to open /etc/fstab for writing..\n");
|
||||
int rc = open("/etc/fstab", O_RDWR);
|
||||
if (rc == -1) {
|
||||
int _errno = errno;
|
||||
perror("open failed");
|
||||
printf("rc: %d, errno: %d\n", rc, _errno);
|
||||
return func() + g_tls1 + g_tls2;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue