powerpc/boot: Use address-of operator on section symbols
authorNathan Chancellor <natechancellor@gmail.com>
Wed, 24 Jun 2020 03:59:20 +0000 (20:59 -0700)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 30 Jun 2020 04:38:00 +0000 (14:38 +1000)
Clang warns:

arch/powerpc/boot/main.c:107:18: warning: array comparison always
evaluates to a constant [-Wtautological-compare]
        if (_initrd_end > _initrd_start) {
                        ^
arch/powerpc/boot/main.c:155:20: warning: array comparison always
evaluates to a constant [-Wtautological-compare]
        if (_esm_blob_end <= _esm_blob_start)
                          ^
2 warnings generated.

These are not true arrays, they are linker defined symbols, which are
just addresses.  Using the address of operator silences the warning
and does not change the resulting assembly with either clang/ld.lld
or gcc/ld (tested with diff + objdump -Dr).

Reported-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200624035920.835571-1-natechancellor@gmail.com
arch/powerpc/boot/main.c
arch/powerpc/boot/ps3.c

index a9d2091..cae31a6 100644 (file)
@@ -104,7 +104,7 @@ static struct addr_range prep_initrd(struct addr_range vmlinux, void *chosen,
 {
        /* 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) {
                printf("Attached initrd image at 0x%p-0x%p\n\r",
                       _initrd_start, _initrd_end);
                initrd_addr = (unsigned long)_initrd_start;
@@ -152,7 +152,7 @@ static void prep_esm_blob(struct addr_range vmlinux, void *chosen)
        unsigned long esm_blob_addr, esm_blob_size;
 
        /* Do we have an ESM (Enter Secure Mode) blob? */
-       if (_esm_blob_end <= _esm_blob_start)
+       if (&_esm_blob_end <= &_esm_blob_start)
                return;
 
        printf("Attached ESM blob at 0x%p-0x%p\n\r",
index c52552a..6e4efbd 100644 (file)
@@ -127,7 +127,7 @@ void platform_init(void)
        ps3_repository_read_rm_size(&rm_size);
        dt_fixup_memory(0, rm_size);
 
-       if (_initrd_end > _initrd_start) {
+       if (&_initrd_end > &_initrd_start) {
                setprop_val(chosen, "linux,initrd-start", (u32)(_initrd_start));
                setprop_val(chosen, "linux,initrd-end", (u32)(_initrd_end));
        }