how value assigned to __image_copy_start in U-boot
<p>As per my understanding below command is loading value of "__image_copy_start" to r1 register.</p>

<pre><code>    ldr     r1, =__image_copy_start
</code></pre>

<p>I am trying to understand how value is assigned to "__image_copy_start". I couldn't find any assignment statement which is assigning value to "__image_copy_start", but I could see following declarations in "arch/arc/lib/sections.c" file.</p>

<pre><code>char __image_copy_start[0] __attribute__((section(".__image_copy_start")));
char __image_copy_end[0] __attribute__((section(".__image_copy_end")));
</code></pre>

<p>It seems <code>__attribute__((section("")))</code> is used to place the variables in special sections(In the above statement "__image_copy_start[0]" will be placed at ".__image_copy_start" section). Can you help to understand the following.</p>

<ol>
<li>How value is assigned to "__image_copy_start[0]" ?</li>
<li>Why "__image_copy_start" declared as array "char __image_copy_start[0]" why not "char __image_copy_start" ?</li>
</ol>