[libc-commits] [libc] [libc] Cleanup startup/baremetal/arm/start.cpp (PR #151532)
via libc-commits
libc-commits at lists.llvm.org
Thu Jul 31 07:58:42 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: William Huynh (saturn691)
<details>
<summary>Changes</summary>
Post-commit review changes as suggested by @<!-- -->petrhosek in #<!-- -->146863
---
Full diff: https://github.com/llvm/llvm-project/pull/151532.diff
1 Files Affected:
- (modified) libc/startup/baremetal/arm/start.cpp (+27-24)
``````````diff
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();
``````````
</details>
https://github.com/llvm/llvm-project/pull/151532
More information about the libc-commits
mailing list