Messages in this thread Patch in this message | | | From | Arnd Bergmann <> | Date | Fri, 26 Apr 2019 11:39:12 +0200 | Subject | Re: [PATCH 09/10] arm64: select DYNAMIC_DEBUG_RELATIVE_POINTERS |
| |
On Tue, Apr 9, 2019 at 11:26 PM Rasmus Villemoes <linux@rasmusvillemoes.dk> wrote: > > Similar to GENERIC_BUG_RELATIVE_POINTERS, one can now relativize the > four const char* members of struct _ddebug, thus saving 16 bytes per > instance (one for each pr_debug(), dev_debug() etc. in a > CONFIG_DYNAMIC_DEBUG kernel). The asm-generic implementation seems to > work out-of-the-box, though this is only compile-tested. > > Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
This causes a build regression when compiling with clang, see http://staging-storage.kernelci.org/next-clang/master/next-20190424/arm64/allmodconfig/clang-8/build.log
../init/initramfs.c:477:3: error: invalid operand in inline asm: '.ifndef __UNIQUE_ID_ddebug18.pushsection __verbose,"aw".type __UNIQUE_ID_ddebug18, STT_OBJECT.size __UNIQUE_ID_ddebug18, ${5:c}1:__UNIQUE_ID_ddebug18: .int ${0:c} - 1b /* _ddebug::modname_disp */ .int ${1:c} - 1b /* _ddebug::function_disp */ .int ${2:c} - 1b /* _ddebug::filename_disp */ .int ${3:c} - 1b /* _ddebug::format_disp */ .int ${4:c} /* _ddebug::flags_lineno */ .org 1b+${5:c}.popsection.set __UNIQUE_ID_ddebug18.ddebug.once, ${6:c}.elseif __UNIQUE_ID_ddebug18.ddebug.once - ${6:c}.line 477 - 1.error "'__UNIQUE_ID_ddebug18' used as _ddebug identifier more than once".endif' pr_debug("Detected %s compressed data\n", compress_name); ^ ../include/linux/printk.h:336:2: note: expanded from macro 'pr_debug' dynamic_pr_debug(fmt, ##__VA_ARGS__) ^ ../include/linux/dynamic_debug.h:158:2: note: expanded from macro 'dynamic_pr_debug' _dynamic_func_call(fmt, __dynamic_pr_debug, \ ^ ../include/linux/dynamic_debug.h:148:2: note: expanded from macro '_dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^ ../include/linux/dynamic_debug.h:128:2: note: expanded from macro '__dynamic_func_call' DEFINE_DYNAMIC_DEBUG_METADATA(id, fmt); \ ^ ../include/asm-generic/dynamic_debug.h:92:15: note: expanded from macro 'DEFINE_DYNAMIC_DEBUG_METADATA' asm volatile(".ifndef " __stringify(name) "\n" \ ^
I assume the same thing happens on the other architectures as well.
Arnd
> --- > arch/arm64/Kconfig | 1 + > arch/arm64/include/asm/Kbuild | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index 7e34b9eba5de..d0871d523d5d 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -83,6 +83,7 @@ config ARM64 > select CRC32 > select DCACHE_WORD_ACCESS > select DMA_DIRECT_REMAP > + select DYNAMIC_DEBUG_RELATIVE_POINTERS > select EDAC_SUPPORT > select FRAME_POINTER > select GENERIC_ALLOCATOR > diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild > index 1e17ea5c372b..1ead0d645686 100644 > --- a/arch/arm64/include/asm/Kbuild > +++ b/arch/arm64/include/asm/Kbuild > @@ -3,6 +3,7 @@ generic-y += delay.h > generic-y += div64.h > generic-y += dma.h > generic-y += dma-contiguous.h > +generic-y += dynamic_debug.h > generic-y += early_ioremap.h > generic-y += emergency-restart.h > generic-y += hw_irq.h > -- > 2.20.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
| |