1
0
Fork 0
mirror of git://sourceware.org/git/glibc.git synced 2025-03-06 20:58:33 +01:00

Return EXIT_UNSUPPORTED if __builtin_add_overflow unavailable

Since GCC 4.9 doesn't have __builtin_add_overflow:

In file included from tst-stringtable.c:180:0:
stringtable.c: In function ‘stringtable_finalize’:
stringtable.c:185:7: error: implicit declaration of function ‘__builtin_add_overflow’ [-Werror=implicit-function-declaration]
       else if (__builtin_add_overflow (previous->offset,
       ^

return EXIT_UNSUPPORTED for GCC 4.9 or older.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
This commit is contained in:
H.J. Lu 2024-12-14 20:12:21 +08:00
parent 65817569ad
commit 335ba9b6c1
6 changed files with 52 additions and 0 deletions

View file

@ -17,6 +17,7 @@
#include <array_length.h> #include <array_length.h>
#include <stdlib.h> #include <stdlib.h>
#if __GNUC_PREREQ (5, 0)
#include <string.h> #include <string.h>
#include <stringtable.h> #include <stringtable.h>
#include <support/check.h> #include <support/check.h>
@ -179,3 +180,12 @@ do_test (void)
#define _(arg) arg #define _(arg) arg
#include "stringtable.c" #include "stringtable.c"
#include "stringtable_free.c" #include "stringtable_free.c"
#else
#include <support/test-driver.h>
int
main (void)
{
return EXIT_UNSUPPORTED;
}
#endif

View file

@ -20,6 +20,7 @@
#include <inttypes.h> #include <inttypes.h>
#include <support/support.h> #include <support/support.h>
#include <support/temp_file.h> #include <support/temp_file.h>
#include <support/test-driver.h>
#include <stdio.h> #include <stdio.h>
static int temp_fd = -1; static int temp_fd = -1;
@ -72,6 +73,7 @@ do_test (void)
for (int i = 0; i < array_length (tests); i++) for (int i = 0; i < array_length (tests); i++)
{ {
/* Check if we run on port with 32 bit time_t size. */ /* Check if we run on port with 32 bit time_t size. */
#if __GNUC_PREREQ (5, 0)
time_t t; time_t t;
if (__builtin_add_overflow (tests[i].v1, 0, &t) if (__builtin_add_overflow (tests[i].v1, 0, &t)
|| __builtin_add_overflow (tests[i].v2, 0, &t)) || __builtin_add_overflow (tests[i].v2, 0, &t))
@ -80,6 +82,9 @@ do_test (void)
"time_t overflows\n", i, tests[i].v1, tests[i].v2); "time_t overflows\n", i, tests[i].v1, tests[i].v2);
continue; continue;
} }
#else
return EXIT_UNSUPPORTED;
#endif
if (tests[i].v1 >= 0x100000000LL && !y2106) if (tests[i].v1 >= 0x100000000LL && !y2106)
{ {

View file

@ -30,6 +30,7 @@
#include <sys/mman.h> #include <sys/mman.h>
#include <unistd.h> #include <unistd.h>
#if __GNUC_PREREQ (5, 0)
/* Called by large_buffer_checks below. */ /* Called by large_buffer_checks below. */
static void static void
large_buffer_check (int fd, char *large_buffer, size_t large_buffer_size) large_buffer_check (int fd, char *large_buffer, size_t large_buffer_size)
@ -85,6 +86,12 @@ do_test_large_size (void)
xclose (fd); xclose (fd);
} }
#else
static void
do_test_large_size (void)
{
}
#endif
static void static void
do_test_by_size (size_t buffer_size) do_test_by_size (size_t buffer_size)

View file

@ -20,6 +20,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <support/check.h> #include <support/check.h>
#if __GNUC_PREREQ (5, 0)
static int static int
do_test (void) do_test (void)
{ {
@ -70,3 +71,12 @@ do_test (void)
} }
#include <support/test-driver.c> #include <support/test-driver.c>
#else
#include <support/test-driver.h>
int
main (void)
{
return EXIT_UNSUPPORTED;
}
#endif

View file

@ -19,6 +19,7 @@
#include <time.h> #include <time.h>
#include <support/check.h> #include <support/check.h>
#if __GNUC_PREREQ (5, 0)
static void static void
test_difftime_helper (time_t t1, time_t t0, double exp_val) test_difftime_helper (time_t t1, time_t t0, double exp_val)
{ {
@ -54,3 +55,12 @@ do_test (void)
} }
#include <support/test-driver.c> #include <support/test-driver.c>
#else
#include <support/test-driver.h>
int
main ()
{
return EXIT_UNSUPPORTED;
}
#endif

View file

@ -20,6 +20,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <support/check.h> #include <support/check.h>
#if __GNUC_PREREQ (5, 0)
const struct tm tm0 = const struct tm tm0 =
{ {
.tm_year = 70, .tm_year = 70,
@ -107,3 +108,12 @@ do_test (void)
} }
#include <support/test-driver.c> #include <support/test-driver.c>
#else
#include <support/test-driver.h>
int
main (void)
{
return EXIT_UNSUPPORTED;
}
#endif