This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How to access application arguments from shared library constructor


On Wednesday 04 November 2009 17:11:28 Bharath Ramesh wrote:
> I am trying to access the arguments passed to an application in the
> constructor of a shared library. My aim is to prepend the arguments with
> certain arguments that I can strip off just before my constructor exits.
> This requires that I have access to the argument list passed to the
> application in the constructor. I would appreciate any help on this. I
> am sorry if this an incorrect mailing list to ask this question. I
> thought this might be good place to start off. I would appreciate if I
> am copied in the reply as I am not subscribed to this list.

$ cat test.c
#include <stdio.h>
extern char **environ;
foo(int argc, char **argv, char **env)
{ printf("%i, %p, %s, %p, %p\n", argc, argv, *argv, env, environ); }
__attribute__((section(".init_array"))) static void *foo_constructor = &foo;
main(){}

$ gcc test.c && ./a.out foo
2, 0xbfd877f4, ./a.out, 0xbfd87800, 0xbfd87800

maybe someone knows of an easier way to get a pointer into the init_array 
section ...
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]