D.gnu - -fpic option and dynimic so libs
- Denis R (7/7) Jun 11 2005 Hey,
- David Friedman (11/24) Jun 12 2005 The -fpic patch was rolled into 0.12.1 and 0.13.
- Denis R (9/39) Jun 12 2005 On Sun, 12 Jun 2005 09:02:19 -0400
- David Friedman (14/61) Jun 12 2005 This is what I had in mind:
- Denis R (4/71) Jun 12 2005 Ah, sweet :)
Hey,
I've seen -fpic/-fPIC patch sometime ago, but I dont see it anymore. I've got
gdc now now, so perhaps its already all in ? No patch needed?
Also, are there already examples of how to build *.so from D code ?
How would I make equivalent gdc initialization routes
__attribute__((constructor)) init() { // init stuff }
__attribute__((destructor)) deinit() { // deinit stuff :) }
Gdc doest seem to have __attribute__ as gcc does.
Jun 11 2005
Denis R wrote:
Hey,
I've seen -fpic/-fPIC patch sometime ago, but I dont see it anymore. I've got
gdc now now, so perhaps its already all in ? No patch needed?
Also, are there already examples of how to build *.so from D code ?
How would I make equivalent gdc initialization routes
__attribute__((constructor)) init() { // init stuff }
__attribute__((destructor)) deinit() { // deinit stuff :) }
Gdc doest seem to have __attribute__ as gcc does.
The -fpic patch was rolled into 0.12.1 and 0.13.
There is no way to speciy attributes now, but I plan to support them
with "pragma(attribute,etc...)"
If you are building a shared library that will be linked with an
executable, you can just use the normal D static constructors. This
works on Linux and some other OSes.
If you are loading a module at runtime, you need a workaround. The
easiest way is to have C function declared as a constructor calll a D
function.
David
Jun 12 2005
On Sun, 12 Jun 2005 09:02:19 -0400
David Friedman <d3rdclsmail_a_ _t_earthlink_d_._t_net> wrote:
Hello David,
Thank you for reply.
Yes, i was wondering about loading at run time.
I dont really know how to declare a C function to be a constructor, in D. :$
Did you mean just have one function which the user must call explicitly first
thing after dlopen ?
I thought I would do something like that in D : extern(C) { void init(); void
deinit(); },
and use gcc' s like attributes for them, so that init()/deinit() are
automagically called when needed.
Denis R wrote:
Hey,
I've seen -fpic/-fPIC patch sometime ago, but I dont see it anymore. I've got
gdc now now, so perhaps its already all in ? No patch needed?
Also, are there already examples of how to build *.so from D code ?
How would I make equivalent gdc initialization routes
__attribute__((constructor)) init() { // init stuff }
__attribute__((destructor)) deinit() { // deinit stuff :) }
Gdc doest seem to have __attribute__ as gcc does.
The -fpic patch was rolled into 0.12.1 and 0.13.
There is no way to speciy attributes now, but I plan to support them
with "pragma(attribute,etc...)"
If you are building a shared library that will be linked with an
executable, you can just use the normal D static constructors. This
works on Linux and some other OSes.
If you are loading a module at runtime, you need a workaround. The
easiest way is to have C function declared as a constructor calll a D
function.
David
Jun 12 2005
This is what I had in mind:
--- somecfile.c:
extern void dinit(void);
static void cinit() __attribute__((constructor))
{
dinit();
}
--- somedfile.d:
extern (C) void dinit()
{
// D initialization...
}
David
Denis R wrote:
On Sun, 12 Jun 2005 09:02:19 -0400
David Friedman <d3rdclsmail_a_ _t_earthlink_d_._t_net> wrote:
Hello David,
Thank you for reply.
Yes, i was wondering about loading at run time.
I dont really know how to declare a C function to be a constructor, in D. :$
Did you mean just have one function which the user must call explicitly first
thing after dlopen ?
I thought I would do something like that in D : extern(C) { void init(); void
deinit(); },
and use gcc' s like attributes for them, so that init()/deinit() are
automagically called when needed.
Denis R wrote:
Hey,
I've seen -fpic/-fPIC patch sometime ago, but I dont see it anymore. I've got
gdc now now, so perhaps its already all in ? No patch needed?
Also, are there already examples of how to build *.so from D code ?
How would I make equivalent gdc initialization routes
__attribute__((constructor)) init() { // init stuff }
__attribute__((destructor)) deinit() { // deinit stuff :) }
Gdc doest seem to have __attribute__ as gcc does.
The -fpic patch was rolled into 0.12.1 and 0.13.
There is no way to speciy attributes now, but I plan to support them
with "pragma(attribute,etc...)"
If you are building a shared library that will be linked with an
executable, you can just use the normal D static constructors. This
works on Linux and some other OSes.
If you are loading a module at runtime, you need a workaround. The
easiest way is to have C function declared as a constructor calll a D
function.
David
Jun 12 2005
Ah, sweet :)
Thanks again
On Sun, 12 Jun 2005 11:24:28 -0400
David Friedman <d3rdclsmail_a_ _t_earthlink_d_._t_net> wrote:
This is what I had in mind:
--- somecfile.c:
extern void dinit(void);
static void cinit() __attribute__((constructor))
{
dinit();
}
--- somedfile.d:
extern (C) void dinit()
{
// D initialization...
}
David
Denis R wrote:
On Sun, 12 Jun 2005 09:02:19 -0400
David Friedman <d3rdclsmail_a_ _t_earthlink_d_._t_net> wrote:
Hello David,
Thank you for reply.
Yes, i was wondering about loading at run time.
I dont really know how to declare a C function to be a constructor, in D. :$
Did you mean just have one function which the user must call explicitly first
thing after dlopen ?
I thought I would do something like that in D : extern(C) { void init(); void
deinit(); },
and use gcc' s like attributes for them, so that init()/deinit() are
automagically called when needed.
Denis R wrote:
Hey,
I've seen -fpic/-fPIC patch sometime ago, but I dont see it anymore. I've got
gdc now now, so perhaps its already all in ? No patch needed?
Also, are there already examples of how to build *.so from D code ?
How would I make equivalent gdc initialization routes
__attribute__((constructor)) init() { // init stuff }
__attribute__((destructor)) deinit() { // deinit stuff :) }
Gdc doest seem to have __attribute__ as gcc does.
The -fpic patch was rolled into 0.12.1 and 0.13.
There is no way to speciy attributes now, but I plan to support them
with "pragma(attribute,etc...)"
If you are building a shared library that will be linked with an
executable, you can just use the normal D static constructors. This
works on Linux and some other OSes.
If you are loading a module at runtime, you need a workaround. The
easiest way is to have C function declared as a constructor calll a D
function.
David
Jun 12 2005








Denis R <denis_r telkomsa.net>