* [PATCH v9 15/17] kernel: add support for .init_array.* constructors [not found] ` <1421859105-25253-1-git-send-email-a.ryabinin@samsung.com> @ 2015-01-21 16:51 ` Andrey Ryabinin 2015-01-21 16:51 ` Andrey Ryabinin 0 siblings, 1 reply; 9+ messages in thread From: Andrey Ryabinin @ 2015-01-21 16:51 UTC (permalink / raw) To: linux-kernel Cc: Andrey Ryabinin, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Andrew Morton, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... KASan uses constructors for initializing redzones for global variables. Actually KASan doesn't need priorities for constructors, so they were removed from GCC 5.0, but GCC 4.9.2 still generates constructors with priorities. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- include/asm-generic/vmlinux.lds.h | 1 + scripts/module-common.lds | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index bee5d68..ac78910 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -478,6 +478,7 @@ #define KERNEL_CTORS() . = ALIGN(8); \ VMLINUX_SYMBOL(__ctors_start) = .; \ *(.ctors) \ + *(SORT(.init_array.*)) \ *(.init_array) \ VMLINUX_SYMBOL(__ctors_end) = .; #else diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 0865b3e..01c5849 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,4 +16,7 @@ SECTIONS { __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } + + . = ALIGN(8); + .init_array : { *(SORT(.init_array.*)) *(.init_array) } } -- 2.2.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v9 15/17] kernel: add support for .init_array.* constructors 2015-01-21 16:51 ` [PATCH v9 15/17] kernel: add support for .init_array.* constructors Andrey Ryabinin @ 2015-01-21 16:51 ` Andrey Ryabinin 0 siblings, 0 replies; 9+ messages in thread From: Andrey Ryabinin @ 2015-01-21 16:51 UTC (permalink / raw) To: linux-kernel Cc: Andrey Ryabinin, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Andrew Morton, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... KASan uses constructors for initializing redzones for global variables. Actually KASan doesn't need priorities for constructors, so they were removed from GCC 5.0, but GCC 4.9.2 still generates constructors with priorities. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- include/asm-generic/vmlinux.lds.h | 1 + scripts/module-common.lds | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index bee5d68..ac78910 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -478,6 +478,7 @@ #define KERNEL_CTORS() . = ALIGN(8); \ VMLINUX_SYMBOL(__ctors_start) = .; \ *(.ctors) \ + *(SORT(.init_array.*)) \ *(.init_array) \ VMLINUX_SYMBOL(__ctors_end) = .; #else diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 0865b3e..01c5849 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,4 +16,7 @@ SECTIONS { __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } + + . = ALIGN(8); + .init_array : { *(SORT(.init_array.*)) *(.init_array) } } -- 2.2.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
[parent not found: <1422544321-24232-1-git-send-email-a.ryabinin@samsung.com>]
* [PATCH v10 15/17] kernel: add support for .init_array.* constructors [not found] ` <1422544321-24232-1-git-send-email-a.ryabinin@samsung.com> @ 2015-01-29 15:11 ` Andrey Ryabinin 2015-01-29 15:11 ` Andrey Ryabinin 2015-01-29 23:13 ` Andrew Morton 0 siblings, 2 replies; 9+ messages in thread From: Andrey Ryabinin @ 2015-01-29 15:11 UTC (permalink / raw) To: linux-kernel Cc: Andrey Ryabinin, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Andrew Morton, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... KASan uses constructors for initializing redzones for global variables. Actually KASan doesn't need priorities for constructors, so they were removed from GCC 5.0, but GCC 4.9.2 still generates constructors with priorities. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- include/asm-generic/vmlinux.lds.h | 1 + scripts/module-common.lds | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index bee5d68..ac78910 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -478,6 +478,7 @@ #define KERNEL_CTORS() . = ALIGN(8); \ VMLINUX_SYMBOL(__ctors_start) = .; \ *(.ctors) \ + *(SORT(.init_array.*)) \ *(.init_array) \ VMLINUX_SYMBOL(__ctors_end) = .; #else diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 0865b3e..01c5849 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,4 +16,7 @@ SECTIONS { __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } + + . = ALIGN(8); + .init_array : { *(SORT(.init_array.*)) *(.init_array) } } -- 2.2.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v10 15/17] kernel: add support for .init_array.* constructors 2015-01-29 15:11 ` [PATCH v10 " Andrey Ryabinin @ 2015-01-29 15:11 ` Andrey Ryabinin 2015-01-29 23:13 ` Andrew Morton 1 sibling, 0 replies; 9+ messages in thread From: Andrey Ryabinin @ 2015-01-29 15:11 UTC (permalink / raw) To: linux-kernel Cc: Andrey Ryabinin, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Andrew Morton, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... KASan uses constructors for initializing redzones for global variables. Actually KASan doesn't need priorities for constructors, so they were removed from GCC 5.0, but GCC 4.9.2 still generates constructors with priorities. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- include/asm-generic/vmlinux.lds.h | 1 + scripts/module-common.lds | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index bee5d68..ac78910 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -478,6 +478,7 @@ #define KERNEL_CTORS() . = ALIGN(8); \ VMLINUX_SYMBOL(__ctors_start) = .; \ *(.ctors) \ + *(SORT(.init_array.*)) \ *(.init_array) \ VMLINUX_SYMBOL(__ctors_end) = .; #else diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 0865b3e..01c5849 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,4 +16,7 @@ SECTIONS { __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } + + . = ALIGN(8); + .init_array : { *(SORT(.init_array.*)) *(.init_array) } } -- 2.2.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v10 15/17] kernel: add support for .init_array.* constructors 2015-01-29 15:11 ` [PATCH v10 " Andrey Ryabinin 2015-01-29 15:11 ` Andrey Ryabinin @ 2015-01-29 23:13 ` Andrew Morton 2015-01-29 23:13 ` Andrew Morton 2015-01-30 17:21 ` Andrey Ryabinin 1 sibling, 2 replies; 9+ messages in thread From: Andrew Morton @ 2015-01-29 23:13 UTC (permalink / raw) To: Andrey Ryabinin Cc: linux-kernel, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... On Thu, 29 Jan 2015 18:11:59 +0300 Andrey Ryabinin <a.ryabinin@samsung.com> wrote: > KASan uses constructors for initializing redzones for global > variables. Actually KASan doesn't need priorities for constructors, > so they were removed from GCC 5.0, but GCC 4.9.2 still generates > constructors with priorities. I don't understand this changelog either. What's wrong with priorities and what is the patch doing about it? More details, please. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v10 15/17] kernel: add support for .init_array.* constructors 2015-01-29 23:13 ` Andrew Morton @ 2015-01-29 23:13 ` Andrew Morton 2015-01-30 17:21 ` Andrey Ryabinin 1 sibling, 0 replies; 9+ messages in thread From: Andrew Morton @ 2015-01-29 23:13 UTC (permalink / raw) To: Andrey Ryabinin Cc: linux-kernel, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... On Thu, 29 Jan 2015 18:11:59 +0300 Andrey Ryabinin <a.ryabinin@samsung.com> wrote: > KASan uses constructors for initializing redzones for global > variables. Actually KASan doesn't need priorities for constructors, > so they were removed from GCC 5.0, but GCC 4.9.2 still generates > constructors with priorities. I don't understand this changelog either. What's wrong with priorities and what is the patch doing about it? More details, please. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v10 15/17] kernel: add support for .init_array.* constructors 2015-01-29 23:13 ` Andrew Morton 2015-01-29 23:13 ` Andrew Morton @ 2015-01-30 17:21 ` Andrey Ryabinin 1 sibling, 0 replies; 9+ messages in thread From: Andrey Ryabinin @ 2015-01-30 17:21 UTC (permalink / raw) To: Andrew Morton Cc: linux-kernel, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... On 01/30/2015 02:13 AM, Andrew Morton wrote: > On Thu, 29 Jan 2015 18:11:59 +0300 Andrey Ryabinin <a.ryabinin@samsung.com> wrote: > >> KASan uses constructors for initializing redzones for global >> variables. Actually KASan doesn't need priorities for constructors, >> so they were removed from GCC 5.0, but GCC 4.9.2 still generates >> constructors with priorities. > > I don't understand this changelog either. What's wrong with priorities > and what is the patch doing about it? More details, please. > Currently kernel ignore constructors with priorities (e.g. .init_array.00099). Kernel understand only constructors with default priority ( .init_array ). This patch adds support for constructors with priorities. For kernel image we put pointers to constructors between __ctors_start/__ctors_end and do_ctors() will call them. For modules - .init_array.* sections merged into .init_array section. Module code properly handles constructors in .init_array section. ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <1422985392-28652-1-git-send-email-a.ryabinin@samsung.com>]
* [PATCH v11 17/19] kernel: add support for .init_array.* constructors [not found] ` <1422985392-28652-1-git-send-email-a.ryabinin@samsung.com> @ 2015-02-03 17:43 ` Andrey Ryabinin 2015-02-03 17:43 ` Andrey Ryabinin 0 siblings, 1 reply; 9+ messages in thread From: Andrey Ryabinin @ 2015-02-03 17:43 UTC (permalink / raw) To: linux-kernel Cc: Andrey Ryabinin, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Andrew Morton, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... KASan uses constructors for initializing redzones for global variables. Globals instrumentation in GCC 4.9.2 produces constructors with priority (.init_array.00099) Currently kernel ignores such constructors. Only constructors with default priority supported (.init_array) This patch adds support for constructors with priorities. For kernel image we put pointers to constructors between __ctors_start/__ctors_end and do_ctors() will call them on start up. For modules we merge .init_array.* sections into resulting .init_array. Module code properly handles constructors in .init_array section. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- include/asm-generic/vmlinux.lds.h | 1 + scripts/module-common.lds | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index bee5d68..ac78910 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -478,6 +478,7 @@ #define KERNEL_CTORS() . = ALIGN(8); \ VMLINUX_SYMBOL(__ctors_start) = .; \ *(.ctors) \ + *(SORT(.init_array.*)) \ *(.init_array) \ VMLINUX_SYMBOL(__ctors_end) = .; #else diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 0865b3e..01c5849 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,4 +16,7 @@ SECTIONS { __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } + + . = ALIGN(8); + .init_array : { *(SORT(.init_array.*)) *(.init_array) } } -- 2.2.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v11 17/19] kernel: add support for .init_array.* constructors 2015-02-03 17:43 ` [PATCH v11 17/19] " Andrey Ryabinin @ 2015-02-03 17:43 ` Andrey Ryabinin 0 siblings, 0 replies; 9+ messages in thread From: Andrey Ryabinin @ 2015-02-03 17:43 UTC (permalink / raw) To: linux-kernel Cc: Andrey Ryabinin, Dmitry Vyukov, Konstantin Serebryany, Dmitry Chernenkov, Andrey Konovalov, Yuri Gribov, Konstantin Khlebnikov, Sasha Levin, Christoph Lameter, Joonsoo Kim, Andrew Morton, Dave Hansen, Andi Kleen, x86, linux-mm, Arnd Bergmann, open list:GENERIC INCLUDE/A... KASan uses constructors for initializing redzones for global variables. Globals instrumentation in GCC 4.9.2 produces constructors with priority (.init_array.00099) Currently kernel ignores such constructors. Only constructors with default priority supported (.init_array) This patch adds support for constructors with priorities. For kernel image we put pointers to constructors between __ctors_start/__ctors_end and do_ctors() will call them on start up. For modules we merge .init_array.* sections into resulting .init_array. Module code properly handles constructors in .init_array section. Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com> --- include/asm-generic/vmlinux.lds.h | 1 + scripts/module-common.lds | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index bee5d68..ac78910 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -478,6 +478,7 @@ #define KERNEL_CTORS() . = ALIGN(8); \ VMLINUX_SYMBOL(__ctors_start) = .; \ *(.ctors) \ + *(SORT(.init_array.*)) \ *(.init_array) \ VMLINUX_SYMBOL(__ctors_end) = .; #else diff --git a/scripts/module-common.lds b/scripts/module-common.lds index 0865b3e..01c5849 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -16,4 +16,7 @@ SECTIONS { __kcrctab_unused : { *(SORT(___kcrctab_unused+*)) } __kcrctab_unused_gpl : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future : { *(SORT(___kcrctab_gpl_future+*)) } + + . = ALIGN(8); + .init_array : { *(SORT(.init_array.*)) *(.init_array) } } -- 2.2.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-02-03 17:43 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1404905415-9046-1-git-send-email-a.ryabinin@samsung.com>
[not found] ` <1421859105-25253-1-git-send-email-a.ryabinin@samsung.com>
2015-01-21 16:51 ` [PATCH v9 15/17] kernel: add support for .init_array.* constructors Andrey Ryabinin
2015-01-21 16:51 ` Andrey Ryabinin
[not found] ` <1422544321-24232-1-git-send-email-a.ryabinin@samsung.com>
2015-01-29 15:11 ` [PATCH v10 " Andrey Ryabinin
2015-01-29 15:11 ` Andrey Ryabinin
2015-01-29 23:13 ` Andrew Morton
2015-01-29 23:13 ` Andrew Morton
2015-01-30 17:21 ` Andrey Ryabinin
[not found] ` <1422985392-28652-1-git-send-email-a.ryabinin@samsung.com>
2015-02-03 17:43 ` [PATCH v11 17/19] " Andrey Ryabinin
2015-02-03 17:43 ` Andrey Ryabinin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).