Message ID | 20220111041103.2199594-1-ricarkol@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [kvm-unit-tests] arm64: debug: mark test_[bp,wp,ss] as noinline | expand |
On Mon, Jan 10, 2022, Ricardo Koller wrote: > Clang inlines some functions (like test_ss) which define global labels > in inline assembly (e.g., ss_start). This results in: > > arm/debug.c:382:15: error: invalid symbol redefinition > asm volatile("ss_start:\n" > ^ > <inline asm>:1:2: note: instantiated into assembly here > ss_start: > ^ > 1 error generated. > > Fix these functions by marking them as "noinline". > > Cc: Andrew Jones <drjones@redhat.com> > Signed-off-by: Ricardo Koller <ricarkol@google.com> > --- > This applies on top of: "[kvm-unit-tests PATCH 0/3] arm64: debug: add migration tests for debug state" > which is in https://gitlab.com/rhdrjones/kvm-unit-tests/-/commits/arm/queue. > > arm/debug.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arm/debug.c b/arm/debug.c > index 54f059d..6c5b683 100644 > --- a/arm/debug.c > +++ b/arm/debug.c > @@ -264,7 +264,7 @@ static void do_migrate(void) > report_info("Migration complete"); > } > > -static void test_hw_bp(bool migrate) > +static __attribute__((noinline)) void test_hw_bp(bool migrate) Use "noinline", which was added by commit 16431a7 ("lib: define the "noinline" macro").
On Tue, Jan 11, 2022 at 07:42:54PM +0000, Sean Christopherson wrote: > On Mon, Jan 10, 2022, Ricardo Koller wrote: > > Clang inlines some functions (like test_ss) which define global labels > > in inline assembly (e.g., ss_start). This results in: > > > > arm/debug.c:382:15: error: invalid symbol redefinition > > asm volatile("ss_start:\n" > > ^ > > <inline asm>:1:2: note: instantiated into assembly here > > ss_start: > > ^ > > 1 error generated. > > > > Fix these functions by marking them as "noinline". > > > > Cc: Andrew Jones <drjones@redhat.com> > > Signed-off-by: Ricardo Koller <ricarkol@google.com> > > --- > > This applies on top of: "[kvm-unit-tests PATCH 0/3] arm64: debug: add migration tests for debug state" > > which is in https://gitlab.com/rhdrjones/kvm-unit-tests/-/commits/arm/queue. > > > > arm/debug.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/arm/debug.c b/arm/debug.c > > index 54f059d..6c5b683 100644 > > --- a/arm/debug.c > > +++ b/arm/debug.c > > @@ -264,7 +264,7 @@ static void do_migrate(void) > > report_info("Migration complete"); > > } > > > > -static void test_hw_bp(bool migrate) > > +static __attribute__((noinline)) void test_hw_bp(bool migrate) > > Use "noinline", which was added by commit 16431a7 ("lib: define the "noinline" macro"). Will do, thanks for the pointer.
diff --git a/arm/debug.c b/arm/debug.c index 54f059d..6c5b683 100644 --- a/arm/debug.c +++ b/arm/debug.c @@ -264,7 +264,7 @@ static void do_migrate(void) report_info("Migration complete"); } -static void test_hw_bp(bool migrate) +static __attribute__((noinline)) void test_hw_bp(bool migrate) { extern unsigned char hw_bp0; uint32_t bcr; @@ -310,7 +310,7 @@ static void test_hw_bp(bool migrate) static volatile char write_data[16]; -static void test_wp(bool migrate) +static __attribute__((noinline)) void test_wp(bool migrate) { uint32_t wcr; uint32_t mdscr; @@ -353,7 +353,7 @@ static void test_wp(bool migrate) } } -static void test_ss(bool migrate) +static __attribute__((noinline)) void test_ss(bool migrate) { extern unsigned char ss_start; uint32_t mdscr;
Clang inlines some functions (like test_ss) which define global labels in inline assembly (e.g., ss_start). This results in: arm/debug.c:382:15: error: invalid symbol redefinition asm volatile("ss_start:\n" ^ <inline asm>:1:2: note: instantiated into assembly here ss_start: ^ 1 error generated. Fix these functions by marking them as "noinline". Cc: Andrew Jones <drjones@redhat.com> Signed-off-by: Ricardo Koller <ricarkol@google.com> --- This applies on top of: "[kvm-unit-tests PATCH 0/3] arm64: debug: add migration tests for debug state" which is in https://gitlab.com/rhdrjones/kvm-unit-tests/-/commits/arm/queue. arm/debug.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)