On Fri, Jul 30, 2021, at 09:39, Thiago Macieira via SG16 wrote:
On Friday, 30 July 2021 09:31:19 PDT Tom Honermann wrote:
> Indeed.  My use case was trying to get them before main().

You can use _dl_argc and _dl_argv (glibc specific) and _environ. The argv is 
always just below _environ, so you can know where it ends, but finding where 
it starts is a little more difficult if you don't have argc too.

There are easier ways as well for ELF (modern loader implementations) and MACH-O based platforms. Placing a function pointer into the .init_array for ELF and __mod_init_func on MACH-O allows you to set argc and argv to variables you control.

I did this for the initial implementation of P1275’s std::arguments type back in 2018.


Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel DPG Cloud Engineering

SG16 mailing list