An event marking that a shared object loaded to current process, and have collisions of exported symbols
with other shared object already loaded to the process. This event can help in inform on the
occasion that a shared object tries to override some symbol of another library.
Configure the watched symbols that upon collision will trigger the event.
Specify the full name of the symbol for each symbol.
Notice that only watched symbols will be outputed by the event, and the default is watching all symbols.
The use is only with the = or != operators, and wildcards aren't supported.
Used by tracee to maintain mount NS cache, used in this event to get to processes file system.
Also, used to maintain the cache used by the event for performance improvement.
The first approach is recommended when dealing with common symbols like 'setup_', 'finish_' etc. because it will reduce
the overall noise and also reduce the event processing time, in contrast to the second filter which only works after processing the event.
Because the event is implemented in user-mode, it needs to open and read files.
This means that the event is not very performance efficient (although it uses some optimizations).
It also means that until the SO file is opened, it could be altered or removed.
Notice that there are symbols which unintentionally exported by shared objects regularly.
Moreover, there are times which the same ELF load multiple variations of the same shared object, or one shared object copies code from another (for example, libm and libc).
This cases will cause unintended spam events, so use wisely.
The event pass list of all collided symbols as an argument.
The list might be very large, which will result large memory event resulting performance reduction and excess memory usage.