All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot-Users] Relocation of symbols?
@ 2005-06-27 13:08 Andreas Block
  2005-06-27 13:40 ` Wolfgang Denk
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Block @ 2005-06-27 13:08 UTC (permalink / raw)
  To: u-boot

Hi,

I've posted another question regarding this topic on 14th June 2005. Since I haven't 
received any answers, I'm unsure, if I'm in the correct mailinglist or if my problem 
was that trivial. In case of the latter one, please, give me a hint, where to post my 
questions instead.

So here's my new question:

I've declared a global array:
char *walter[] = { "ABC", "DEF" };

The u-boot boots from flash and relocates itself into RAM. After relocation the array 
is relocated into RAM and so is its content (the pointers to strings). But the actual 
strings are still located in flash. "walter" is a global symbol located in ".data" 
section of the compiled object. Is this the behaviour I should expect, or is it a 
problem with u-boots relocation code?

Best regards,
Andreas Block

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-27 13:08 [U-Boot-Users] Relocation of symbols? Andreas Block
@ 2005-06-27 13:40 ` Wolfgang Denk
  2005-06-27 16:26   ` Grant Likely
  2005-06-28 12:50   ` Andreas Block
  0 siblings, 2 replies; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-27 13:40 UTC (permalink / raw)
  To: u-boot

Dear Andreas,

in message <3YJEA6HGSNLF3264765ZTQSQYSRNJI43.42bffa31@pc-block> you wrote:
> 
> I've posted another question regarding this topic on 14th June 2005. Since I haven't 
> received any answers, I'm unsure, if I'm in the correct mailinglist or if my problem 
> was that trivial. In case of the latter one, please, give me a hint, where to post my 
> questions instead.

You are on the right list here.

It's just that not many people really understand all the details  how
the relocation works.

> The u-boot boots from flash and relocates itself into RAM. After relocation the array 
> is relocated into RAM and so is its content (the pointers to strings). But the actual 
> strings are still located in flash. "walter" is a global symbol located in ".data" 
> section of the compiled object. Is this the behaviour I should expect, or is it a 
> problem with u-boots relocation code?

If you look at the code, then you  will  find  that  the  same  thing
happens  to  all  pointers with static initialization. If you think a
bit about it you will probably be not  surprised  -  how  should  the
compiler  know  that  the addresses of your strings might change? and
after the compiler generated code with a  static  initializer  -  who
should  then know that the contents of this variable might need to be
relocated?

See for example how we manually adjust (= relocate) the command table
and other pointer constants in board_init_r().

I guess you can probably tell  GCC  to  add  GOT  entries  for  these
pointers,  but  I have to admit that I don't know off-hand what's the
most efficient way.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
He had quite a powerful intellect, but it  was  as  powerful  like  a
locomotive,  and  ran on rails and was therefore almost impossible to
steer.                          - Terry Pratchett, _Lords and Ladies_

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-27 13:40 ` Wolfgang Denk
@ 2005-06-27 16:26   ` Grant Likely
  2005-06-27 20:00     ` Wolfgang Denk
  2005-06-28 12:50   ` Andreas Block
  1 sibling, 1 reply; 19+ messages in thread
From: Grant Likely @ 2005-06-27 16:26 UTC (permalink / raw)
  To: u-boot

On 6/27/05, Wolfgang Denk <wd@denx.de> wrote:
> Dear Andreas,
> 
> in message <3YJEA6HGSNLF3264765ZTQSQYSRNJI43.42bffa31@pc-block> you wrote:

> 
> It's just that not many people really understand all the details  how
> the relocation works.

<stuff deleted>

> I guess you can probably tell  GCC  to  add  GOT  entries  for  these
> pointers,  but  I have to admit that I don't know off-hand what's the
> most efficient way.
> 
Just to satisfy my curiosity...

What is the design decision behind u-boot building as a single
relocatable binary (with all the complexities associated with
relocation)?  As opposed to a a two stage process with a small chunk
of bootstrap code encapsulating the main u-boot image.  The bootstrap
code being linked seperatly from the main image so each image runs in
the address space it is linked to.  (like a Linux zImage; bootstrap
code only responsible for initializing RAM, copying the main image and
jumping to it).

I can see that a two stage scheme would sidestep the relocation issues
mentioned above and should make probing with a debugger simpler.  What
are the advantages of the single binary approach?  Image size perhaps?

Cheers,
g.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-27 16:26   ` Grant Likely
@ 2005-06-27 20:00     ` Wolfgang Denk
  2005-06-27 22:21       ` Grant Likely
  0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-27 20:00 UTC (permalink / raw)
  To: u-boot

In message <528646bc05062709261380120e@mail.gmail.com> you wrote:
> 
> What is the design decision behind u-boot building as a single
> relocatable binary (with all the complexities associated with

Making it as easy to port to new hardware and to debug  as  possible.
Which  includes  for example initializing a serial (or other) console
port as soon as possible in the  initialization  sequence.  Which  in
turn requires access to a lot of functions in the "general" code like
stdio  and  string  functions, access to the environment (to read the
baudrate definition), which in turn may require access to  I2C  (like
to access an EEPROM) etc.

> relocation)?  As opposed to a a two stage process with a small chunk
> of bootstrap code encapsulating the main u-boot image.  The bootstrap

Such a "small chunk" would have to include the most critical hadrware
initialization, especially that of the  SDRAM.  If  you  follow  this
mailing  list  for a while you will know that this alone makes 99% of
all the "help me" postings on this list, even  though  it  is  really
easy  to  debug:  you have printf() and all the like. Now assume this
was in a "small chunk" which has to work without all these features -
and which is failing silently as a black box.

> code being linked seperatly from the main image so each image runs in
> the address space it is linked to.  (like a Linux zImage; bootstrap
> code only responsible for initializing RAM, copying the main image and
> jumping to it).

The "only" in this sentence in inappropriate. This is one of the most
critical areas, and you really want to have all comfort for debugging
that you can get.

Try searching this list  and  count  how  many  people  report  about
problems  where the system hangs or acts weird just after relocation.
Assume this happened in some minimal assember code  without  console,
without printf etc. You really don't want to have that.

> I can see that a two stage scheme would sidestep the relocation issues
> mentioned above and should make probing with a debugger simpler.  What
> are the advantages of the single binary approach?  Image size perhaps?

No, the major concern is to make U-Boot easy to debug  and  to  port.
All the things that happen after relocation are "simple" issues ;-)

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The human race is faced with a cruel choice: work  or  daytime  tele-
vision.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-27 20:00     ` Wolfgang Denk
@ 2005-06-27 22:21       ` Grant Likely
  2005-06-28  0:21         ` Wolfgang Denk
  0 siblings, 1 reply; 19+ messages in thread
From: Grant Likely @ 2005-06-27 22:21 UTC (permalink / raw)
  To: u-boot

On 6/27/05, Wolfgang Denk <wd@denx.de> wrote:
> In message <528646bc05062709261380120e@mail.gmail.com> you wrote:
> > relocation)?  As opposed to a a two stage process with a small chunk
> > of bootstrap code encapsulating the main u-boot image.  The bootstrap
> 
> Such a "small chunk" would have to include the most critical hadrware
> initialization, especially that of the  SDRAM.  If  you  follow  this
> mailing  list  for a while you will know that this alone makes 99% of
> all the "help me" postings on this list, even  though  it  is  really
> easy  to  debug:  you have printf() and all the like. Now assume this
> was in a "small chunk" which has to work without all these features -
> and which is failing silently as a black box.
I do understand this; I wasn't very clear what I meant, see below.

> 
> > code being linked seperatly from the main image so each image runs in
> > the address space it is linked to.  (like a Linux zImage; bootstrap
> > code only responsible for initializing RAM, copying the main image and
> > jumping to it).
> 
> The "only" in this sentence in inappropriate. This is one of the most
> critical areas, and you really want to have all comfort for debugging
> that you can get.
Let me clarify: I'm using "only" to refer to responsibilities, not to
code size or debug facilities.  I agree that bootstrapping is the most
critical function and debug support is non-negotiable.  I meant that
the bootstrap is responsible to get the board ready for the second
stage; It would not have any exotic functionality for were to get the
second stage or handling boot options.  All that would stay in the
second stage.

> 
> Try searching this list  and  count  how  many  people  report  about
> problems  where the system hangs or acts weird just after relocation.
> Assume this happened in some minimal assember code  without  console,
> without printf etc. You really don't want to have that.
And I do understand this; I was not suggesting an absolute minimalist
environment.  Other than final footprint size (which is not a small
issue either), there is nothing preventing common code from being
linked into both images.  Are there any estimates/measurements on how
much code is executed both before and after relocation?

The problem with relocation is that it adds a layer of complexity to
the debug process after jumping into RAM.  Things such as the
manipulating the command tables so the pointers match up again.  Every
time a new static or global is added, you need to worry about such
things.

For example; when built for flash you cannot load the image into RAM
and run it (i.e. from dBug) to see if the code after relocation is
working correctly.  This makes it more difficult to track down a
relocation problem.  When relocation hangs, it can be difficult to
isolate the problem down to code running before or after relocation. 
However, if it was a two stage image, you could run the RAM stage from
dBug.  If it doesn't work then you know you need to fix the RAM image
problem before fixing the ROM code.  If it does work then you know the
problem is with the ROM portion.  As a bonus, you know that code
running out of RAM is identical regardless of whether you've booted
from FLASH or not.

Ultimatly, I'm asking/debating whether or not a two-image scheme would
make it simpler to debug.  Granted there are other issues, such as
duplicate copies of functions; but that's why I'm asking, to get other
perspectives and become a better designer.  :-)

Comments?

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-27 22:21       ` Grant Likely
@ 2005-06-28  0:21         ` Wolfgang Denk
  2005-06-28 15:42           ` Grant Likely
  0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-28  0:21 UTC (permalink / raw)
  To: u-boot

In message <528646bc050627152162d1dba@mail.gmail.com> you wrote:
>
> The problem with relocation is that it adds a layer of complexity to
> the debug process after jumping into RAM.  Things such as the

It's nothing compared to what you get with a two stage  process.  You
either  end  up  with  lots  of  code duplication (and duplication of
problems and a huge memory footprint) or with a system that is a PITA
to port to new hardware.

> manipulating the command tables so the pointers match up again.  Every
> time a new static or global is added, you need to worry about such
> things.

Remember that this effects only staticaly intialized pointers. 

The simple thing to do is to avoid these.

There are other restrictions like having no writable data segment nor
zeroed bss space in the starup phase. We  can  live  with  this  just
fine.

> For example; when built for flash you cannot load the image into RAM
> and run it (i.e. from dBug) to see if the code after relocation is
> working correctly.  This makes it more difficult to track down a

Sorry, I don't understand what you mean.

> relocation problem.  When relocation hangs, it can be difficult to
> isolate the problem down to code running before or after relocation. 

No, this is a trivial case. When relocation hangs,  then  your  SDRAM
initialization is broken. Period.

> However, if it was a two stage image, you could run the RAM stage from
> dBug.  If it doesn't work then you know you need to fix the RAM image
> problem before fixing the ROM code.  If it does work then you know the

You don't understand. The problems are NOT int the  "running  in  RAM
part".  This  is  simple  stuff.  It usually just works, once you got
there. We spend 95% of teh porting and debugging time  in  the  other
part.

> Ultimatly, I'm asking/debating whether or not a two-image scheme would
> make it simpler to debug.  Granted there are other issues, such as
> duplicate copies of functions; but that's why I'm asking, to get other
> perspectives and become a better designer.  :-)

Been there before. I know exactly why I don't  want  to  change  this
part  of  the  design. Feel free to try it out on your own. Port your
code to 3 or 4 boards. I'm sure we'll see you back here soon.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Man is the best computer we can put aboard a spacecraft ...  and  the
only one that can be mass produced with unskilled labor.
                                                 -- Wernher von Braun

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-27 13:40 ` Wolfgang Denk
  2005-06-27 16:26   ` Grant Likely
@ 2005-06-28 12:50   ` Andreas Block
  2005-06-28 14:01     ` Wolfgang Denk
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Block @ 2005-06-28 12:50 UTC (permalink / raw)
  To: u-boot

Hello Wolfgang,

thanks for your quick reply.

27.06.2005 15:40:25, Wolfgang Denk <wd@denx.de> wrote:

>Dear Andreas,
> 
> [cut...]
>
>It's just that not many people really understand all the details  how
>the relocation works.
>
>> The u-boot boots from flash and relocates itself into RAM. After relocation the
>> array is relocated into RAM and so is its content (the pointers to strings). But the 
>> actual strings are still located in flash. "walter" is a global symbol located in 
>> ".data" section of the compiled object. Is this the behaviour I should expect, or is
>> it a problem with u-boots relocation code?
>
>If you look at the code, then you  will  find  that  the  same  thing
>happens  to  all  pointers with static initialization. If you think a
>bit about it you will probably be not  surprised  -  how  should  the
>compiler  know  that  the addresses of your strings might change? and
>after the compiler generated code with a  static  initializer  -  who
>should  then know that the contents of this variable might need to be
>relocated?
>
>See for example how we manually adjust (= relocate) the command table
>and other pointer constants in board_init_r().
>
>I guess you can probably tell  GCC  to  add  GOT  entries  for  these
>pointers,  but  I have to admit that I don't know off-hand what's the
>most efficient way.

I'm not quite sure, if I understood you.
Just to summerize:
1. Absolute symbols are always relocated (my mail: "Does u-boot relocate absolute 
symbols?", 14.06.2005).
2. Statically initialized pointers are never relocated.

I do understand the second point (and can live with this behaviour), but I'd like to 
know, where you loose the required information to relocate the pointers as well.
The first point is more important to me. As I understand, absolute symbols shouldn't be 
relocated at all. But I guess, you've a similar reason as for the statically 
initialized pointers. Anyway: Is it possible in any way to locate the array at the 
position I want it to be? Or the other way round: Is it as difficult to prevent 
absolute symbols from being added to the GOT as adding something?

Regards,
Andreas


>
>Best regards,
>
>Wolfgang Denk
>
>-- 
>Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
>Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
>He had quite a powerful intellect, but it  was  as  powerful  like  a
>locomotive,  and  ran on rails and was therefore almost impossible to
>steer.                          - Terry Pratchett, _Lords and Ladies_
>
>
>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-28 12:50   ` Andreas Block
@ 2005-06-28 14:01     ` Wolfgang Denk
  2005-06-28 14:32       ` Andreas Block
  2005-06-29  7:27       ` OT: Sam Beckett (Was: Re: [U-Boot-Users] Relocation of symbols?) Marius Groeger
  0 siblings, 2 replies; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-28 14:01 UTC (permalink / raw)
  To: u-boot

In message <CNLTR94IEOA0NLOJC7FCATQTQJGRO.42c14780@pc-block> you wrote:
> 
> Just to summerize:
> 1. Absolute symbols are always relocated (my mail: "Does u-boot relocate absolute 
> symbols?", 14.06.2005).

I don't think so. An absolute symbol is, ummm, absolute.

> 2. Statically initialized pointers are never relocated.

Right.

> I do understand the second point (and can live with this behaviour), but I'd like to 
> know, where you loose the required information to relocate the pointers as well.

We don't lose anything. The compiler /  linker  never  has  any  such
information.

For example, asssume we  have  three  pointers  that  are  statically
initialized.  One  is  initialized  with the physical address of some
peripheral on your board, the  second  one  with  the  address  of  a
function  in  the  U-Boot  code,  and the third one with the constant
0x12345678;

For GCC all three of them are just initialized pointers.  Who  should
decide which of these need relocation, and which not?

> The first point is more important to me. As I understand, absolute symbols shouldn't be 
> relocated at all. But I guess, you've a similar reason as for the statically 

I can't parse this.

I don't think  that  GCC/gas  will  normally  generate  any  absolute
symbols  at all. If you manually define such symbols you are expected
to understand what you are doing.

> initialized pointers. Anyway: Is it possible in any way to locate the array at the 
> position I want it to be? Or the other way round: Is it as difficult to prevent 
> absolute symbols from being added to the GOT as adding something?

I mentioned the simple solution before: either you  avoid  statically
initialized  function  pointers  (for  examply  by initializing these
dynamically after relocation), of you manually adjust  your  pointers
after  relocation,  like  we  do for example for the command table. I
also mentioned that there may be ways (like putting your stuff  in  a
special segment and taking care to relocate this) to handle this, but
I don't have a solution ready, nor do I see an urgent need for it.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Ever try. Ever fail. No matter. Try again. Fail again.  Fail  better.
                                                        -- S. Beckett

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-28 14:01     ` Wolfgang Denk
@ 2005-06-28 14:32       ` Andreas Block
  2005-06-28 15:21         ` Wolfgang Denk
  2005-06-29  7:27       ` OT: Sam Beckett (Was: Re: [U-Boot-Users] Relocation of symbols?) Marius Groeger
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Block @ 2005-06-28 14:32 UTC (permalink / raw)
  To: u-boot

28.06.2005 16:01:56, Wolfgang Denk <wd@denx.de> wrote:

>In message <CNLTR94IEOA0NLOJC7FCATQTQJGRO.42c14780@pc-block> you wrote:
>> 
>> Just to summerize:
>> 1. Absolute symbols are always relocated (my mail: "Does u-boot relocate absolute 
>> symbols?", 14.06.2005).
>
>I don't think so. An absolute symbol is, ummm, absolute.
>
>> 2. Statically initialized pointers are never relocated.
>
>Right.

Well, then I don't get it. Perhaps you could have a look at my mail referenced above. 
There's an example of U-Boot relocating an absolute symbol.


> [...]
>
>For GCC all three of them are just initialized pointers.  Who  should
>decide which of these need relocation, and which not?

Well, I think there has to be a difference for the compiler in the next two cases:

char *walter = 0x4711;
char *herbert = "Thommy, the cat";

The first one shouldn't be relocated by the compiler, but the last one has to be 
relocated, in order to make the program work. At least as far as I understand it, 
please correct me, if I'm wrong.


>> The first point is more important to me. As I understand, absolute symbols shouldn't 
>> be relocated at all. But I guess, you've a similar reason as for the statically 
>
>I can't parse this.
>
>I don't think  that  GCC/gas  will  normally  generate  any  absolute
>symbols  at all. If you manually define such symbols you are expected
>to understand what you are doing.

Again, I'd like to reference my above mentioned first request from 14.06.2005. I think, 
I know what I'm doing and what I want to do, but the generated absolute symbol is 
relocated by U-Boot.


>> initialized pointers. Anyway: Is it possible in any way to locate the array at the 
>> position I want it to be? Or the other way round: Is it as difficult to prevent 
>> absolute symbols from being added to the GOT as adding something?
>
>I mentioned the simple solution before: either you  avoid  statically
>initialized  function  pointers  (for  examply  by initializing these
>dynamically after relocation), of you manually adjust  your  pointers
>after  relocation,  like  we  do for example for the command table. I
>also mentioned that there may be ways (like putting your stuff  in  a
>special segment and taking care to relocate this) to handle this, but
>I don't have a solution ready, nor do I see an urgent need for it.

Thanks for your suggestions, but my main problem is I'm not wanting to change any 
common code and want to solve my problem in the problem specific code.

Best regards,
Andreas Block

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-28 14:32       ` Andreas Block
@ 2005-06-28 15:21         ` Wolfgang Denk
  2005-06-28 15:47           ` Andreas Block
  2005-06-29 10:34           ` Andreas Block
  0 siblings, 2 replies; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-28 15:21 UTC (permalink / raw)
  To: u-boot

In message <85W32HGVT4WOKE0XT1Y1XVTND0OM74.42c15f80@pc-block> you wrote:
> 
> Well, then I don't get it. Perhaps you could have a look at my mail referenced above. 
> There's an example of U-Boot relocating an absolute symbol.

I didn't see it. You claimed that there was an absolute symbol in  an
object  file, but I have not seen the result of the linker run (i. e.
the U-Boot ELF file, the System.map file or the u-boot.map file); nor
do I know what you are doing in your linker script.

Is your symbol "fpgadata" really listed in the GOT?

You mentioned that it contains a bad value, but did you  verify  that
this  was indeed casued by relocation (i. e. was the value really off
by the relocation distance) ?

> Well, I think there has to be a difference for the compiler in the next two cases:
> 
> char *walter = 0x4711;
> char *herbert = "Thommy, the cat";

No. There may be a difference for you, or for the resultof  the  code
execution,  but  for  the  compiler  it's all the same. AFAIK the ESP
module of GCC has not been implemented yet :-)

> The first one shouldn't be relocated by the compiler, but the last one has to be 
> relocated, in order to make the program work. At least as far as I understand it, 
> please correct me, if I'm wrong.

The _compiler_ does not do any relocation at  all.  He  doesn't  even
know that such a thing exists. For the _compiler_ a pointer is just a
pointer, in no way more special than an int.

> >I don't think  that  GCC/gas  will  normally  generate  any  absolute
> >symbols  at all. If you manually define such symbols you are expected
> >to understand what you are doing.
      ^^^^^^^^^^

The emphasis is on "understand".

> Again, I'd like to reference my above mentioned first request from 14.06.2005. I think, 
> I know what I'm doing and what I want to do, but the generated absolute symbol is 
> relocated by U-Boot.

You know what you  did,  but  you  posted  here  because  you  didn't
understand  the  results,  right?  I don't understand it either, so I
tend to avoid doing such things ;-)

> Thanks for your suggestions, but my main problem is I'm not wanting to change any 
> common code and want to solve my problem in the problem specific code.


I really don't understand why you need to statically  intialize  this
pointer  at  all,  or why you bother about it being relocated or not.
You mentioned that this is an address to where the code is downloaded
by TFTP first. So you will have to set up a  TFTP  transfer  and  all
these  things  - so the address in RAM should be known. Why don't you
simply use a plain assignment in your code, then?

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Making files is easy under  the  UNIX  operating  system.  Therefore,
users  tend  to  create  numerous  files  using large amounts of file
space. It has been said that the only standard thing about  all  UNIX
systems  is  the  message-of-the-day  telling users to clean up their
files.                             - System V.2 administrator's guide

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-28  0:21         ` Wolfgang Denk
@ 2005-06-28 15:42           ` Grant Likely
  0 siblings, 0 replies; 19+ messages in thread
From: Grant Likely @ 2005-06-28 15:42 UTC (permalink / raw)
  To: u-boot

On 6/27/05, Wolfgang Denk <wd@denx.de> wrote:
> In message <528646bc050627152162d1dba@mail.gmail.com> you wrote:
> > Ultimatly, I'm asking/debating whether or not a two-image scheme would
> > make it simpler to debug.  Granted there are other issues, such as
> > duplicate copies of functions; but that's why I'm asking, to get other
> > perspectives and become a better designer.  :-)
> 
> Been there before. I know exactly why I don't  want  to  change  this
> part  of  the  design. Feel free to try it out on your own. Port your
> code to 3 or 4 boards. I'm sure we'll see you back here soon.
> 

Thanks for the info; I'd been wondering about the design background
for a while, so it's good to get the perspective.

Cheers,
g.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-28 15:21         ` Wolfgang Denk
@ 2005-06-28 15:47           ` Andreas Block
  2005-06-29 10:34           ` Andreas Block
  1 sibling, 0 replies; 19+ messages in thread
From: Andreas Block @ 2005-06-28 15:47 UTC (permalink / raw)
  To: u-boot

28.06.2005 17:21:35, Wolfgang Denk <wd@denx.de> wrote:

>In message <85W32HGVT4WOKE0XT1Y1XVTND0OM74.42c15f80@pc-block> you wrote:
>> 
>> Well, then I don't get it. Perhaps you could have a look at my mail referenced
>> above. 
>> There's an example of U-Boot relocating an absolute symbol.
>
>I didn't see it. You claimed that there was an absolute symbol in  an
>object  file, but I have not seen the result of the linker run (i. e.
>the U-Boot ELF file, the System.map file or the u-boot.map file); nor
>do I know what you are doing in your linker script.
>
>Is your symbol "fpgadata" really listed in the GOT?
>
>You mentioned that it contains a bad value, but did you  verify  that
>this  was indeed casued by relocation (i. e. was the value really off
>by the relocation distance) ?

Well, I did show you the output of the generated object itself (before it got linked 
against U-Boot) and all I did in my test-command in U-Boot was to print the address of 
the symbol. All I can think of is relocation. But I'll think again, do some more tests 
and send you the result tomorrow.


>> Well, I think there has to be a difference for the compiler in the next two cases:
>> 
>> char *walter = 0x4711;
>> char *herbert = "Thommy, the cat";
>
>No. There may be a difference for you, or for the resultof  the  code
>execution,  but  for  the  compiler  it's all the same. AFAIK the ESP
>module of GCC has not been implemented yet :-)

Of course it's not the compiler, but the linker. When talking about compiler, I was 
speaking of the entire tool-chain, sorry, for this imprecision. But I can show you, 
that it is indeed two different thinks for the compiler (which reaches some information 
about this difference to the linker). I'll do this tomorrow, too.


>> The first one shouldn't be relocated by the compiler, but the last one has to be 
>> relocated, in order to make the program work. At least as far as I understand it, 
>> please correct me, if I'm wrong.
>
>The _compiler_ does not do any relocation at  all.  He  doesn't  even
>know that such a thing exists. For the _compiler_ a pointer is just a
>pointer, in no way more special than an int.

But the compiler tags relocation marks for the linker, right?


>> >I don't think  that  GCC/gas  will  normally  generate  any  absolute
>> >symbols  at all. If you manually define such symbols you are expected
>> >to understand what you are doing.
>
>The emphasis is on "understand".

Thanks a lot, I got that one.


>> Again, I'd like to reference my above mentioned first request from 14.06.2005. I 
think, 
>> I know what I'm doing and what I want to do, but the generated absolute symbol is 
>> relocated by U-Boot.
>
>You know what you  did,  but  you  posted  here  because  you  didn't
>understand  the  results,  right?  I don't understand it either, so I
>tend to avoid doing such things ;-)

If I avoided all things I don't understand, I wouldn't have much to do, would I?


>> Thanks for your suggestions, but my main problem is I'm not wanting to change any 
>> common code and want to solve my problem in the problem specific code.
>
>I really don't understand why you need to statically  intialize  this
>pointer  at  all,  or why you bother about it being relocated or not.
>You mentioned that this is an address to where the code is downloaded
>by TFTP first. So you will have to set up a  TFTP  transfer  and  all
>these  things  - so the address in RAM should be known. Why don't you
>simply use a plain assignment in your code, then?

I will explain this once more in detail tomorrow. The main problem lies in the fact, 
that I don't want to touch any common code, but want to achive a solution within my 
project's code, only.

Regards,
Andreas Block

^ permalink raw reply	[flat|nested] 19+ messages in thread

* OT: Sam Beckett (Was: Re: [U-Boot-Users] Relocation of symbols?)
  2005-06-28 14:01     ` Wolfgang Denk
  2005-06-28 14:32       ` Andreas Block
@ 2005-06-29  7:27       ` Marius Groeger
  1 sibling, 0 replies; 19+ messages in thread
From: Marius Groeger @ 2005-06-29  7:27 UTC (permalink / raw)
  To: u-boot

On Tue, 28 Jun 2005, Wolfgang Denk wrote:

> Ever try. Ever fail. No matter. Try again. Fail again.  Fail  better.
>                                                        -- S. Beckett

I think that quote should be:

   "Ever tried. Ever failed. No matter.
    Try again. Fail again. Fail better."

I also found this version, which makes even more sense:

   "Ever tried? Ever failed? No matter.
    Try Again. Fail again. Fail better."

Regards,
Marius

-- 
Marius Groeger <mgroeger@sysgo.com>
SYSGO AG                      Embedded and Real-Time Software
Voice: +49 6136 9948 0                  FAX: +49 6136 9948 10
www.sysgo.com | www.elinos.com | www.osek.de | www.pikeos.com

Meet us:  Embedded Systems Expo & Conference, Tokyo Big Sight
           2005-JUN-29 - 2005-JUL-01    http://www.esec.jp/en/

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-28 15:21         ` Wolfgang Denk
  2005-06-28 15:47           ` Andreas Block
@ 2005-06-29 10:34           ` Andreas Block
  2005-06-29 13:32             ` Wolfgang Denk
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Block @ 2005-06-29 10:34 UTC (permalink / raw)
  To: u-boot

28.06.2005 17:21:35, Wolfgang Denk <wd@denx.de> wrote:

>In message <85W32HGVT4WOKE0XT1Y1XVTND0OM74.42c15f80@pc-block> you wrote:
>> 
>> Well, then I don't get it. Perhaps you could have a look at my mail referenced 
>> above. 
>> There's an example of U-Boot relocating an absolute symbol.
>
>I didn't see it. You claimed that there was an absolute symbol in  an
>object  file, but I have not seen the result of the linker run (i. e.
>the U-Boot ELF file, the System.map file or the u-boot.map file); nor
>do I know what you are doing in your linker script.
>
>Is your symbol "fpgadata" really listed in the GOT?

No, it is not. Do absolute symbols need to be entered into the GOT? It is generated as 
described in the mail from 24.6.05. Attached to this mail, you find two source files. 
reloc_test.c simply adds a new U-Boot command "test", which does nothing else but 
printing the address of the symbol array. This symbol is generated from the array.S 
assembler source. As you will see, array is not located at 0x400000 in U_Boot. At least 
not after relocation.


>You mentioned that it contains a bad value, but did you  verify  that
>this  was indeed casued by relocation (i. e. was the value really off
>by the relocation distance) ?

Attached to this mail, you find two very short source files, which show the problem. 
Compile it once into a u-boot (sorry, the relocation offset is calculated by the offset 
of a dummy function, when running in RAM compared to its address shown by nm in the u-
boot-binary, this needs to be changed to your needs at the beginning of reloc-test.c) 
and you'll not only see, that the address is wrong, but it is exactly off by relocation 
distance. Have a look with nm at the generated array.o to see, that the symbol is 
really absolute. Remove the define of ABTEST_UBOOT at the beginning of reloc_test.c to 
compile the example for linux and see it working as expected.


>> Well, I think there has to be a difference for the compiler in the next two cases:
>> 
>> char *walter = 0x4711;
>> char *herbert = "Thommy, the cat";
>
>No. There may be a difference for you, or for the resultof  the  code
>execution,  but  for  the  compiler  it's all the same. AFAIK the ESP
>module of GCC has not been implemented yet :-)

One can see the difference with objdump. Look at the attached example.c. Examine it's 
object with "objdump --reloc example.o". There you can see, that the compiler generated 
relocation entries for the function pointers m2 and m3 and for the static initializer 
"xxx", but NOT for the other static initializer 0x4712. See objdump output below:

example.o:     file format elf32-i386

RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE 
00000016 R_386_32          m2
00000025 R_386_32          m3


RELOCATION RECORDS FOR [.data]:
OFFSET   TYPE              VALUE 
00000000 R_386_32          xxx


>> The first one shouldn't be relocated by the compiler, but the last one has to be 
>> relocated, in order to make the program work. At least as far as I understand it, 
>> please correct me, if I'm wrong.
>
>The _compiler_ does not do any relocation at  all.  He  doesn't  even
>know that such a thing exists. For the _compiler_ a pointer is just a
>pointer, in no way more special than an int.

As shown above, you're wrong at this point, sorry.


>> >I don't think  that  GCC/gas  will  normally  generate  any  absolute
>> >symbols  at all. If you manually define such symbols you are expected
>> >to understand what you are doing.
>      ^^^^^^^^^^
>
>The emphasis is on "understand".
>
>> Again, I'd like to reference my above mentioned first request from 14.06.2005. I 
think, 
>> I know what I'm doing and what I want to do, but the generated absolute symbol is 
>> relocated by U-Boot.
>
>You know what you  did,  but  you  posted  here  because  you  didn't
>understand  the  results,  right?  I don't understand it either, so I
>tend to avoid doing such things ;-)

Thanks for blaming myself of not understanding and suggesting to avoid the work I've to 
do. Believe me, there're only a few things I would like to do even more. But I can't. 
The reason to do it in the way described above is already described in my mail 24.6.05.
Since there's an array declared as

extern const unsigned char array[];

in a common-code section, and I can't include the data directly as an initialization 
inside of my program file, like it's done in other projects:

const unsigned char array[] = {
#include "array_data.c"
};

You might see the problem. I can't initialize the array in my project files, because I 
don't know the content and it's size at build time. And on the other hand I can't 
initialize the symbol as a pointer, because it's simply wrong:

NO GOOD: const unsigned char *array = 0x400000;

And since I don't want to touch code common to several projects, I can't initialize the 
pointer dynamically. So the only way for me seems to be to generate the symbol as shown 
in array.S. But this doesn't work.


>> Thanks for your suggestions, but my main problem is I'm not wanting to change any 
>> common code and want to solve my problem in the problem specific code.
>
>
>I really don't understand why you need to statically  intialize  this
>pointer  at  all,  or why you bother about it being relocated or not.
>You mentioned that this is an address to where the code is downloaded
>by TFTP first. So you will have to set up a  TFTP  transfer  and  all
>these  things  - so the address in RAM should be known. Why don't you
>simply use a plain assignment in your code, then?

See above.

Regards,
Andreas Block


-------------- next part --------------
A non-text attachment was scrubbed...
Name: reloc_test.c
Type: application/octet-stream
Size: 1029 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050629/751ae1e6/attachment.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: example.c
Type: application/octet-stream
Size: 209 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050629/751ae1e6/attachment-0001.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: array.S
Type: application/octet-stream
Size: 45 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050629/751ae1e6/attachment-0002.obj 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-29 10:34           ` Andreas Block
@ 2005-06-29 13:32             ` Wolfgang Denk
  2005-06-29 14:16               ` Andreas Block
  0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-29 13:32 UTC (permalink / raw)
  To: u-boot

In message <1ZQN5YCAUQ07JHUTNMTVTZWLHCTQQM.42c27942@pc-block> you wrote:
>
...
> NO GOOD: const unsigned char *array = 0x400000;
> 
> And since I don't want to touch code common to several projects, I can't initialize the 
> pointer dynamically. So the only way for me seems to be to generate the symbol as shown 
> in array.S. But this doesn't work.

I still can't understand why you cannot  simply  use  an  unitialized
pointer,  or  even one which has a random init value, and then adjust
it in your board specific code, say in a misc_init_r() or maybe  even
in a board_early_init_r() function?

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Fascinating, a totally parochial attitude.
	-- Spock, "Metamorphosis", stardate 3219.8

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-29 13:32             ` Wolfgang Denk
@ 2005-06-29 14:16               ` Andreas Block
  2005-06-29 17:32                 ` Wolfgang Denk
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Block @ 2005-06-29 14:16 UTC (permalink / raw)
  To: u-boot

29.06.2005 15:32:17, Wolfgang Denk <wd@denx.de> wrote:

>In message <1ZQN5YCAUQ07JHUTNMTVTZWLHCTQQM.42c27942@pc-block> you wrote:
>>
>...
>> NO GOOD: const unsigned char *array = 0x400000;
>> 
>> And since I don't want to touch code common to several projects, I can't initialize 
>> the pointer dynamically. So the only way for me seems to be to generate the symbol
>> as shown in array.S. But this doesn't work.
>
>I still can't understand why you cannot  simply  use  an  unitialized
>pointer,  or  even one which has a random init value, and then adjust
>it in your board specific code, say in a misc_init_r() or maybe  even
>in a board_early_init_r() function?

Hmm, I take this as a refusal to help and a refusal to acquire new information. For me 
this is quite a basic problem, perhaps with my understanding, but meanwhile I guess not 
with my understanding, but with U-Boot itself. I'm not really looking for a workaround. 
The workaround for me, would be to change the common code and do another round of 
testing on all affected systems (which by the way is also needed with your suggestion). 
I was looking for information, understanding and a reason, why the way I had chosen 
failed. And once again, your suggestion to initialize a pointer in my project dependent 
code, absolutely ignores the fact, that the array is declared in common code as:

extern const char walter[];

Perhaps you don't see a difference to the following notation, which I had to use in my 
project dependent code:

extern const char *walter;

But there is one, even if you refuse to recognize. Feel free to ask, if you'd like to 
know.

I also wonder, whether the issue with the relocation of statically initialized pointers 
is solved?

Regards,
Andreas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-29 14:16               ` Andreas Block
@ 2005-06-29 17:32                 ` Wolfgang Denk
  2005-06-30  8:10                   ` Andreas Block
  0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-29 17:32 UTC (permalink / raw)
  To: u-boot

In message <8ECMIB8MIIC528283SP05OJFEB784F.42c2ad3d@pc-block> you wrote:
> 
> >I still can't understand why you cannot  simply  use  an  unitialized
> >pointer,  or  even one which has a random init value, and then adjust
> >it in your board specific code, say in a misc_init_r() or maybe  even
> >in a board_early_init_r() function?
> 
> Hmm, I take this as a refusal to help and a refusal to acquire new information. For me 

Bollocks. Why don't you just take it as what it is: a  question,  and
the attempt to understand your situation?

The attitude you display here does not really add to my motivation to
dig into this later tonight as I originally intended.

> this is quite a basic problem, perhaps with my understanding, but meanwhile I guess not 
> with my understanding, but with U-Boot itself. I'm not really looking for a workaround. 

That's a pity, because a workaround is probably easier available.

> The workaround for me, would be to change the common code and do another round of 

I think you could do without such a change. This may require a little
hack, and may even result in a not strictly standard  conforming  im-
plementation, but I think it can be done.

> failed. And once again, your suggestion to initialize a pointer in my project dependent 
> code, absolutely ignores the fact, that the array is declared in common code as:
> 
> extern const char walter[];
> 
> Perhaps you don't see a difference to the following notation, which I had to use in my 
> project dependent code:
> 
> extern const char *walter;
> 
> But there is one, even if you refuse to recognize. Feel free to ask, if you'd like to 
> know.

I have no idea why you think I ignored your arguments. I  never  said
anything  like  this. Of course there is a difference. I am perfectly
aware of this. But does it really prevent you  from  doing  what  you
want  to  do? There is so many things you can do. For a little demon-
stration of what can be done in C have a look at the winning  entries
of the IOCCC at http://www.de.ioccc.org/years.html :-)

> I also wonder, whether the issue with the relocation of statically initialized pointers 
> is solved?

There is no "issue" from my point of view. We know the situation, and
we know how to live with it (by manually relocating the pointers).

When I ran into this situation 5 years ago I  didn't  find  a  better
solution  in  a reasonable time. Feel free to show me that there is a
better approach.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
At the source of every error which is blamed on the computer you will
find at least two human errors, including the error of blaming it  on
the computer.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-29 17:32                 ` Wolfgang Denk
@ 2005-06-30  8:10                   ` Andreas Block
  2005-06-30 11:09                     ` Wolfgang Denk
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Block @ 2005-06-30  8:10 UTC (permalink / raw)
  To: u-boot

29.06.2005 19:32:46, Wolfgang Denk <wd@denx.de> wrote:

>In message <8ECMIB8MIIC528283SP05OJFEB784F.42c2ad3d@pc-block> you wrote:
>> 
>> >I still can't understand why you cannot  simply  use  an  unitialized
>> >pointer,  or  even one which has a random init value, and then adjust
>> >it in your board specific code, say in a misc_init_r() or maybe  even
>> >in a board_early_init_r() function?
>> 
>> Hmm, I take this as a refusal to help and a refusal to acquire new information.
>> For me 
>
>Bollocks. Why don't you just take it as what it is: a  question,  and
>the attempt to understand your situation?
>
>The attitude you display here does not really add to my motivation to
>dig into this later tonight as I originally intended.

Well, I'm sorry. I didn't want to sound rude. I was a bit dissappointed, because it 
seemed to me like you were ignoring great parts of my last post and sort of retreated 
to safer grounds.

Perhaps you could explain to me, how you think I could initialize the declared array at 
those positions you propose (it's not a problem of finding the referenced functions, 
but of knowing how to do it). I've sent a small example as answer to Rune Torgersen, 
which shows quite well, that one can't initialize/locate an "open" array (like fpgadata
[]) by initializing a pointer of the same name. Seemingly it's me, who's failing to 
see, but I don't get how your hint helps me with this.


>> this is quite a basic problem, perhaps with my understanding, but meanwhile I guess 
>> not with my understanding, but with U-Boot itself. I'm not really looking for 
>> a workaround. 
>
>That's a pity, because a workaround is probably easier available.

Sure. The project is actually working. All I'd like to do is to remove the changes done 
to common code and understand, where my problem with U-Boot stems from. If it's me, 
who's not getting it or if there's perhaps a slightly strange/non-generic behaviour in 
U-Boot. It took me quite a while to find out about my initialization problem and the 
non-relocated array-content (it was actually my debug output, which stayed in flash and 
wasn't of any help, when my PLD programmer killed the PLD and thus the flash access) 
and I would like to avoid such pain in the future.


>> The workaround for me, would be to change the common code and do another round of 
>
>I think you could do without such a change. This may require a little
>hack, and may even result in a not strictly standard  conforming  im-
>plementation, but I think it can be done.
>
>> failed. And once again, your suggestion to initialize a pointer in my project 
>> dependent code, absolutely ignores the fact, that the array is declared in
>> common code as:
>> 
>> extern const char walter[];
>> 
>> Perhaps you don't see a difference to the following notation, which I had to use in 
>> my project dependent code:
>> 
>> extern const char *walter;
>> 
>> But there is one, even if you refuse to recognize. Feel free to ask, if you'd like 
>> to know.
>
>I have no idea why you think I ignored your arguments. I  never  said
>anything  like  this. Of course there is a difference. I am perfectly
>aware of this. But does it really prevent you  from  doing  what  you
>want  to  do? There is so many things you can do. For a little demon-
>stration of what can be done in C have a look at the winning  entries
>of the IOCCC at http://www.de.ioccc.org/years.html :-)

Well, at first, you cut away three quarters of my last post. Second, you told me in one 
of your answers, that the compiler knows no differences between these initializations 
and told me, U-Boot wasn't able to distinguish between them either. And no, it does not 
entirely prevent me from what I want to do, but it keeps me from doing it the smoothest 
way or the way I'd like to do it best.


>> I also wonder, whether the issue with the relocation of statically initialized 
pointers 
>> is solved?
>
>There is no "issue" from my point of view. We know the situation, and
>we know how to live with it (by manually relocating the pointers).
>
>When I ran into this situation 5 years ago I  didn't  find  a  better
>solution  in  a reasonable time. Feel free to show me that there is a
>better approach.

I'm afraid, I currently don't have the knowledge, nor the time (at least not at work) 
to do it in a better way. But I thought, perhaps you would like to at least discuss the 
way it's done now and perhaps, combined with your knowledge of how the things are 
running today, come to see a new/better/more generic way of doing it. But please don't 
get me wrong again, I certainly don't want to sound like I'm requesting a change in U-
Boot or something alike.

Best regards,
Andreas Block

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [U-Boot-Users] Relocation of symbols?
  2005-06-30  8:10                   ` Andreas Block
@ 2005-06-30 11:09                     ` Wolfgang Denk
  0 siblings, 0 replies; 19+ messages in thread
From: Wolfgang Denk @ 2005-06-30 11:09 UTC (permalink / raw)
  To: u-boot

In message <SNHBXT98B63SQ98BA765YIC51A95Z52.42c3a90c@pc-block> you wrote:
>
> Well, I'm sorry. I didn't want to sound rude. I was a bit dissappointed, because it 
> seemed to me like you were ignoring great parts of my last post and sort of retreated 
> to safer grounds.

I accept ypour aplogy. I just have a habit of NOT trying  to  address
the  problem  the  same way and following the same thoughs - if I did
this, O probably ended up with the same conclusions like you  and  no
solution  at  all. Instead, I try to remember that There Is More Than
One Way To Do Things.

That's why I ask for information that my seem irrelevant to  you,  or
that I seem to ignore information you provided while I'm trying to go
a different way.

> Perhaps you could explain to me, how you think I could initialize the declared array at 
> those positions you propose (it's not a problem of finding the referenced functions, 
> but of knowing how to do it). I've sent a small example as answer to Rune Torgersen, 
> which shows quite well, that one can't initialize/locate an "open" array (like fpgadata
> []) by initializing a pointer of the same name. Seemingly it's me, who's failing to 
> see, but I don't get how your hint helps me with this.

See my previous posting.

> Well, at first, you cut away three quarters of my last post. Second, you told me in one 
> of your answers, that the compiler knows no differences between these initializations 

Yes, I was wrong there. I stand corrected.

> I'm afraid, I currently don't have the knowledge, nor the time (at least not at work) 
> to do it in a better way. But I thought, perhaps you would like to at least discuss the 
> way it's done now and perhaps, combined with your knowledge of how the things are 
> running today, come to see a new/better/more generic way of doing it. But please don't 
> get me wrong again, I certainly don't want to sound like I'm requesting a change in U-
> Boot or something alike.

I'm not that intimate with the linker or the changes  they  implement
to  it  -  which  seem to break existing and seemingly perfectly good
code that used to work for a long time. I'm afraid  there  is  little
help  available  - if there was a linker expert here on the list with
some clever ideas he would have probably spoken up by now.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A modem is a baudy house.

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2005-06-30 11:09 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-27 13:08 [U-Boot-Users] Relocation of symbols? Andreas Block
2005-06-27 13:40 ` Wolfgang Denk
2005-06-27 16:26   ` Grant Likely
2005-06-27 20:00     ` Wolfgang Denk
2005-06-27 22:21       ` Grant Likely
2005-06-28  0:21         ` Wolfgang Denk
2005-06-28 15:42           ` Grant Likely
2005-06-28 12:50   ` Andreas Block
2005-06-28 14:01     ` Wolfgang Denk
2005-06-28 14:32       ` Andreas Block
2005-06-28 15:21         ` Wolfgang Denk
2005-06-28 15:47           ` Andreas Block
2005-06-29 10:34           ` Andreas Block
2005-06-29 13:32             ` Wolfgang Denk
2005-06-29 14:16               ` Andreas Block
2005-06-29 17:32                 ` Wolfgang Denk
2005-06-30  8:10                   ` Andreas Block
2005-06-30 11:09                     ` Wolfgang Denk
2005-06-29  7:27       ` OT: Sam Beckett (Was: Re: [U-Boot-Users] Relocation of symbols?) Marius Groeger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.