nuttx/libs/libc/machine/Make.defs
Lwazi Dube 30a3769057 arch/mips: Add support for loadable ELF modules
Implement architecture-specific ELF header definitions and relocation handling
for the MIPS architecture to enable loadable modules.

Fixes #19178.

Changes include:
- Add `arch/mips/include/elf.h` with MIPS ELF relocation types and
  architecture-specific ELF data structures (`arch_elfdata_s`).
- Implement `libs/libc/machine/mips/arch_elf.c` containing `up_checkarch`,
  `up_relocate`, and `up_relocateadd` functions handling `R_MIPS_NONE`,
  `R_MIPS_32`, `R_MIPS_26`, `R_MIPS_HI16`, and `R_MIPS_LO16` relocations.
- Integrate MIPS machine-specific C library support in
  `libs/libc/machine/mips/Make.defs`.
- Update `LDMODULEFLAGS` in `arch/mips/src/mips32/Toolchain.defs` to include the
  little-endian (`-EL`) flag.
- Update `up_coherent_dcache` for proper cache synchronization on JZ4780.

Signed-off-by: Lwazi Dube <lwazeh@gmail.com>
2026-08-11 09:46:46 -03:00

64 lines
2.1 KiB
Text

############################################################################
# libs/libc/machine/Make.defs
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
CSRCS += arch_atomic.c
ifeq ($(CONFIG_MM_KASAN),y)
CSRCS += arch_libc.c
endif
ifeq ($(CONFIG_ARCH_ARM),y)
include $(TOPDIR)/libs/libc/machine/arm/Make.defs
endif
ifeq ($(CONFIG_ARCH_ARM64),y)
include $(TOPDIR)/libs/libc/machine/arm64/Make.defs
endif
ifeq ($(CONFIG_ARCH_MIPS),y)
include $(TOPDIR)/libs/libc/machine/mips/Make.defs
endif
ifeq ($(CONFIG_ARCH_RISCV),y)
include $(TOPDIR)/libs/libc/machine/risc-v/Make.defs
endif
ifeq ($(CONFIG_ARCH_SIM),y)
include $(TOPDIR)/libs/libc/machine/sim/Make.defs
endif
ifeq ($(CONFIG_ARCH_X86),y)
include $(TOPDIR)/libs/libc/machine/x86/Make.defs
endif
ifeq ($(CONFIG_ARCH_X86_64),y)
include $(TOPDIR)/libs/libc/machine/x86_64/Make.defs
endif
ifeq ($(CONFIG_ARCH_XTENSA),y)
include $(TOPDIR)/libs/libc/machine/xtensa/Make.defs
endif
ifeq ($(CONFIG_ARCH_RENESAS),y)
include $(TOPDIR)/libs/libc/machine/renesas/Make.defs
endif
ifeq ($(CONFIG_ARCH_SPARC),y)
include $(TOPDIR)/libs/libc/machine/sparc/Make.defs
endif
ifeq ($(CONFIG_ARCH_TRICORE),y)
include $(TOPDIR)/libs/libc/machine/tricore/Make.defs
endif
DEPPATH += --dep-path machine
VPATH += :machine