Changeset 82d9087 in mainline


Ignore:
Timestamp:
2018-08-01T20:20:52Z (6 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3b10ae36
Parents:
f787c8e
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-01 20:20:43)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-01 20:20:52)
Message:

Use default linker scripts (as provided by the linker) in uspace.

There have been some issues before, but they appear to have been resolved
since then.

Location:
uspace
Files:
1 added
10 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile.common

    rf787c8e r82d9087  
    3535#   DEFS               compiler defines
    3636#   EXTRA_CFLAGS       additional flags to pass to C compiler
    37 #   LINKER_SCRIPT      linker script
    3837#   PRE_DEPEND         targets required for dependency check
    3938#
     
    153152BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a $(LIBSOFTINT_PREFIX)/libsoftint.a
    154153
    155 ifeq ($(LINK_DYNAMIC),y)
    156         LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld
    157 else
     154ifneq ($(LINK_DYNAMIC),y)
    158155        LDFLAGS += -static
    159         LINKER_SCRIPT ?= $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld
    160 endif
    161 
    162 LIB_LINKER_SCRIPT = $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld
     156endif
    163157
    164158INCLUDES_FLAGS = $(LIBC_INCLUDES_FLAGS)
     
    261255endif
    262256
    263 COMMON_CXXFLAGS = $(COMMON_CFLAGS)
     257COMMON_CXXFLAGS = $(COMMON_CFLAGS) -fno-exceptions
    264258HELENOS_CXXFLAGS = \
    265259        -std=c++17 -frtti \
     
    351345
    352346ifneq ($(filter %.cpp %.cc %.cxx, $(SOURCES)),)
    353 $(BINARY): $(LINKER_SCRIPT) $(OBJECTS) $(LIBTAGS)
    354         $(CXX) $(CXXFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -T $(LINKER_SCRIPT) -Wl,-Map,$@.map -o $@ $(START_FILES) $(OBJECTS) $(LIBARGS) $(CXX_BASE_LIBS)
     347$(BINARY): $(OBJECTS) $(LIBTAGS)
     348        $(CXX) $(CXXFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -Wl,-Map,$@.map -o $@ $(START_FILES) $(OBJECTS) $(LIBARGS) $(CXX_BASE_LIBS)
    355349else
    356 $(BINARY): $(LINKER_SCRIPT) $(OBJECTS) $(LIBTAGS)
    357         $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -T $(LINKER_SCRIPT) -Wl,-Map,$@.map -o $@ $(START_FILES) $(OBJECTS) $(LIBARGS) $(BASE_LIBS)
     350$(BINARY): $(OBJECTS) $(LIBTAGS)
     351        $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -Wl,-Map,$@.map -o $@ $(START_FILES) $(OBJECTS) $(LIBARGS) $(BASE_LIBS)
    358352endif
    359353
     
    361355
    362356ifneq ($(TEST_BINARY),)
    363 $(TEST_BINARY): $(LINKER_SCRIPT) $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBTAGS)
    364         $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -T $(LINKER_SCRIPT) -Wl,-Map,$@.map -o $@ $(START_FILES) $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBARGS) $(BASE_LIBS)
     357$(TEST_BINARY): $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBTAGS)
     358        $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) -Wl,-Map,$@.map -o $@ $(START_FILES) $(TEST_OBJECTS) $(TEST_BINARY_LIBS) $(LIBARGS) $(BASE_LIBS)
    365359endif
    366360
     
    378372        $(AR) rc $@ $(LOBJECTS)
    379373
    380 $(SLIBRARY): $(LIB_LINKER_SCRIPT) $(LIBRARY).la
    381         $(CC) $(CFLAGS) $(LIB_LDFLAGS) $(EXTRA_LDFLAGS) -T $(LIB_LINKER_SCRIPT) -Wl,-Map,$@.map -o $@ -Wl,--whole-archive $(LIBRARY).la -Wl,--no-whole-archive $(LIBARGS) $(BASE_LIBS)
     374$(SLIBRARY): $(LIBRARY).la
     375        $(CC) $(CFLAGS) $(LIB_LDFLAGS) $(EXTRA_LDFLAGS) -Wl,-Map,$@.map -o $@ -Wl,--whole-archive $(LIBRARY).la -Wl,--no-whole-archive $(LIBARGS) $(BASE_LIBS)
    382376
    383377$(LSONAME):
  • uspace/lib/c/Makefile

    rf787c8e r82d9087  
    3333CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
    3434
    35 LINKER_SCRIPTS = \
    36         $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld \
    37         $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld \
    38         $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld
    39 
    40 PRE_DEPEND =
    41 EXTRA_OUTPUT = $(LINKER_SCRIPTS) $(START_FILES)
    42 EXTRA_CLEAN = $(LINKER_SCRIPTS)
     35EXTRA_OUTPUT = $(START_FILES)
    4336EXTRA_TEST_CFLAGS = -Wno-deprecated-declarations
    4437LIBRARY = libc
     
    219212        cp $< $@
    220213
    221 $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
    222         $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -E -x c $< | grep -v "^\#" > $@
    223 
    224 $(LIBC_PREFIX)/arch/$(UARCH)/_link-shlib.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
    225         $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DSHLIB -E -x c $< | grep -v "^\#" > $@
    226 
    227 $(LIBC_PREFIX)/arch/$(UARCH)/_link-dlexe.ld: $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld.in
    228         $(CC) $(DEFS) $(CFLAGS) -DLIBC_PATH=$(CURDIR) -DDLEXE -E -x c $< | grep -v "^\#" > $@
    229 
    230214AUTOCHECK = $(realpath $(ROOT_PATH)/tools/autocheck.awk)
    231215
  • uspace/lib/pcut/Makefile

    rf787c8e r82d9087  
    3636
    3737test-libpcut-%: $(LIBRARY).a
    38         $(CC) $(CFLAGS) $(LDFLAGS) -T $(LINKER_SCRIPT) -o $@ $(START_FILES) $^ $(LIBRARY).a $(BASE_LIBS)
     38        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(START_FILES) $^ $(LIBRARY).a $(BASE_LIBS)
    3939
  • uspace/lib/pcut/update-from-master.sh

    rf787c8e r82d9087  
    8080
    8181test-libpcut-%: $(LIBRARY).a
    82         $(CC) $(CFLAGS) $(LDFLAGS) -T $(LINKER_SCRIPT) -o $@ $(START_FILES) $^ $(LIBRARY).a $(BASE_LIBS)
     82        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(START_FILES) $^ $(LIBRARY).a $(BASE_LIBS)
    8383
    8484EOF_MAKEFILE_TAIL
  • uspace/lib/posix/Makefile

    rf787c8e r82d9087  
    3636
    3737SPECS = gcc.specs
    38 LIBC_LINKER_SCRIPT = $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld
    39 EXPORT_LINKER_SCRIPT = link.ld
    4038
    4139EXPORT_FILES = \
     
    4846        $(LIBC_PREFIX)/crt1.o \
    4947        $(LIBRARY).a \
    50         $(EXPORT_LINKER_SCRIPT) \
    5148        $(SPECS)
    5249
     
    5451EXTRA_CLEAN = $(INCLUDE_LIBC)
    5552
    56 EXTRA_OUTPUT = $(SPECS) $(EXPORT_LINKER_SCRIPT) $(EXPORT_STARTUP_FILE)
     53EXTRA_OUTPUT = $(SPECS)
    5754
    5855SOURCES = \
     
    9289EXPORT_LDFLAGS = \
    9390        -L$$(HELENOS_EXPORT_ROOT)/lib \
    94         -T link.ld \
    9591        $$(HELENOS_EXPORT_ROOT)/lib/crt0.o \
    9692        $$(HELENOS_EXPORT_ROOT)/lib/crt1.o
     
    114110        echo '$(EXPORT_LDLIBS)' >> $@.new
    115111        mv $@.new $@
    116 
    117 $(EXPORT_LINKER_SCRIPT): $(LIBC_LINKER_SCRIPT)
    118         cp $< $@
    119 
    120 $(EXPORT_STARTUP_FILE): $(LIBC_STARTUP_FILE)
    121         cp $< $@
    122112
    123113$(INCLUDE_LIBC): $(shell find ../c/include -name '*.h')
  • uspace/srv/loader/Makefile

    rf787c8e r82d9087  
    2929
    3030USPACE_PREFIX = ../..
     31ROOT_PATH = $(USPACE_PREFIX)/..
     32CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
    3133
    32 EXTRA_LDFLAGS = -Wl,-Ttext-segment=0x70000000
     34include $(CONFIG_MAKEFILE)
     35
     36ifeq ($(UARCH),ia64)
     37        # IA64 has a peculiar linker script with a fixed data segment address.
     38        # Because the loader is a separate nonrelocatable binary in the same
     39        # address space as the application, we provide a modified copy of
     40        # the default linker script to work around that.
     41        EXTRA_LDFLAGS = -T elf64_ia64_loader.x
     42else
     43        # On all other architectures, we can simply move the text segment.
     44        EXTRA_LDFLAGS = -Wl,-Ttext-segment=0x70000000
     45endif
    3346
    3447BINARY = loader
Note: See TracChangeset for help on using the changeset viewer.