libc/modlib: preprocess gnu-elf.ld
This generates gnu-elf.ld via preprocessing of gnu-elf.ld.in so that to reduce board specific app linker scripts in kernel mode when BINFMT_ELF_EXECUTABLE is enabled. Signed-off-by: Yanfeng Liu <p-liuyanfeng9@xiaomi.com>
This commit is contained in:
parent
be40c01ddd
commit
657247bda8
4 changed files with 64 additions and 3 deletions
1
libs/libc/.gitignore
vendored
1
libs/libc/.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
/exec_symtab.c
|
/exec_symtab.c
|
||||||
/modlib_symtab.c
|
/modlib_symtab.c
|
||||||
|
modlib/gnu-elf.ld
|
||||||
|
|
|
@ -183,6 +183,10 @@ context:: bin kbin
|
||||||
ifeq ($(CONFIG_LIBC_ZONEINFO_ROMFS),y)
|
ifeq ($(CONFIG_LIBC_ZONEINFO_ROMFS),y)
|
||||||
$(Q) $(MAKE) -C zoneinfo context BIN=$(BIN)
|
$(Q) $(MAKE) -C zoneinfo context BIN=$(BIN)
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CONFIG_LIBC_MODLIB),y)
|
||||||
|
$(Q) $(MAKE) -C modlib context
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
|
@ -210,6 +214,7 @@ depend:: .depend
|
||||||
|
|
||||||
clean::
|
clean::
|
||||||
$(Q) $(MAKE) -C zoneinfo clean BIN=$(BIN)
|
$(Q) $(MAKE) -C zoneinfo clean BIN=$(BIN)
|
||||||
|
$(Q) $(MAKE) -C modlib clean
|
||||||
$(call DELFILE, $(BIN))
|
$(call DELFILE, $(BIN))
|
||||||
$(call DELFILE, $(KBIN))
|
$(call DELFILE, $(KBIN))
|
||||||
$(call CLEAN)
|
$(call CLEAN)
|
||||||
|
@ -218,6 +223,7 @@ clean::
|
||||||
|
|
||||||
distclean:: clean
|
distclean:: clean
|
||||||
$(Q) $(MAKE) -C zoneinfo distclean BIN=$(BIN)
|
$(Q) $(MAKE) -C zoneinfo distclean BIN=$(BIN)
|
||||||
|
$(Q) $(MAKE) -C modlib distclean
|
||||||
$(call DELFILE, exec_symtab.c)
|
$(call DELFILE, exec_symtab.c)
|
||||||
$(call DELFILE, .depend)
|
$(call DELFILE, .depend)
|
||||||
$(call DELDIR, bin)
|
$(call DELDIR, bin)
|
||||||
|
|
40
libs/libc/modlib/Makefile
Normal file
40
libs/libc/modlib/Makefile
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
############################################################################
|
||||||
|
# libs/libc/modlib/Makefile
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
############################################################################
|
||||||
|
|
||||||
|
include $(TOPDIR)/Make.defs
|
||||||
|
|
||||||
|
# Generate gnu-elf.ld from gnu-elf.ld.in
|
||||||
|
|
||||||
|
gnu-elf.ld: gnu-elf.ld.in
|
||||||
|
$(call PREPROCESS, $<, $@)
|
||||||
|
|
||||||
|
# Create initial context
|
||||||
|
|
||||||
|
context: gnu-elf.ld
|
||||||
|
|
||||||
|
.PHONY: context clean distclean
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(call CLEAN)
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
$(call DELFILE, gnu-elf.ld)
|
|
@ -1,5 +1,5 @@
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* libs/libc/modlib/gnu-elf.ld
|
* libs/libc/modlib/gnu-elf.ld.in
|
||||||
*
|
*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
@ -18,9 +18,23 @@
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#if defined(CONFIG_BUILD_KERNEL) && defined(CONFIG_BINFMT_ELF_EXECUTABLE)
|
||||||
|
# define __ASSEMBLY__
|
||||||
|
# include <nuttx/addrenv.h>
|
||||||
|
|
||||||
|
# define TEXT CONFIG_ARCH_TEXT_VBASE
|
||||||
|
# define DATA CONFIG_ARCH_DATA_VBASE + ARCH_DATA_RESERVE_SIZE
|
||||||
|
#else
|
||||||
|
# define TEXT 0x0
|
||||||
|
# define DATA
|
||||||
|
#endif
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text 0x00000000 :
|
.text TEXT :
|
||||||
{
|
{
|
||||||
_stext = . ;
|
_stext = . ;
|
||||||
*(.text)
|
*(.text)
|
||||||
|
@ -58,7 +72,7 @@ SECTIONS
|
||||||
_erodata = . ;
|
_erodata = . ;
|
||||||
}
|
}
|
||||||
|
|
||||||
.data :
|
.data DATA :
|
||||||
{
|
{
|
||||||
_sdata = . ;
|
_sdata = . ;
|
||||||
*(.data)
|
*(.data)
|
Loading…
Reference in a new issue