aboutsummaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2023-12-05 23:34:01 +0100
committerJakub Jelinek <jakub@redhat.com>2023-12-05 23:34:01 +0100
commita286e98273a4a4ae260378a52f2db3cb12d1d7a4 (patch)
treecf83ec7eae0b591eebfbb33f97a86863c59de4ba /libiberty
parent6e28dd6fa3027d38351d2cf672509eca05aa19fd (diff)
downloadgdb-a286e98273a4a4ae260378a52f2db3cb12d1d7a4.zip
gdb-a286e98273a4a4ae260378a52f2db3cb12d1d7a4.tar.gz
gdb-a286e98273a4a4ae260378a52f2db3cb12d1d7a4.tar.bz2
libiberty: Fix build with GCC < 7
Tobias reported on IRC that the linker fails to build with GCC 4.8.5. In configure I've tried to use everything actually used in the sha1.c x86 hw implementation, but unfortunately I forgot about implicit function declarations. GCC before 7 did have <cpuid.h> header and bit_SHA define and __get_cpuid function defined inline, but it didn't define __get_cpuid_count, which compiled fine (and the configure test is intentionally compile time only) due to implicit function declaration, but then failed to link when linking the linker, because __get_cpuid_count wasn't defined anywhere. The following patch fixes that by using what autoconf uses in AC_CHECK_DECL to make sure the functions are declared. 2023-12-05 Jakub Jelinek <jakub@redhat.com> * configure.ac (HAVE_X86_SHA1_HW_SUPPORT): Verify __get_cpuid and __get_cpuid_count are not implicitly declared. * configure: Regenerated.
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog6
-rwxr-xr-xlibiberty/configure2
-rw-r--r--libiberty/configure.ac2
3 files changed, 10 insertions, 0 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 3258d1a..389fb14 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,9 @@
+2023-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ * configure.ac (HAVE_X86_SHA1_HW_SUPPORT): Verify __get_cpuid and
+ __get_cpuid_count are not implicitly declared.
+ * configure: Regenerated.
+
2023-11-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac (GCC_CHECK_ASSEMBLER_HWCAP): Invoke.
diff --git a/libiberty/configure b/libiberty/configure
index d39b1b7..291c910 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -7665,6 +7665,8 @@ void foo (__m128i *buf, unsigned int e, __m128i msg0, __m128i msg1)
int bar (void)
{
unsigned int eax, ebx, ecx, edx;
+ (void) __get_cpuid;
+ (void) __get_cpuid_count;
if (__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)
&& (ebx & bit_SHA) != 0
&& __get_cpuid (1, &eax, &ebx, &ecx, &edx)
diff --git a/libiberty/configure.ac b/libiberty/configure.ac
index cf2c970..20e4185 100644
--- a/libiberty/configure.ac
+++ b/libiberty/configure.ac
@@ -769,6 +769,8 @@ void foo (__m128i *buf, unsigned int e, __m128i msg0, __m128i msg1)
int bar (void)
{
unsigned int eax, ebx, ecx, edx;
+ (void) __get_cpuid;
+ (void) __get_cpuid_count;
if (__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)
&& (ebx & bit_SHA) != 0
&& __get_cpuid (1, &eax, &ebx, &ecx, &edx)