diff mbox series

elf: Suppress clang warning on tst-unique4

Message ID 20241221222448.753529-1-hjl.tools@gmail.com
State Superseded
Headers show
Series elf: Suppress clang warning on tst-unique4 | expand

Commit Message

H.J. Lu Dec. 21, 2024, 10:24 p.m. UTC
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>

clang warns that the instantiation of the variable is required, but no
definition is available.  They are implemented on tst-unique4lib.so.

Checked on x86_64-linux-gnu.
---
 elf/tst-unique4.cc    | 6 ++++++
 elf/tst-unique4lib.cc | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

Comments

Florian Weimer Dec. 27, 2024, 6:41 a.m. UTC | #1
* H. J. Lu:

> From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
>
> clang warns that the instantiation of the variable is required, but no
> definition is available.  They are implemented on tst-unique4lib.so.
>
> Checked on x86_64-linux-gnu.
> ---
>  elf/tst-unique4.cc    | 6 ++++++
>  elf/tst-unique4lib.cc | 2 +-
>  2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/elf/tst-unique4.cc b/elf/tst-unique4.cc
> index 575c70d3a1..ab727b8dbb 100644
> --- a/elf/tst-unique4.cc
> +++ b/elf/tst-unique4.cc
> @@ -2,7 +2,12 @@
>  #include "tst-unique4.h"
>  
>  #include <cstdio>
> +#include <libc-diag.h>
>  
> +/* clang warns that the instatiation of the variable is required, but no
> +   definition is available.  They are implemented on tst-unique4lib.so.  */
> +DIAG_PUSH_NEEDS_COMMENT_CLANG;
> +DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wundefined-var-template");
>  static int a[24] =
>    {
>      S<1>::i, S<2>::i, S<3>::i, S<4>::i, S<5>::i, S<6>::i, S<7>::i, S<8>::i,
> @@ -10,6 +15,7 @@ static int a[24] =
>      S<16>::i, S<17>::i, S<18>::i, S<19>::i, S<20>::i, S<21>::i, S<22>::i,
>      S<23>::i, S<24>::i
>    };
> +DIAG_POP_NEEDS_COMMENT_CLANG;

Could a portable version of this use explicit template instantiations?

Thanks,
Florian
Sam James Dec. 27, 2024, 6:47 a.m. UTC | #2
Florian Weimer <fweimer@redhat.com> writes:

> * H. J. Lu:
>
>> From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
>>
>> clang warns that the instantiation of the variable is required, but no
>> definition is available.  They are implemented on tst-unique4lib.so.
>>
>> Checked on x86_64-linux-gnu.
>> ---
>>  elf/tst-unique4.cc    | 6 ++++++
>>  elf/tst-unique4lib.cc | 2 +-
>>  2 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/elf/tst-unique4.cc b/elf/tst-unique4.cc
>> index 575c70d3a1..ab727b8dbb 100644
>> --- a/elf/tst-unique4.cc
>> +++ b/elf/tst-unique4.cc
>> @@ -2,7 +2,12 @@
>>  #include "tst-unique4.h"
>>  
>>  #include <cstdio>
>> +#include <libc-diag.h>
>>  
>> +/* clang warns that the instatiation of the variable is required, but no
>> +   definition is available.  They are implemented on tst-unique4lib.so.  */
>> +DIAG_PUSH_NEEDS_COMMENT_CLANG;
>> +DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wundefined-var-template");
>>  static int a[24] =
>>    {
>>      S<1>::i, S<2>::i, S<3>::i, S<4>::i, S<5>::i, S<6>::i, S<7>::i, S<8>::i,
>> @@ -10,6 +15,7 @@ static int a[24] =
>>      S<16>::i, S<17>::i, S<18>::i, S<19>::i, S<20>::i, S<21>::i, S<22>::i,
>>      S<23>::i, S<24>::i
>>    };
>> +DIAG_POP_NEEDS_COMMENT_CLANG;
>
> Could a portable version of this use explicit template instantiations?

https://inbox.sourceware.org/libc-alpha/CAMe9rOpagS=d=HBERSWcTcimrQg23kDOtzD5erkNWfU1_9S6NQ@mail.gmail.com/

thanks,
sam
diff mbox series

Patch

diff --git a/elf/tst-unique4.cc b/elf/tst-unique4.cc
index 575c70d3a1..ab727b8dbb 100644
--- a/elf/tst-unique4.cc
+++ b/elf/tst-unique4.cc
@@ -2,7 +2,12 @@ 
 #include "tst-unique4.h"
 
 #include <cstdio>
+#include <libc-diag.h>
 
+/* clang warns that the instatiation of the variable is required, but no
+   definition is available.  They are implemented on tst-unique4lib.so.  */
+DIAG_PUSH_NEEDS_COMMENT_CLANG;
+DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wundefined-var-template");
 static int a[24] =
   {
     S<1>::i, S<2>::i, S<3>::i, S<4>::i, S<5>::i, S<6>::i, S<7>::i, S<8>::i,
@@ -10,6 +15,7 @@  static int a[24] =
     S<16>::i, S<17>::i, S<18>::i, S<19>::i, S<20>::i, S<21>::i, S<22>::i,
     S<23>::i, S<24>::i
   };
+DIAG_POP_NEEDS_COMMENT_CLANG;
 
 int
 main (void)
diff --git a/elf/tst-unique4lib.cc b/elf/tst-unique4lib.cc
index 17a7cdf567..2829e75cee 100644
--- a/elf/tst-unique4lib.cc
+++ b/elf/tst-unique4lib.cc
@@ -2,7 +2,7 @@ 
 #include "tst-unique4.h"
 
 template<int N>
-int S<N>::i = N;
+int S<N>::i __attribute__ ((used)) = N;
 template<int N>
 const int S<N>::j __attribute__ ((used)) = -1;