component_library object not found in lib

View: New views
7 Messages — Rating Filter:   Alert me  

component_library object not found in lib

by Aurelien Buhrig :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I try to create some SID peripherals (timer, it crtl for now) for a new
target microcontroller called tam16 in a tam16family  library.
I added the tam16family_component_library definition in the components.cxx
file:

DLLEXPORT extern const component_library tam16family_component_library;
const component_library tam16family_component_library = {…};

I had no particular problem adding the interrupt controller. But things go
wrong  when adding a second peripheral (timer)…
At the configuration, this error occurs:

dlsym of tam16family_component_library in component library dso
libtam16family.la failed: sid: undefined symbol:
tam16family_component_library

“Stracing” the sid execution shows that sid points to the good library in
which tam16family_component_library symbol DOES exist, in both .so and .a,
only once per lib, and as a global symbol.

My system is RHEL5/x86_64, gcc 3.4.6.

Any hint why it is not found by the libltdl ?

Thanks,
Aurelien




Re: component_library object not found in lib

by Frank Ch. Eigler :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi -

> DLLEXPORT extern const component_library tam16family_component_library;
> const component_library tam16family_component_library = { ... };

This looks fine.

> I had no particular problem adding the interrupt controller. But things go
> wrong when adding a second peripheral (timer).

Do you mean that the same component_library file worked when you had
only one component type supported in list_types etc., but didn't load
when more are available in the source?

> At the configuration, this error occurs: dlsym of
> tam16family_component_library in component library dso
> libtam16family.la failed: sid: undefined symbol:
> tam16family_component_library

You could try
   env LD_DEBUG=all sid ...

My guess is that there is a typo in your source code that allowed the
.so to be built with an undefined external reference.  That in turn
can cause the .so to fail to load, even if the
tam16_family_component_library symbol itself was there.

- FChE

RE: component_library object not found in lib

by Aurelien Buhrig :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I didn't know LD_DEBUG variable... and it saved my life! Thanks!
It was a destructor that was declared but not defined... ouch!

-no-undefined was specified in LDFLAGS though...
Is it normal there were no error?

Thanks!

Aurélien



timings in sid

by Aurelien Buhrig :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I try to link timer peripheral time with processor execution time.
The target processor is an asynchronous processor for which the execution
latency is not a number of cycles, but rather a number of ns. There is no
parallelism.

So I planned to use the same simulation scheduler for both timer and CPU. I
described several execution unit in the .cpu, with different timing, but it
seems the latency of the instructions has no effect on the execution
scheduler. The sched tick is incremented by 1 at each instruction regardless
of latency of the execution unit.

How can I do? Where are the timing information saved ?

Thanks,
Aurélien





Re: timings in sid

by Dave Brolley-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Did you run sid with --final-insn-count  and/or --trace-counter and
possibly with --insn-count=1?

I hope this helps,
Dave

Aurélien Buhrig wrote:

> Hello,
>
> I try to link timer peripheral time with processor execution time.
> The target processor is an asynchronous processor for which the execution
> latency is not a number of cycles, but rather a number of ns. There is no
> parallelism.
>
> So I planned to use the same simulation scheduler for both timer and CPU. I
> described several execution unit in the .cpu, with different timing, but it
> seems the latency of the instructions has no effect on the execution
> scheduler. The sched tick is incremented by 1 at each instruction regardless
> of latency of the execution unit.
>
> How can I do? Where are the timing information saved ?
>
> Thanks,
> Aurélien
>
>
>
>
>  

RE: timings in sid

by Aurelien Buhrig :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks for your reply.

My real problem was to figure out where could I find timings in cgen
generated files. I found actually I had to generate the model files, and I
used MEP and SH as example, even mine is much simpler.

BTW, are there only the MEP and SH platforms which correctly handle
execution time and can be used with peripherals in SID?

Aurélien




Re: timings in sid

by Frank Ch. Eigler :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi -

On Fri, Oct 10, 2008 at 06:28:15PM +0200, Aurélien Buhrig wrote:
> Thanks for your reply.
> [...]
> BTW, are there only the MEP and SH platforms which correctly handle
> execution time and can be used with peripherals in SID?

Those are the ones where instruction timing is calculated from the
model.  For your model, you can calculate it yourself any way you
like, as long as you use the same signaling convention (pin data value
being sent back to the scheduler) to indicate the amount of time taken
by the current instruction (sequence).

- FChE