mirror of
https://github.com/apache/nuttx.git
synced 2026-10-04 12:48:09 +00:00
Every NXFLAT module imports __nxflat_abi_v2, and the loader resolves it against the symbol table exec() is given, like any other import. It was defined in binfmt/libnxflat, which is enough for a flat build, where the firmware and the applications are one image. In a protected build the table comes from the application, in the user image, which cannot see a kernel symbol: the user image fails to link with an undefined reference to __nxflat_abi_v2 as soon as an application generates its table from the modules' imports, as examples/nxflat does. A kernel build is the same, with one image per process. libc is linked into each of those images, so the marker is defined there now. Nothing else changes: its value is still never used. On mps3-an547:knsh under QEMU with CONFIG_NXFLAT and examples/nxflat, the user image links, and errno, hello, mutex, pthread and struct run. lm3s6965-ek:qemu-nxflat still runs every module to the end. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
107 lines
3.1 KiB
Text
107 lines
3.1 KiB
Text
############################################################################
|
|
# libs/libc/misc/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.
|
|
#
|
|
############################################################################
|
|
|
|
# Add the internal C files to the build
|
|
|
|
CSRCS += lib_bitmap.c lib_circbuf.c lib_creat.c lib_mknod.c lib_umask.c
|
|
CSRCS += lib_utsname.c lib_getrandom.c lib_xorshift128.c lib_tea_encrypt.c
|
|
CSRCS += lib_tea_decrypt.c lib_cxx_initialize.c lib_impure.c lib_memfd.c
|
|
CSRCS += lib_mutex.c lib_fchmodat.c lib_fstatat.c lib_getfullpath.c
|
|
CSRCS += lib_openat.c lib_mkdirat.c lib_utimensat.c lib_mallopt.c
|
|
CSRCS += lib_idr.c lib_getnprocs.c
|
|
|
|
ifeq ($(CONFIG_LIBC_TEMPBUFFER),y)
|
|
CSRCS += lib_tempbuffer.c
|
|
endif
|
|
|
|
# Support for platforms that do not have long long types
|
|
|
|
CSRCS += lib_umul32.c lib_umul64.c lib_umul32x64.c
|
|
CSRCS += lib_uadd32x64.c lib_uadd64.c lib_usub64x32.c lib_usub64.c
|
|
|
|
ifeq ($(CONFIG_PIPES),y)
|
|
CSRCS += lib_mkfifo.c
|
|
endif
|
|
|
|
# Add the miscellaneous C files to the build
|
|
|
|
CSRCS += lib_dumpbuffer.c lib_dumpvbuffer.c lib_fnmatch.c lib_debug.c
|
|
CSRCS += lib_crc64.c lib_crc32.c lib_crc16.c lib_crc16ccitt.c
|
|
CSRCS += lib_crc8.c lib_crc8ccitt.c lib_crc8table.c lib_crc8rohc.c
|
|
CSRCS += lib_crc8h1d.c lib_crc8h2f.c lib_crc16h1021.c lib_crc16h8005.c
|
|
CSRCS += lib_crc32h04c11db7.c lib_crc32hf4acfb13.c lib_crc64emac.c
|
|
CSRCS += lib_backtrace.c lib_ftok.c lib_err.c lib_instrument.c lib_glob.c
|
|
CSRCS += lib_crc16ibm.c lib_crc16xmodem.c
|
|
|
|
# Keyboard driver encoder/decoder
|
|
|
|
ifeq ($(CONFIG_LIBC_KBDCODEC),y)
|
|
CSRCS += lib_kbdencode.c lib_kbddecode.c
|
|
endif
|
|
|
|
# SLCD driver encoder/decoder
|
|
|
|
ifeq ($(CONFIG_LIBC_SLCDCODEC),y)
|
|
CSRCS += lib_slcdencode.c lib_slcddecode.c
|
|
endif
|
|
|
|
# The NXFLAT module ABI marker
|
|
|
|
ifeq ($(CONFIG_NXFLAT),y)
|
|
CSRCS += lib_nxflat.c
|
|
endif
|
|
|
|
# Environment search path support
|
|
|
|
ifeq ($(CONFIG_LIBC_ENVPATH),y)
|
|
CSRCS += lib_envpath.c
|
|
endif
|
|
|
|
# Fdsan support
|
|
|
|
ifeq ($(CONFIG_FDSAN),y)
|
|
CSRCS += lib_fdsan.c
|
|
endif
|
|
|
|
# Fdcheck support
|
|
|
|
ifeq ($(CONFIG_FDCHECK),y)
|
|
CSRCS += lib_fdcheck.c
|
|
endif
|
|
|
|
# Note support
|
|
|
|
ifeq ($(CONFIG_SCHED_INSTRUMENTATION_DUMP),y)
|
|
CSRCS += lib_note.c
|
|
endif
|
|
|
|
# To ensure uname information is newest,
|
|
# add lib_utsname.o to phony target for force rebuild
|
|
|
|
ifeq ($(CONFIG_LIBC_UNAME_DISABLE_TIMESTAMP),)
|
|
.PHONY: bin$(DELIM)lib_utsname$(OBJEXT) kbin$(DELIM)lib_utsname$(OBJEXT)
|
|
endif
|
|
|
|
# Add the misc directory to the build
|
|
|
|
DEPPATH += --dep-path misc
|
|
VPATH += :misc
|