Changes in / [92a89b1:fb5f28e] in mainline


Ignore:
Files:
6 added
17 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    r92a89b1 rfb5f28e  
    578578
    579579% Dynamic linking support
    580 ! [PLATFORM=ia32] CONFIG_RTLD (n/y)
    581 ! [PLATFORM=abs32le|PLATFORM=amd64|PLATFORM=arm32|PLATFORM=ia64|PLATFORM=mips32|PLATFORM=ppc32|PLATFORM=riscv64|PLATFORM=sparc64] CONFIG_RTLD (n)
     580! [PLATFORM=amd64|PLATFORM=ia32] CONFIG_RTLD (y/n)
     581! [PLATFORM=abs32le|PLATFORM=arm32|PLATFORM=ia64|PLATFORM=mips32|PLATFORM=ppc32|PLATFORM=riscv64|PLATFORM=sparc64] CONFIG_RTLD (n)
    582582
    583583% Build shared libraries
  • abi/include/abi/asmtool.h

    r92a89b1 rfb5f28e  
    5656        SYMBOL_END(func)
    5757
     58#ifdef __PIC__
     59#define FUNCTION_REF(func) func@PLT
     60#else
     61#define FUNCTION_REF(func) func
     62#endif
     63
    5864#endif
    5965
  • defaults/amd64/Makefile.config

    r92a89b1 rfb5f28e  
    6565CONFIG_BFB_BPP = 16
    6666
     67# Dynamic linking support
     68CONFIG_RTLD = y
     69
     70# Build shared libraries
     71CONFIG_BUILD_SHARED_LIBS = y
     72
     73# Link against shared libraries
     74CONFIG_USE_SHARED_LIBS = y
     75
    6776# Include development files (headers, libraries)
    6877CONFIG_DEVEL_FILES = y
  • uspace/Makefile.common

    r92a89b1 rfb5f28e  
    112112
    113113AFLAGS = --fatal-warnings
    114 LDFLAGS = -Wl,--fatal-warnings,--warn-common
     114LDFLAGS = -Wl,--fatal-warnings,--warn-common -Wl,-z,max-page-size=0x1000
    115115
    116116ifeq ($(STATIC_NEEDED),y)
     
    120120                STATIC_BUILD = y
    121121        else
    122                 ifeq ($(CONFIG_USE_SHARED_LIBS),y)
    123                         STATIC_BUILD = n
     122                ifeq ($(CONFIG_BUILD_SHARED_LIBS),y)
     123                        ifeq ($(CONFIG_USE_SHARED_LIBS),y)
     124                                STATIC_BUILD = n
     125                        else
     126                                ifeq ($(LIBRARY),)
     127                                        STATIC_BUILD = y
     128                                else
     129                                        STATIC_BUILD = n
     130                                endif
     131                        endif
    124132                else
    125133                        STATIC_BUILD = y
     
    300308LIBARGS := $(addprefix -L$(USPACE_PREFIX)/lib/, $(LIBS)) $(addprefix -l, $(LIBS))
    301309
     310ifneq ($(LIBRARY),libc)
     311        LIBTAGS := $(LIBC_PREFIX)/tag $(LIBTAGS)
     312endif
     313
    302314.PHONY: all all-test clean fasterclean depend
    303315
     
    369381        $(AR) rc $@ $(LOBJECTS)
    370382
    371 $(SLIBRARY): $(LIBRARY).la
     383$(SLIBRARY): $(LIBRARY).la $(LIBTAGS)
    372384        $(CC) $(CFLAGS) $(LIB_LDFLAGS) $(EXTRA_LDFLAGS) -Wl,-Map,$@.map -o $@ -Wl,--whole-archive $(LIBRARY).la -Wl,--no-whole-archive $(LIBARGS) $(BASE_LIBS)
    373385
  • uspace/app/init/untar.c

    r92a89b1 rfb5f28e  
    4545typedef struct {
    4646        const char *dev;
    47        
     47
    4848        service_id_t sid;
    4949        aoff64_t offset;
  • uspace/drv/bus/usb/ohci/ohci_regs.h

    r92a89b1 rfb5f28e  
    153153 * ohci_regs_t.control
    154154 */
    155  
     155
    156156/* Control-bulk service ratio */
    157157#define C_CBSR_1_1  (0x0)
  • uspace/lib/c/arch/amd64/Makefile.inc

    r92a89b1 rfb5f28e  
    3434        arch/$(UARCH)/src/tls.c \
    3535        arch/$(UARCH)/src/stacktrace.c \
    36         arch/$(UARCH)/src/stacktrace_asm.S
     36        arch/$(UARCH)/src/stacktrace_asm.S \
     37        arch/$(UARCH)/src/rtld/dynamic.c \
     38        arch/$(UARCH)/src/rtld/reloc.c
    3739
    3840ARCH_AUTOCHECK_HEADERS = \
  • uspace/lib/c/arch/amd64/include/libarch/tls.h

    r92a89b1 rfb5f28e  
    4545        void *self;
    4646        void *fibril_data;
     47        void **dtv;
     48        void *pad;
    4749} tcb_t;
    4850
  • uspace/lib/c/arch/amd64/src/entry.S

    r92a89b1 rfb5f28e  
    4747        # %rdi was deliberately chosen as the first argument is also in %rdi
    4848        # Pass PCB pointer to __c_start (no operation)
    49         call __c_start
     49        call FUNCTION_REF(__c_start)
  • uspace/lib/c/arch/amd64/src/thread_entry.S

    r92a89b1 rfb5f28e  
    4646        #
    4747        movq %rax, %rdi
    48         call __thread_main
     48        call FUNCTION_REF(__thread_main)
    4949SYMBOL_END(__thread_entry)
  • uspace/lib/c/arch/amd64/src/tls.c

    r92a89b1 rfb5f28e  
    3838#include <stddef.h>
    3939
     40#ifdef CONFIG_RTLD
     41#include <rtld/rtld.h>
     42#endif
     43
    4044tcb_t *tls_alloc_arch(size_t size, size_t align)
    4145{
     
    4852}
    4953
     54/*
     55 * Rtld TLS support
     56 */
     57
     58typedef struct {
     59        unsigned long int ti_module;
     60        unsigned long int ti_offset;
     61} tls_index;
     62
     63void __attribute__((__regparm__(1)))
     64    *__tls_get_addr(tls_index *ti);
     65
     66void __attribute__((__regparm__(1)))
     67    *__tls_get_addr(tls_index *ti)
     68{
     69        uint8_t *tls;
     70
     71#ifdef CONFIG_RTLD
     72        if (runtime_env != NULL) {
     73                return rtld_tls_get_addr(runtime_env, __tcb_get(),
     74                    ti->ti_module, ti->ti_offset);
     75        }
     76#endif
     77        /* Get address of static TLS block */
     78        tls = tls_get();
     79        return tls + ti->ti_offset;
     80}
     81
    5082/** @}
    5183 */
  • uspace/lib/c/generic/elf/elf_mod.c

    r92a89b1 rfb5f28e  
    420420        seg_ptr = (void *) seg_addr;
    421421
    422         DPRINTF("Load segment at addr %p, size 0x%zx\n", (void *) seg_addr,
    423             entry->p_memsz);
     422        DPRINTF("Load segment at addr %p, size 0x%zx, flags %c%c%c\n", (void *) seg_addr,
     423            entry->p_memsz,
     424            (entry->p_flags & PF_R) ? 'r' : '-',
     425            (entry->p_flags & PF_W) ? 'w' : '-',
     426            (entry->p_flags & PF_X) ? 'x' : '-');
    424427
    425428        if (entry->p_align > 1) {
     
    484487                return EE_OK;
    485488
    486         rc = as_area_change_flags(seg_ptr, flags);
     489        DPRINTF("as_area_change_flags(%p, %x)\n",
     490            (uint8_t *) base + bias, flags);
     491        rc = as_area_change_flags((uint8_t *) base + bias, flags);
    487492        if (rc != EOK) {
    488493                DPRINTF("Failed to set memory area flags.\n");
  • uspace/lib/c/generic/rtld/dynamic.c

    r92a89b1 rfb5f28e  
    6464                d_ptr = (void *)((uint8_t *)dp->d_un.d_ptr + bias);
    6565                d_val = dp->d_un.d_val;
    66                 DPRINTF("tag=%u ptr=0x%x val=%u\n", (unsigned)dp->d_tag,
    67                     (unsigned)d_ptr, (unsigned)d_val);
     66                DPRINTF("tag=%u ptr=0x%zx val=%zu\n", (unsigned)dp->d_tag,
     67                    (uintptr_t)d_ptr, (uintptr_t)d_val);
    6868
    6969                switch (dp->d_tag) {
  • uspace/lib/c/generic/rtld/module.c

    r92a89b1 rfb5f28e  
    5050#include <rtld/rtld_arch.h>
    5151#include <rtld/module.h>
     52#include <libarch/rtld/module.h>
    5253
    5354#include "../private/libc.h"
     
    206207        DPRINTF("filename:'%s'\n", name_buf);
    207208
    208         rc = elf_load_file_name(name_buf, ELDF_RW, &info);
     209        rc = elf_load_file_name(name_buf, RTLD_MODULE_LDF, &info);
    209210        if (rc != EE_OK) {
    210211                printf("Failed to load '%s'\n", name_buf);
  • uspace/lib/c/include/rtld/elf_dyn.h

    r92a89b1 rfb5f28e  
    3939#include <libarch/rtld/elf_dyn.h>
    4040
    41 #define ELF32_R_SYM(i) ((i)>>8)
     41#define ELF32_R_SYM(i) ((i) >> 8)
    4242#define ELF32_R_TYPE(i) ((unsigned char)(i))
     43
     44#define ELF64_R_SYM(i) ((i) >> 32)
     45#define ELF64_R_TYPE(i) ((i) & 0xffffffffL)
    4346
    4447struct elf32_dyn {
     
    4750                elf_word d_val;
    4851                elf32_addr d_ptr;
     52        } d_un;
     53};
     54
     55struct elf64_dyn {
     56        elf_sxword d_tag;
     57        union {
     58                elf_xword d_val;
     59                elf64_addr d_ptr;
    4960        } d_un;
    5061};
     
    6172};
    6273
     74struct elf64_rel {
     75        elf64_addr r_offset;
     76        elf_xword r_info;
     77};
     78
     79struct elf64_rela {
     80        elf64_addr r_offset;
     81        elf_xword r_info;
     82        elf_sxword r_addend;
     83};
     84
    6385#ifdef __32_BITS__
    6486typedef struct elf32_dyn elf_dyn_t;
    6587typedef struct elf32_rel elf_rel_t;
    6688typedef struct elf32_rela elf_rela_t;
     89#endif
     90
     91#ifdef __64_BITS__
     92typedef struct elf64_dyn elf_dyn_t;
     93typedef struct elf64_rel elf_rel_t;
     94typedef struct elf64_rela elf_rela_t;
    6795#endif
    6896
  • uspace/lib/pcut/src/os/generic.c

    r92a89b1 rfb5f28e  
    121121        FORMAT_COMMAND(command, PCUT_COMMAND_LINE_BUFFER_SIZE - 1,
    122122                self_path, (test)->id, tempfile_name);
    123        
     123
    124124        PCUT_DEBUG("Will execute <%s> (temp file <%s>) with system().",
    125125                command, tempfile_name);
  • uspace/lib/untar/untar.c

    r92a89b1 rfb5f28e  
    154154                return rc;
    155155        }
    156        
     156
    157157        while (true) {
    158158                tar_header_raw_t header_raw;
Note: See TracChangeset for help on using the changeset viewer.