Aux vec is used in things like SSP, so disabling aux would use a guessable value for SSP, iirc static linking still uses the aux vec for SSP


On Mon, Jun 27, 2016, 2:34 PM Daniel Wilkerson <daniel.wilkerson@gmail.com> wrote:
Ah, thank you.  From that page:

       This function is a nonstandard glibc extension.

And:

       The primary consumer of the information in the auxiliary vector is
       the dynamic linker ld-linux.so(8).  The auxiliary vector is a
       convenient and efficient shortcut that allows the kernel to
       communicate a certain set of standard information that the dynamic
       linker usually or always needs.  In some cases, the same information
       could be obtained by system calls, but using the auxiliary vector is
       cheaper.

It seems therefore that if I am doing static linking that it is safe
to simply provide an empty aux vector?

Daniel

On Mon, Jun 27, 2016 at 2:00 PM, Bobby Bingham <koorogi@koorogi.info> wrote:
> On Mon, Jun 27, 2016 at 01:07:59PM -0700, Daniel Wilkerson wrote:
>> This seems to initalize aux to be all zeros, so it seems that in
>> theory all of the aux values could be optional:
>>
>>         size_t i, *auxv, aux[AUX_CNT] = { 0 };
>>
>> What I'm wondering is where to find the semantics of all of the aux
>> names; I could hunt through all of the code, but any high-level
>> suggestions you could provide could help a lot.  As a bonus, which
>> ones might not have sensible defaults and are actually non-optional,
>> if any.
>
> The getauxval man page is a good starting point:
> http://man7.org/linux/man-pages/man3/getauxval.3.html
>
> --
> Bobby