Thread (12 messages) 12 messages, 8 authors, 2020-08-03

Re: [PATCH] powerpc/boot: Use address-of operator on section symbols

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2020-08-03 11:32:42
Also in: lkml

Hi Michael,

On Mon, Aug 3, 2020 at 1:09 PM Michael Ellerman [off-list ref] wrote:
Geert Uytterhoeven [off-list ref] writes:
quoted
On Mon, Jul 20, 2020 at 11:03 PM Segher Boessenkool
[off-list ref] wrote:
quoted
On Sat, Jul 18, 2020 at 09:50:50AM +0200, Geert Uytterhoeven wrote:
quoted
On Wed, Jun 24, 2020 at 6:02 AM Nathan Chancellor
[off-list ref] wrote:
quoted
        /* If we have an image attached to us, it overrides anything
         * supplied by the loader. */
-       if (_initrd_end > _initrd_start) {
+       if (&_initrd_end > &_initrd_start) {
Are you sure that fix is correct?

    extern char _initrd_start[];
    extern char _initrd_end[];
    extern char _esm_blob_start[];
    extern char _esm_blob_end[];

Of course the result of their comparison is a constant, as the addresses
are constant.  If clangs warns about it, perhaps that warning should be moved
to W=1?

But adding "&" is not correct, according to C.
Why not?

6.5.3.2/3
The unary & operator yields the address of its operand.  [...]
Otherwise, the result is a pointer to the object or function designated
by its operand.

This is the same as using the name of an array without anything else,
yes.  It is a bit clearer if it would not be declared as array, perhaps,
but it is correct just fine like this.
Thanks, I stand corrected.

Regardless, the comparison is still a comparison between two constant
addresses, so my fear is that the compiler will start generating
warnings for that in the near or distant future, making this change
futile.
They're not constant at compile time though. So I don't think the
compiler could (sensibly) warn about that? (surely!)
They're constant, but the compiler doesn't know their value.
That doesn't change by (not) using the address-of operator.

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help