From bdc98d7b05785a42c1a7566bf2b9bb1cd1bdaf28 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 27 Dec 2024 15:57:04 -0800 Subject: [PATCH 1/6] Update Clang toolchain used by Bazel --- MODULE.bazel | 16 ++++++++-------- .../include/llvm_libc/sys/time.h | 3 +-- .../pico_clib_interface/llvm_libc_interface.c | 8 ++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index ec37d1b40..15275876e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -54,34 +54,34 @@ http_archive( http_archive( name = "clang_linux-x86_64", build_file = "//bazel/toolchain:clang.BUILD", - sha256 = "6c599d1aba568236064c340d7813324849896d5a4e2f3fd8225a8c31bfcbf884", + sha256 = "dd4b3b0fc7186a4da2b52796b251e0757aefac4813f9f635982954fec3337d2e", type = "zip", - url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/linux-amd64/+/git_revision:2b0a708f41dd6291ee744704d43febc975e3d026", + url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/linux-amd64/+/git_revision:9d3f9f47e6e630b8308562297757e0911be03a18", ) http_archive( name = "clang_win-x86_64", build_file = "//bazel/toolchain:clang.BUILD", - sha256 = "f49ba4123ee3958f2b47289d017a5b3f1ca01f82dd7a2168c45412c18101fd13", + sha256 = "21092395df915ee5a899a832a592b137c9ea07fbc91e49ac6069ea0083d31899", type = "zip", # Windows doesn't like `:` in the produced filename, so replace it with `%3A`. - url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/windows-amd64/+/git_revision:2b0a708f41dd6291ee744704d43febc975e3d026".replace("git_revision:", "git_revision%3A"), + url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/windows-amd64/+/git_revision:9d3f9f47e6e630b8308562297757e0911be03a18".replace("git_revision:", "git_revision%3A"), ) http_archive( name = "clang_mac-x86_64", build_file = "//bazel/toolchain:clang.BUILD", - sha256 = "d3516f2eb4c12d17ae77ee84c9226fbea581d4fb806910ceac4717d5adfcf748", + sha256 = "bb397fdce21d068ea40fefa9618993baa4907a248f996f18316c8fa6ca24dee2", type = "zip", - url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/mac-amd64/+/git_revision:2b0a708f41dd6291ee744704d43febc975e3d026", + url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/mac-amd64/+/git_revision:9d3f9f47e6e630b8308562297757e0911be03a18", ) http_archive( name = "clang_mac-aarch64", build_file = "//bazel/toolchain:clang.BUILD", - sha256 = "68e551f41c7e9473063b09819f6ab8ec6e7e53677f4078189656cb14dc52984b", + sha256 = "dad5583f96eabc913c1930d923c53a105d6ed73f56ca32451ea79ad70e495b0f", type = "zip", - url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/mac-arm64/+/git_revision:2b0a708f41dd6291ee744704d43febc975e3d026", + url = "https://chrome-infra-packages.appspot.com/dl/fuchsia/third_party/clang/mac-arm64/+/git_revision:9d3f9f47e6e630b8308562297757e0911be03a18", ) new_git_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository") diff --git a/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h b/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h index 3d37f1c25..6619428a7 100644 --- a/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h +++ b/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h @@ -11,8 +11,7 @@ #include #include - -typedef long suseconds_t; +#include struct timeval { time_t tv_sec; diff --git a/src/rp2_common/pico_clib_interface/llvm_libc_interface.c b/src/rp2_common/pico_clib_interface/llvm_libc_interface.c index da4281335..5fadabbdf 100644 --- a/src/rp2_common/pico_clib_interface/llvm_libc_interface.c +++ b/src/rp2_common/pico_clib_interface/llvm_libc_interface.c @@ -5,6 +5,7 @@ */ #include +#include #include #include @@ -65,6 +66,13 @@ ssize_t __llvm_libc_stdio_write(__unused void *cookie, const char *buf, size_t s return size; } +bool __llvm_libc_timespec_get_utc(struct timespec *ts) { + int64_t absolute_time = (int64_t)get_absolute_time(); + ts->tv_sec = (time_t)(absolute_time / 1000000); + ts->tv_nsec = (long)(absolute_time % 1000000 * 1000); + return true; +} + void __cxa_finalize(__unused void *dso) {} void __attribute__((noreturn)) __llvm_libc_exit(__unused int status) { From c430fcd126d8cb1326bbb48d8f906dc663660c0d Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 27 Dec 2024 16:17:21 -0800 Subject: [PATCH 2/6] include --- src/rp2_common/pico_clib_interface/llvm_libc_interface.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rp2_common/pico_clib_interface/llvm_libc_interface.c b/src/rp2_common/pico_clib_interface/llvm_libc_interface.c index 5fadabbdf..671173a8a 100644 --- a/src/rp2_common/pico_clib_interface/llvm_libc_interface.c +++ b/src/rp2_common/pico_clib_interface/llvm_libc_interface.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include From 8af0cd6fbbb1b4cbb3d04b3fa01dd01c8dc9c93f Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 27 Dec 2024 16:17:49 -0800 Subject: [PATCH 3/6] Sort includes --- src/rp2_common/pico_clib_interface/llvm_libc_interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rp2_common/pico_clib_interface/llvm_libc_interface.c b/src/rp2_common/pico_clib_interface/llvm_libc_interface.c index 671173a8a..dfcab015e 100644 --- a/src/rp2_common/pico_clib_interface/llvm_libc_interface.c +++ b/src/rp2_common/pico_clib_interface/llvm_libc_interface.c @@ -7,8 +7,8 @@ #include #include #include -#include #include +#include #include From 5d9fcda22d9729b0e313b973f304bceed9f6654c Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 27 Dec 2024 16:24:19 -0800 Subject: [PATCH 4/6] Use libc timeval definition --- .../pico_clib_interface/include/llvm_libc/sys/time.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h b/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h index 6619428a7..c22552ac1 100644 --- a/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h +++ b/src/rp2_common/pico_clib_interface/include/llvm_libc/sys/time.h @@ -9,14 +9,7 @@ #include <__llvm-libc-common.h> -#include -#include -#include - -struct timeval { - time_t tv_sec; - suseconds_t tv_usec; -}; +#include struct timezone { int tz_minuteswest; From 1893bf8a43ed0830191e1d5a4080e77a3114b7d0 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 27 Dec 2024 19:48:14 -0800 Subject: [PATCH 5/6] Disable unwinder linking for now --- bazel/toolchain/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/bazel/toolchain/BUILD.bazel b/bazel/toolchain/BUILD.bazel index bba5baafd..56e74ad6a 100644 --- a/bazel/toolchain/BUILD.bazel +++ b/bazel/toolchain/BUILD.bazel @@ -79,6 +79,7 @@ cc_args( name = "llvm-libc_args", actions = ["@rules_cc//cc/toolchains/actions:link_actions"], args = [ + "--unwindlib=none", "-nostdlib++", "-nostartfiles", "-Wl,-lc++", From 4a5baae0717c94ca7ed0e14311a451a250080c2a Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 27 Dec 2024 20:04:46 -0800 Subject: [PATCH 6/6] Link libm --- bazel/toolchain/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/bazel/toolchain/BUILD.bazel b/bazel/toolchain/BUILD.bazel index 56e74ad6a..ba8d947ca 100644 --- a/bazel/toolchain/BUILD.bazel +++ b/bazel/toolchain/BUILD.bazel @@ -83,6 +83,7 @@ cc_args( "-nostdlib++", "-nostartfiles", "-Wl,-lc++", + "-Wl,-lm", ], visibility = ["//visibility:private"], )