[libc-commits] [libc] 372d86d - [libc] Cleanup startup/baremetal/arm/start.cpp (#151532)
via libc-commits
libc-commits at lists.llvm.org
Mon Aug 11 07:11:39 PDT 2025
Author: William Huynh
Date: 2025-08-11T15:11:36+01:00
New Revision: 372d86dcf1adf90f994be60bb017d92455abb879
URL: https://github.com/llvm/llvm-project/commit/372d86dcf1adf90f994be60bb017d92455abb879
DIFF: https://github.com/llvm/llvm-project/commit/372d86dcf1adf90f994be60bb017d92455abb879.diff
LOG: [libc] Cleanup startup/baremetal/arm/start.cpp (#151532)
Post-commit review changes as suggested by @petrhosek in #146863
Added:
Modified:
libc/startup/baremetal/arm/start.cpp
Removed:
################################################################################
diff --git a/libc/startup/baremetal/arm/start.cpp b/libc/startup/baremetal/arm/start.cpp
index 123efc4750941..493445e2922b0 100644
--- a/libc/startup/baremetal/arm/start.cpp
+++ b/libc/startup/baremetal/arm/start.cpp
@@ -6,6 +6,7 @@
//
//===----------------------------------------------------------------------===//
+#include "hdr/stdint_proxy.h"
#include "src/__support/macros/config.h"
#include "src/stdlib/atexit.h"
#include "src/stdlib/exit.h"
@@ -14,8 +15,6 @@
#include "startup/baremetal/fini.h"
#include "startup/baremetal/init.h"
-#include <stdint.h>
-
extern "C" {
int main(int argc, char **argv);
void _start();
@@ -31,7 +30,9 @@ extern uintptr_t __data_start[];
extern uintptr_t __data_size[];
extern uintptr_t __bss_start[];
extern uintptr_t __bss_size[];
+} // extern "C"
+namespace {
// Based on
// https://developer.arm.com/documentation/107565/0101/Use-case-examples/Generic-Information/What-is-inside-a-program-image-/Vector-table
void NMI_Handler() {}
@@ -49,35 +50,37 @@ void SysTick_Handler() {}
// to be zero and Cortex-M23 can require up to 10, so 1024-byte align the vector
// table.
using HandlerType = void (*)(void);
-const HandlerType vector_table[]
- __attribute__((section(".vectors"), aligned(1024), used)) = {
- (HandlerType)&__stack, // SP
- _start, // Reset
- NMI_Handler, // NMI Handler
- HardFault_Handler, // Hard Fault Handlerß
- MemManage_Handler, // MPU Fault Han`dler
- BusFault_Handler, // Bus Fault Handler
- UsageFault_Handler, // Usage Fault Handler
- 0, // Reserved
- 0, // Reserved
- 0, // Reserved
- 0, // Reserved
- SVC_Handler, // SVC Handler
- DebugMon_Handler, // Debug Monitor Handler
- 0, // Reserved
- PendSV_Handler, // PendSV Handler
- SysTick_Handler, // SysTick Handler
- // Unused
+[[gnu::section(".vectors"), gnu::aligned(1024), gnu::used]]
+const HandlerType vector_table[] = {
+ reinterpret_cast<HandlerType>(&__stack), // SP
+ _start, // Reset
+ NMI_Handler, // NMI Handler
+ HardFault_Handler, // Hard Fault Handlerß
+ MemManage_Handler, // MPU Fault Han`dler
+ BusFault_Handler, // Bus Fault Handler
+ UsageFault_Handler, // Usage Fault Handler
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ SVC_Handler, // SVC Handler
+ DebugMon_Handler, // Debug Monitor Handler
+ 0, // Reserved
+ PendSV_Handler, // PendSV Handler
+ SysTick_Handler, // SysTick Handler
+ // Unused
};
-} // extern "C"
+} // namespace
namespace LIBC_NAMESPACE_DECL {
[[noreturn]] void do_start() {
// FIXME: set up the QEMU test environment
// Perform the equivalent of scatterloading
- LIBC_NAMESPACE::memcpy(__data_start, __data_source, (uintptr_t)__data_size);
- LIBC_NAMESPACE::memset(__bss_start, '\0', (uintptr_t)__bss_size);
+ LIBC_NAMESPACE::memcpy(__data_start, __data_source,
+ reinterpret_cast<uintptr_t>(__data_size));
+ LIBC_NAMESPACE::memset(__bss_start, '\0',
+ reinterpret_cast<uintptr_t>(__bss_size));
__libc_init_array();
_platform_init();
More information about the libc-commits
mailing list