include sections are processed by the compiler as long as some predicates are satisfied:
No cyclic includes, i.e. if X includes Y then Y cannot include X (this is also true if we introduce transitivity: if X includes Y and Y includes Z (where Z != X) then Z cannot include X)
Files cannot be included multiple times. This is not an error, but the compiler is in charge of eliminating cross edges
Files are searched for in a set of paths (the include path) which always contains at least the current working directory
Files are included only if the file path is valid and the file can be found in the include path. If two files with the same name are found within the include path, an error is thrown
(this is just to illustrate because duplicated paths are now erased from the include path, which would not trigger this error anymore)
:bug: bug fix: the elfgen library crashed (with a segfault) when no global symbol was introduced in the ELF object, leading to an out of bounds index
:arrow_up: improvements: most of warnings in the code have been cleaned (useless warnings have simply been ignored)
include
sectionsinclude
sections are processed by the compiler as long as some predicates are satisfied:X
includesY
thenY
cannot includeX
(this is also true if we introduce transitivity: if X includes Y and Y includes Z (where Z != X) then Z cannot include X)elfgen
library crashed (with a segfault) when no global symbol was introduced in the ELF object, leading to an out of bounds index