Revision tags: llvmorg-21-init, llvmorg-19.1.7 |
|
#
f9c2377f |
| 08-Jan-2025 |
Michael Jones <michaelrj@google.com> |
[libc][NFC] Cleanup time.h (#122027)
While working on strftime I noticed some constants were being defined in unexpected places. One thing led to another, and I ended up doing a major cleanup of the
[libc][NFC] Cleanup time.h (#122027)
While working on strftime I noticed some constants were being defined in unexpected places. One thing led to another, and I ended up doing a major cleanup of the time functions.
What's included: All uses of <time.h> in /src and /test removed (except for LibcTest.cpp) The various time constants have been moved to time_constants.h, and the `time_constants` namespace. struct tm gets its own type indirection header now.
show more ...
|
Revision tags: llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3 |
|
#
81d82739 |
| 07-Aug-2024 |
Simon Tatham <simon.tatham@arm.com> |
[libc] Fix overflow check for 32-bit mktime. (#101993)
The 32-bit time_t rolls over to a value with its high bit set at
2038-01-19 03:14:07. The overflow check for this in mktime() was
checking ea
[libc] Fix overflow check for 32-bit mktime. (#101993)
The 32-bit time_t rolls over to a value with its high bit set at
2038-01-19 03:14:07. The overflow check for this in mktime() was
checking each individual component of the time: reject if year>2038, or
if month>1, or if day>19, etc. As a result it would reject valid times
before the overflow point, because a low-order component was out of
range even though a higher-order one makes the time as a whole safe. The
earliest failing value is 2145916808 == 2038-01-01 00:00:08, in which
only the seconds field 'overflows'.
Fixed so that if any component is _less_ than its threshold value, we
don't check the lower-order components.
show more ...
|
Revision tags: llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1 |
|
#
72ce6294 |
| 24-Jan-2024 |
lntue <35648136+lntue@users.noreply.github.com> |
[libc] Add C23 limits.h header. (#78887)
|
Revision tags: llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2 |
|
#
824b1677 |
| 02-Oct-2023 |
Mikhail R. Gadelha <mikhail@igalia.com> |
[libc][NFC] Fix missing field 'tm_isdst' initializer warning (#67837)
This patch fixes several warnings thrown by clang about an uninitialized
member of struct tm, tm_isdst.
Weirdly, gcc doesn't
[libc][NFC] Fix missing field 'tm_isdst' initializer warning (#67837)
This patch fixes several warnings thrown by clang about an uninitialized
member of struct tm, tm_isdst.
Weirdly, gcc doesn't complain about it, probably this member is never
read in the tests.
show more ...
|
#
b6bc9d72 |
| 26-Sep-2023 |
Guillaume Chatelet <gchatelet@google.com> |
[libc] Mass replace enclosing namespace (#67032)
This is step 4 of
https://discourse.llvm.org/t/rfc-customizable-namespace-to-allow-testing-the-libc-when-the-system-libc-is-also-llvms-libc/73079
|
Revision tags: llvmorg-17.0.1, llvmorg-17.0.0 |
|
#
6f387135 |
| 06-Sep-2023 |
Mikhail R. Gadelha <mikhail@igalia.com> |
[libc] Fix failing mktime test case in 32-bit systems (#65390)
Previously, these tests expected that calling mktime with a struct tm
that caused overlow to succeed with return -1
(TimeConstants::O
[libc] Fix failing mktime test case in 32-bit systems (#65390)
Previously, these tests expected that calling mktime with a struct tm
that caused overlow to succeed with return -1
(TimeConstants::OUT_OF_RANGE_RETURN_VALUE), however, the Succeeds call
expects the errno to be zero (no failure).
This patch fixes the expected calls to fail with EOVERFLOW. These tests
are only enabled to 32-bit systems, and are probably not being tested on
the arm32 buildbot, that's why this was not a problem before.
show more ...
|
Revision tags: llvmorg-17.0.0-rc4 |
|
#
9e344545 |
| 30-Aug-2023 |
Mikhail R. Gadelha <mikhail@igalia.com> |
[libc] Fix test case that expects time_t to be a 32-bit type
This patch changes a test case that tests for overflow when time_t is 32-bit long, however, it was checking size_t instead of time_t.
Th
[libc] Fix test case that expects time_t to be a 32-bit type
This patch changes a test case that tests for overflow when time_t is 32-bit long, however, it was checking size_t instead of time_t.
This in on par with other testcases that correctly check the size of time_t (asctime_test.cpp, gmtime_r_test.cpp and gmtime_test.cpp).
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D159113
show more ...
|
Revision tags: llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4 |
|
#
4f1fe19d |
| 15-May-2023 |
Siva Chandra Reddy <sivachandra@google.com> |
[libc] Make ErrnoSetterMatcher handle logging floating point values.
Along the way, couple of additional things have been done:
1. Move `ErrnoSetterMatcher.h` to `test/UnitTest` as all other matche
[libc] Make ErrnoSetterMatcher handle logging floating point values.
Along the way, couple of additional things have been done:
1. Move `ErrnoSetterMatcher.h` to `test/UnitTest` as all other matchers live there now. 2. `ErrnoSetterMatcher` ignores matching `errno` on GPUs.
Reviewed By: jhuber6
Differential Revision: https://reviews.llvm.org/D151129
show more ...
|
Revision tags: llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4 |
|
#
b98c1906 |
| 02-Mar-2023 |
Raman Tenneti <rtenneti@google.com> |
[libc][NFC] Switch use of errno in src/time and test/src/time to libc_errno.
Switch use of errno in src/time and test/src/time to libc_errno.
Reviewed By: sivachandra
Differential Revision: https:
[libc][NFC] Switch use of errno in src/time and test/src/time to libc_errno.
Switch use of errno in src/time and test/src/time to libc_errno.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D145192
show more ...
|
Revision tags: llvmorg-16.0.0-rc3 |
|
#
9ad0ac8e |
| 21-Feb-2023 |
Jeff Bailey <jeffbailey@google.com> |
[libc] Add Month enum, refactor mktime_test
Introduce Month enum.
Use designated initializers instead of comments to ensure that tm_data is initialized correctly. Use Month enum for initializing .
[libc] Add Month enum, refactor mktime_test
Introduce Month enum.
Use designated initializers instead of comments to ensure that tm_data is initialized correctly. Use Month enum for initializing .tm_mon to avoid off-by-one errors.
Co-authored-by: Raman Tenneti <rtenneti@google.com>
Reviewed By: rtenneti
Differential Revision: https://reviews.llvm.org/D144357
show more ...
|
Revision tags: llvmorg-16.0.0-rc2 |
|
#
af1315c2 |
| 06-Feb-2023 |
Siva Chandra Reddy <sivachandra@google.com> |
[libc][NFC] Move UnitTest and IntegrationTest to the 'test' directory.
This part of the effort to make all test related pieces into the `test` directory. This helps is excluding test related pieces
[libc][NFC] Move UnitTest and IntegrationTest to the 'test' directory.
This part of the effort to make all test related pieces into the `test` directory. This helps is excluding test related pieces in a straight forward manner if LLVM_INCLUDE_TESTS is OFF. Future patches will also move the MPFR wrapper and testutils into the 'test' directory.
show more ...
|
Revision tags: llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
9b8a64b8 |
| 04-Jan-2023 |
Michael Jones <michaelrj@google.com> |
[libc] add noexcept to external function headers
To improve code generation for C++ code that directly includes our headers, the external function definitions will now be marked noexcept. This may n
[libc] add noexcept to external function headers
To improve code generation for C++ code that directly includes our headers, the external function definitions will now be marked noexcept. This may not be necessary for the internal definitions since we build with the -fno-exceptions flag.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D141095
show more ...
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
#
25226f3e |
| 21-Dec-2021 |
Michael Jones <michaelrj@google.com> |
[libc] apply formatting to tests
Apply the formatting rules that were applied to the libc/src directory to the libc/test directory, as well as the files in libc/utils that are included by the tests.
[libc] apply formatting to tests
Apply the formatting rules that were applied to the libc/src directory to the libc/test directory, as well as the files in libc/utils that are included by the tests. This does not include automated enforcement.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D116127
show more ...
|
Revision tags: llvmorg-13.0.1-rc1 |
|
#
1c92911e |
| 19-Nov-2021 |
Michael Jones <michaelrj@google.com> |
[libc] apply new lint rules
This patch applies the lint rules described in the previous patch. There was also a significant amount of effort put into manually fixing things, since all of the templat
[libc] apply new lint rules
This patch applies the lint rules described in the previous patch. There was also a significant amount of effort put into manually fixing things, since all of the templated functions, or structs defined in /spec, were not updated and had to be handled manually.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D114302
show more ...
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5 |
|
#
a72499e4 |
| 31-Mar-2021 |
Raman Tenneti <rtenneti@google.com> |
[libc] Introduce asctime, asctime_r to LLVM libc
[libc] Introduce asctime, asctime_r to LLVM libc
asctime and asctime_r share the same common code. They call asctime_internal a static inline functi
[libc] Introduce asctime, asctime_r to LLVM libc
[libc] Introduce asctime, asctime_r to LLVM libc
asctime and asctime_r share the same common code. They call asctime_internal a static inline function.
asctime uses snprintf to return the string representation in a buffer. It uses the following format (26 characters is the buffer size) as per 7.27.3.1 section in http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2478.pdf. The buf parameter for asctime_r shall point to a buffer of at least 26 bytes.
snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",...)
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D99686
show more ...
|
Revision tags: llvmorg-12.0.0-rc4 |
|
#
eaae52c1 |
| 12-Mar-2021 |
Raman Tenneti <rtenneti@google.com> |
This introduces gmtime to LLVM libc, based on C99/C2X/Single Unix Spec.
This change doesn't handle TIMEZONE, tm_isdst and leap seconds.
Moved shared code between mktime and gmtime into time_utils.c
This introduces gmtime to LLVM libc, based on C99/C2X/Single Unix Spec.
This change doesn't handle TIMEZONE, tm_isdst and leap seconds.
Moved shared code between mktime and gmtime into time_utils.cpp.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D98467
show more ...
|
Revision tags: llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2 |
|
#
034f5629 |
| 23-Feb-2021 |
Raman Tenneti <rtenneti@google.com> |
Changes to mktime to handle invalid dates, overflow and underflow andcalculating the correct date and thenumber of seconds even if invalid datesare passed as arguments.
Added tests for invalid dates
Changes to mktime to handle invalid dates, overflow and underflow andcalculating the correct date and thenumber of seconds even if invalid datesare passed as arguments.
Added tests for invalid dates like the following Date 1970-01-01 00:00:-1 is treated as 1969-12-31 23:59:59 and seconds are returned for the modified date.
Tested the code by doing ninja check-libc (and cmake).
Reviewed By: sivachandra, rtenneti
Differential Revision: https://reviews.llvm.org/D96684
show more ...
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2 |
|
#
1df0dbfc |
| 15-Jan-2021 |
Michael Jones <michaelrj@google.com> |
[libc][NFC] add "LlvmLibc" as a prefix to all test names
Summary: Having a consistent prefix makes selecting all of the llvm libc tests easier on any platform that is also using the gtest framework.
[libc][NFC] add "LlvmLibc" as a prefix to all test names
Summary: Having a consistent prefix makes selecting all of the llvm libc tests easier on any platform that is also using the gtest framework. This also modifies the TEST and TEST_F macros to enforce this change moving forward.
Reviewers: sivachandra
Subscribers:
show more ...
|
Revision tags: llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
#
6f0f844e |
| 01-Dec-2020 |
Raman Tenneti <rtenneti@google.com> |
Initial commit of mktime.
This introduces mktime to LLVM libc, based on C99/C2X/Single Unix Spec.
Co-authored-by: Jeff Bailey <jeffbailey@google.com>
This change doesn't handle TIMEZONE, tm_isdst
Initial commit of mktime.
This introduces mktime to LLVM libc, based on C99/C2X/Single Unix Spec.
Co-authored-by: Jeff Bailey <jeffbailey@google.com>
This change doesn't handle TIMEZONE, tm_isdst and leap seconds. It returns -1 for invalid dates. I have verified the return results for all the possible dates with glibc's mktime.
TODO: + Handle leap seconds. + Handle out of range time and date values that don't overflow or underflow. + Implement the following suggestion Siva - As we start accumulating the seconds, we should be able to check if the next amount of seconds to be added can lead to an overflow. If it does, return the overflow value. If not keep accumulating. The benefit is that, we don't have to validate every input, and also do not need the special cases for sizeof(time_t) == 4. + Handle timezone and update of tm_isdst
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D91551
show more ...
|