[libc-commits] [libc] [libc] Provide empty weak implementation of baremetal OSUtil (PR #86916)

Petr Hosek via libc-commits libc-commits at lists.llvm.org
Thu Mar 28 00:13:27 PDT 2024


https://github.com/petrhosek created https://github.com/llvm/llvm-project/pull/86916

This avoids vendor having to provide one in order to link the libc.

>From 7251f7a57665b25d95b60f185e8f15c5d5243e7a Mon Sep 17 00:00:00 2001
From: Petr Hosek <phosek at google.com>
Date: Thu, 28 Mar 2024 00:10:44 -0700
Subject: [PATCH] [libc] Provide empty weak implementation of baremetal OSUtil

This avoids vendor having to provide one in order to link the libc.
---
 libc/src/__support/OSUtil/baremetal/io.cpp         | 2 +-
 libc/src/__support/OSUtil/baremetal/quick_exit.cpp | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libc/src/__support/OSUtil/baremetal/io.cpp b/libc/src/__support/OSUtil/baremetal/io.cpp
index 347c7d405b0a9f..61d12aa7865700 100644
--- a/libc/src/__support/OSUtil/baremetal/io.cpp
+++ b/libc/src/__support/OSUtil/baremetal/io.cpp
@@ -11,7 +11,7 @@
 #include "src/__support/CPP/string_view.h"
 
 // This is intended to be provided by the vendor.
-extern "C" void __llvm_libc_log_write(const char *msg, size_t len);
+extern "C" [[gnu::weak]] void __llvm_libc_log_write(const char *, size_t) {}
 
 namespace LIBC_NAMESPACE {
 
diff --git a/libc/src/__support/OSUtil/baremetal/quick_exit.cpp b/libc/src/__support/OSUtil/baremetal/quick_exit.cpp
index 5b6fcf42341ebb..be29e83b68ce67 100644
--- a/libc/src/__support/OSUtil/baremetal/quick_exit.cpp
+++ b/libc/src/__support/OSUtil/baremetal/quick_exit.cpp
@@ -9,7 +9,9 @@
 #include "src/__support/OSUtil/quick_exit.h"
 
 // This is intended to be provided by the vendor.
-extern "C" [[noreturn]] void __llvm_libc_quick_exit(int status);
+extern "C" [[gnu::weak]] [[noreturn]] void __llvm_libc_quick_exit(int) {
+  __builtin_trap();
+}
 
 namespace LIBC_NAMESPACE {
 



More information about the libc-commits mailing list