Skip to content

Commit

Permalink
NPTL: Fix CTOR_DTOR
Browse files Browse the repository at this point in the history
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
  • Loading branch information
aldot committed May 31, 2011
1 parent 204c784 commit 5c49e11
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 35 deletions.
3 changes: 3 additions & 0 deletions libpthread/nptl/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ sysdeps/unix/sysv/linux/lowlevelrobustlock.h
sysdeps/unix/sysv/linux/structsem.h
sysdeps/unix/sysv/linux/unwindbuf.h
sysdeps/unix/sysv/linux/pthread-pi-defines.h
sysdeps/pthread/crt[in].S
sysdeps/pthread/defs.h
sysdeps/pthread/pt-initfini.s
#
# symlinks
#
Expand Down
12 changes: 7 additions & 5 deletions libpthread/nptl/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,11 @@ librt-a-y += $(librt_OBJS)
endif
librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS)

ifneq ($(UCLIBC_CTOR_DTOR),y)
START_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crti.o $(SHARED_START_FILES)
END_FILE-libpthread.so := $(SHARED_END_FILES) $(top_builddir)/libpthread/nptl/sysdeps/pthread/crtn.o
ifeq ($(UCLIBC_CTOR_DTOR),y)
START_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crti.o
END_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crtn.o
LDFLAGS-libpthread.so += -nostartfiles
$(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so)
endif

libpthread_FULL_NAME := libpthread-$(VERSION).so
Expand Down Expand Up @@ -137,9 +139,9 @@ CLEAN_libpthread/nptl:
$(do_rm) $(addprefix $(libpthread_OUT)/*., o os oS a)

ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
LDFLAGS-libpthread.so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs
LDFLAGS-libpthread.so += $(LDFLAGS_NOSTRIP) -Wl,-z,defs
else
LDFLAGS-libpthread.so := $(LDFLAGS)
LDFLAGS-libpthread.so += $(LDFLAGS)
endif

LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so \
Expand Down
24 changes: 18 additions & 6 deletions libpthread/nptl/sysdeps/pthread/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,34 @@ librt-pt-shared-only-routines-y = rt-unwind-resume.c

ifeq ($(UCLIBC_CTOR_DTOR),y)
CFLAGS-OMIT-pt-initfini.c = $(CFLAGS-pthread)
CFLAGS-pt-initfini.c = -S -g0 -fPIC -fno-inline-functions \
CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions \
$(call check_gcc,-fno-unit-at-a-time,) \
$(SSP_DISABLE_FLAGS) \
-finhibit-size-directive \
-fno-asynchronous-unwind-tables -fno-unwind-tables \
$(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,))
ASFLAGS-crti.S = -g0
ASFLAGS-crtn.S = -g0

$(libpthread_pthread_OUT)/pt-initfini.s: $(libpthread_pthread_DIR)/pt-initfini.c
$(compile.c)
$(do_sed) '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
$(do_awk) $(libpthread_pthread_DIR)/defs.awk > $(libpthread_pthread_OUT)/defs.h
$(libpthread_pthread_OUT)/defs.h: $(libpthread_pthread_DIR)/pt-initfini.c
$(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
$(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp
$(Q)mv $@.tmp $@

$(libpthread_pthread_OUT)/crti.S $(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s
$(do_sed) -e '1,/@HEADER_ENDS/p' \
$(libpthread_pthread_OUT)/crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
$(do_sed) -n -e '/[ ]*\.file/d' \
-e '1,/@HEADER_ENDS/p' \
-e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
-e '/@TRAILER_BEGINS/,$$p' $< > $@
-e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp
$(Q)mv $@.tmp $@
$(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
$(do_sed) -n -e '/[ ]*\.file/d' \
-e '1,/@HEADER_ENDS/p' \
-e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \
-e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp
$(Q)mv $@.tmp $@
endif
# It would have been easier to just add dummy files that include the real
# impl, but ok.
Expand Down
24 changes: 0 additions & 24 deletions libpthread/nptl/sysdeps/pthread/defs.awk

This file was deleted.

4 changes: 4 additions & 0 deletions libpthread/nptl/sysdeps/pthread/pt-initfini.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@

/* Embed an #include to pull in the alignment and .end directives. */
__asm__ ("\n#include \"defs.h\"");
__asm__ ("\n#if defined __i686 && defined __ASSEMBLER__");
__asm__ ("\n#undef __i686");
__asm__ ("\n#define __i686 __i686");
__asm__ ("\n#endif");

/* The initial common code ends here. */
__asm__ ("\n/*@HEADER_ENDS*/");
Expand Down

0 comments on commit 5c49e11

Please sign in to comment.