Avoid use of libgcc_s and libgcc_eh when building glibc.
This commit is contained in:
parent
7a845b2c23
commit
95f5a9a866
47
ChangeLog
47
ChangeLog
|
@ -1,5 +1,52 @@
|
||||||
2012-07-03 Joseph Myers <joseph@codesourcery.com>
|
2012-07-03 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* Makeconfig [!+link] (+link-before-libc): New variable.
|
||||||
|
[!+link] (+link-after-libc): Likewise.
|
||||||
|
[!+link] (+link-tests): Likewise.
|
||||||
|
[!+link] (+link): Define in terms of $(+link-before-libc) and
|
||||||
|
$(+link-after-libc).
|
||||||
|
[!+link-static] (+link-static-before-libc): New variable.
|
||||||
|
[!+link-static] (+link-static-after-libc): Likewise.
|
||||||
|
[!+link-static] (+link-static-tests): Likewise.
|
||||||
|
[!+link-static] (+link-static): Define in terms of
|
||||||
|
$(+link-static-before-libc) and $(+link-static-after-libc).
|
||||||
|
[build-shared] (link-libc-before-gnulib): New variable.
|
||||||
|
[build-shared] (link-libc-tests): Likewise.
|
||||||
|
[build-shared] (link-libc): Define in terms of
|
||||||
|
$(link-libc-before-gnulib).
|
||||||
|
[!build-shared] (link-libc-tests): New variable.
|
||||||
|
(link-libc-static-tests): New variable.
|
||||||
|
[!gnulib] (gnulib-arch): New variable.
|
||||||
|
[!gnulib] (gnulib-tests): Likewise.
|
||||||
|
[!gnulib] (static-gnulib-arch): Likewise.
|
||||||
|
[!gnulib] (static-gnulib-tests): Likewise.
|
||||||
|
[!gnulib] (gnulib): Use $(gnulib-arch). Do not use $(libgcc_eh).
|
||||||
|
Define with "=" instead of ":=".
|
||||||
|
[!gnulib] (static-gnulib): Use $(static-gnulib-arch). Do not use
|
||||||
|
-lgcc_eh $(libunwind). Define with "=" instead of ":=".
|
||||||
|
* Rules (binaries-all-notests): New variable.
|
||||||
|
(binaries-all-tests): Likewise.
|
||||||
|
(binaries-static-notests): Likewise.
|
||||||
|
(binaries-static-tests): Likewise.
|
||||||
|
(binaries-all): Define using $(binaries-all-notests) and
|
||||||
|
$(binaries-all-tests).
|
||||||
|
(binaries-static): Define using $(binaries-static-notests) and
|
||||||
|
$(binaries-static-tests).
|
||||||
|
(binaries-shared-tests): New variable.
|
||||||
|
(binaries-shared-notests): Likewise.
|
||||||
|
(binaries-shared): Remove variable.
|
||||||
|
($(addprefix $(objpfx),$(binaries-shared-notests))): New rule.
|
||||||
|
($(addprefix $(objpfx),$(binaries-shared-tests))): Likewise.
|
||||||
|
($(addprefix $(objpfx),$(binaries-shared))): Remove rule.
|
||||||
|
($(addprefix $(objpfx),$(binaries-static-notests))): New rule.
|
||||||
|
($(addprefix $(objpfx),$(binaries-static-tests))): Likewise.
|
||||||
|
($(addprefix $(objpfx),$(binaries-static))): Remove rule.
|
||||||
|
* elf/Makefile (sln-modules): New variable.
|
||||||
|
(extra-objs): Add $(sln-modules:=.o).
|
||||||
|
(ldconfig-modules): Add static-stubs.
|
||||||
|
($(objpfx)sln): Depend on $(sln-modules:%=$(objpfx)%.o).
|
||||||
|
* elf/static-stubs.c: New file.
|
||||||
|
|
||||||
[BZ #14283]
|
[BZ #14283]
|
||||||
* sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f): Shift
|
* sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f): Shift
|
||||||
by 7 not 8 to examine high bit of fractional part. Use volatile
|
by 7 not 8 to examine high bit of fractional part. Use volatile
|
||||||
|
|
68
Makeconfig
68
Makeconfig
|
@ -415,9 +415,9 @@ LDFLAGS.so += $(hashstyle-LDFLAGS)
|
||||||
LDFLAGS-rtld += $(hashstyle-LDFLAGS)
|
LDFLAGS-rtld += $(hashstyle-LDFLAGS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Command for linking programs with the C library.
|
# Commands for linking programs with the C library.
|
||||||
ifndef +link
|
ifndef +link
|
||||||
+link = $(CC) -nostdlib -nostartfiles -o $@ \
|
+link-before-libc = $(CC) -nostdlib -nostartfiles -o $@ \
|
||||||
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||||
$(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
|
$(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
|
||||||
$(addprefix $(csu-objpfx),$(start-installed-name)) \
|
$(addprefix $(csu-objpfx),$(start-installed-name)) \
|
||||||
|
@ -426,7 +426,10 @@ ifndef +link
|
||||||
$(start-installed-name))\
|
$(start-installed-name))\
|
||||||
$(+preinit) $(link-extra-libs) \
|
$(+preinit) $(link-extra-libs) \
|
||||||
$(common-objpfx)libc% $(+postinit),$^) \
|
$(common-objpfx)libc% $(+postinit),$^) \
|
||||||
$(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
|
$(link-extra-libs)
|
||||||
|
+link-after-libc = $(+postctor) $(+postinit)
|
||||||
|
+link = $(+link-before-libc) $(link-libc) $(+link-after-libc)
|
||||||
|
+link-tests = $(+link-before-libc) $(link-libc-tests) $(+link-after-libc)
|
||||||
endif
|
endif
|
||||||
# Command for linking PIE programs with the C library.
|
# Command for linking PIE programs with the C library.
|
||||||
ifndef +link-pie
|
ifndef +link-pie
|
||||||
|
@ -443,7 +446,7 @@ ifndef +link-pie
|
||||||
endif
|
endif
|
||||||
# Command for statically linking programs with the C library.
|
# Command for statically linking programs with the C library.
|
||||||
ifndef +link-static
|
ifndef +link-static
|
||||||
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
+link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
||||||
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||||
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
|
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
|
||||||
$(+preinit) $(+prector) \
|
$(+preinit) $(+prector) \
|
||||||
|
@ -451,7 +454,12 @@ ifndef +link-static
|
||||||
$(start-installed-name))\
|
$(start-installed-name))\
|
||||||
$(+preinit) $(link-extra-libs-static) \
|
$(+preinit) $(link-extra-libs-static) \
|
||||||
$(common-objpfx)libc% $(+postinit),$^) \
|
$(common-objpfx)libc% $(+postinit),$^) \
|
||||||
$(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit)
|
$(link-extra-libs-static) $(link-libc-static)
|
||||||
|
+link-static-after-libc = $(+postctor) $(+postinit)
|
||||||
|
+link-static = $(+link-static-before-libc) $(link-libc-static) \
|
||||||
|
$(+link-static-after-libc)
|
||||||
|
+link-static-tests = $(+link-static-before-libc) $(link-libc-static-tests) \
|
||||||
|
$(+link-static-after-libc)
|
||||||
endif
|
endif
|
||||||
# Command for statically linking bounded-pointer programs with the C library.
|
# Command for statically linking bounded-pointer programs with the C library.
|
||||||
ifndef +link-bounded
|
ifndef +link-bounded
|
||||||
|
@ -475,10 +483,12 @@ ifeq (yes,$(build-shared))
|
||||||
# We need the versioned name of libc.so in the deps of $(others) et al
|
# We need the versioned name of libc.so in the deps of $(others) et al
|
||||||
# so that the symlink to libc.so is created before anything tries to
|
# so that the symlink to libc.so is created before anything tries to
|
||||||
# run the linked programs.
|
# run the linked programs.
|
||||||
link-libc = -Wl,-rpath-link=$(rpath-link) \
|
link-libc-before-gnulib = -Wl,-rpath-link=$(rpath-link) \
|
||||||
$(common-objpfx)libc.so$(libc.so-version) \
|
$(common-objpfx)libc.so$(libc.so-version) \
|
||||||
$(common-objpfx)$(patsubst %,$(libtype.oS),c) \
|
$(common-objpfx)$(patsubst %,$(libtype.oS),c) \
|
||||||
$(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed) $(gnulib)
|
$(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed)
|
||||||
|
link-libc = $(link-libc-before-gnulib) $(gnulib)
|
||||||
|
link-libc-tests = $(link-libc-before-gnulib) $(gnulib-tests)
|
||||||
# This is how to find at build-time things that will be installed there.
|
# This is how to find at build-time things that will be installed there.
|
||||||
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
|
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
|
||||||
rpath-link = \
|
rpath-link = \
|
||||||
|
@ -488,6 +498,7 @@ else
|
||||||
nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
|
nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
|
||||||
resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
|
resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
|
||||||
link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
|
link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
|
||||||
|
link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -513,8 +524,43 @@ endif
|
||||||
|
|
||||||
# The static libraries.
|
# The static libraries.
|
||||||
link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
|
link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
|
||||||
|
link-libc-static-tests = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib-tests) -Wl,--end-group
|
||||||
link-libc-bounded = $(common-objpfx)libc_b.a $(gnulib) $(common-objpfx)libc_b.a
|
link-libc-bounded = $(common-objpfx)libc_b.a $(gnulib) $(common-objpfx)libc_b.a
|
||||||
|
|
||||||
|
# How to link against libgcc. Some libgcc functions, such as those
|
||||||
|
# for "long long" arithmetic or software floating point, can always be
|
||||||
|
# built without use of C library headers and do not have any global
|
||||||
|
# state so can safely be linked statically into any executable or
|
||||||
|
# shared library requiring them; these functions are in libgcc.a.
|
||||||
|
# Other functions, relating to exception handling, may require C
|
||||||
|
# library headers to build and it may not be safe to have more than
|
||||||
|
# one copy of them in a process; these functions are only in
|
||||||
|
# libgcc_s.so and libgcc_eh.a.
|
||||||
|
#
|
||||||
|
# To avoid circular dependencies when bootstrapping, it is desirable
|
||||||
|
# to avoid use of libgcc_s and libgcc_eh in building glibc. Where any
|
||||||
|
# glibc functionality (in particular, thread cancellation) requires
|
||||||
|
# exception handling, this is implemented through dlopen of libgcc_s
|
||||||
|
# to avoid unnecessary dependencies on libgcc_s by programs not using
|
||||||
|
# that functionality; executables built with glibc do not use
|
||||||
|
# exception handling other than through thread cancellation.
|
||||||
|
#
|
||||||
|
# Undefined references to functions from libgcc_eh or libgcc_s may
|
||||||
|
# arise for code built with -fexceptions. In the case of statically
|
||||||
|
# linked programs installed by glibc, unwinding will never actually
|
||||||
|
# occur at runtime and the use of elf/static-stubs.c to resolve these
|
||||||
|
# references is safe. In the case of statically linked test programs
|
||||||
|
# and test programs built with -fexceptions, unwinding may occur in
|
||||||
|
# some cases and it is preferable to link with libgcc_eh or libgcc_s
|
||||||
|
# so that the testing is as similar as possible to how programs will
|
||||||
|
# be built with the installed glibc.
|
||||||
|
#
|
||||||
|
# Some architectures have architecture-specific systems for exception
|
||||||
|
# handling that may involve undefined references to
|
||||||
|
# architecture-specific functions. On those architectures,
|
||||||
|
# gnulib-arch and static-gnulib-arch may be defined in sysdeps
|
||||||
|
# makefiles to use additional libraries for linking executables and
|
||||||
|
# shared libraries built by glibc.
|
||||||
ifndef gnulib
|
ifndef gnulib
|
||||||
ifneq ($(have-cc-with-libunwind),yes)
|
ifneq ($(have-cc-with-libunwind),yes)
|
||||||
libunwind =
|
libunwind =
|
||||||
|
@ -522,8 +568,12 @@ else
|
||||||
libunwind = -lunwind
|
libunwind = -lunwind
|
||||||
endif
|
endif
|
||||||
libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
|
libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
|
||||||
gnulib := -lgcc $(libgcc_eh)
|
gnulib-arch =
|
||||||
static-gnulib := -lgcc -lgcc_eh $(libunwind)
|
gnulib = -lgcc $(gnulib-arch)
|
||||||
|
gnulib-tests := -lgcc $(libgcc_eh)
|
||||||
|
static-gnulib-arch =
|
||||||
|
static-gnulib = -lgcc $(static-gnulib-arch)
|
||||||
|
static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
|
||||||
libc.so-gnulib := -lgcc
|
libc.so-gnulib := -lgcc
|
||||||
endif
|
endif
|
||||||
+preinit = $(addprefix $(csu-objpfx),crti.o)
|
+preinit = $(addprefix $(csu-objpfx),crti.o)
|
||||||
|
|
45
Rules
45
Rules
|
@ -1,5 +1,4 @@
|
||||||
# Copyright (C) 1991-2000,2002,2003,2004,2005,2006,2011
|
# Copyright (C) 1991-2012 Free Software Foundation, Inc.
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@ -103,29 +102,46 @@ xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-bp.out)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(build-programs),yes)
|
ifeq ($(build-programs),yes)
|
||||||
binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs)
|
binaries-all-notests = $(others) $(sysdep-others)
|
||||||
binaries-static = $(others-static) $(tests-static) $(xtests-static)
|
binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||||
|
binaries-all = $(binaries-all-notests) $(binaries-all-tests)
|
||||||
|
binaries-static-notests = $(others-static)
|
||||||
|
binaries-static-tests = $(tests-static) $(xtests-static)
|
||||||
|
binaries-static = $(binaries-static-notests) $(binaries-static-tests)
|
||||||
ifeq (yesyes,$(have-fpie)$(build-shared))
|
ifeq (yesyes,$(have-fpie)$(build-shared))
|
||||||
binaries-pie = $(others-pie) $(tests-pie) $(xtests-pie)
|
binaries-pie = $(others-pie) $(tests-pie) $(xtests-pie)
|
||||||
else
|
else
|
||||||
binaries-pie =
|
binaries-pie =
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
binaries-all = $(tests) $(xtests) $(test-srcs)
|
binaries-all-notests =
|
||||||
|
binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||||
|
binaries-all = $(binaries-all-tests)
|
||||||
|
binaries-static-notests =
|
||||||
|
binaries-static-tests =
|
||||||
binaries-static =
|
binaries-static =
|
||||||
binaries-pie =
|
binaries-pie =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
binaries-shared = $(filter-out $(binaries-pie) $(binaries-static), \
|
binaries-shared-tests = $(filter-out $(binaries-pie) $(binaries-static), \
|
||||||
$(binaries-all))
|
$(binaries-all-tests))
|
||||||
|
binaries-shared-notests = $(filter-out $(binaries-pie) $(binaries-static), \
|
||||||
|
$(binaries-all-notests))
|
||||||
|
|
||||||
ifneq "$(strip $(binaries-shared))" ""
|
ifneq "$(strip $(binaries-shared-notests))" ""
|
||||||
$(addprefix $(objpfx),$(binaries-shared)): %: %.o \
|
$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o \
|
||||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||||
$(+link)
|
$(+link)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq "$(strip $(binaries-shared-tests))" ""
|
||||||
|
$(addprefix $(objpfx),$(binaries-shared-tests)): %: %.o \
|
||||||
|
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||||
|
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||||
|
$(+link-tests)
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq "$(strip $(binaries-pie))" ""
|
ifneq "$(strip $(binaries-pie))" ""
|
||||||
$(addprefix $(objpfx),$(binaries-pie)): %: %.o \
|
$(addprefix $(objpfx),$(binaries-pie)): %: %.o \
|
||||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||||
|
@ -133,13 +149,20 @@ $(addprefix $(objpfx),$(binaries-pie)): %: %.o \
|
||||||
$(+link-pie)
|
$(+link-pie)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq "$(strip $(binaries-static))" ""
|
ifneq "$(strip $(binaries-static-notests))" ""
|
||||||
$(addprefix $(objpfx),$(binaries-static)): %: %.o \
|
$(addprefix $(objpfx),$(binaries-static-notests)): %: %.o \
|
||||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static))) \
|
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static))) \
|
||||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||||
$(+link-static)
|
$(+link-static)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq "$(strip $(binaries-static-tests))" ""
|
||||||
|
$(addprefix $(objpfx),$(binaries-static-tests)): %: %.o \
|
||||||
|
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static-tests))) \
|
||||||
|
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||||
|
$(+link-static-tests)
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(build-bounded),yes)
|
ifeq ($(build-bounded),yes)
|
||||||
binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs))
|
binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs))
|
||||||
$(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \
|
$(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \
|
||||||
|
|
|
@ -71,6 +71,8 @@ others = sprof sln pldd
|
||||||
install-bin = sprof pldd
|
install-bin = sprof pldd
|
||||||
others-static = sln
|
others-static = sln
|
||||||
install-rootsbin = sln
|
install-rootsbin = sln
|
||||||
|
sln-modules := static-stubs
|
||||||
|
extra-objs += $(sln-modules:=.o)
|
||||||
|
|
||||||
ifeq (yes,$(use-ldconfig))
|
ifeq (yes,$(use-ldconfig))
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
|
@ -78,7 +80,7 @@ others-static += ldconfig
|
||||||
others += ldconfig
|
others += ldconfig
|
||||||
install-rootsbin += ldconfig
|
install-rootsbin += ldconfig
|
||||||
|
|
||||||
ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
|
ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon static-stubs
|
||||||
extra-objs += $(ldconfig-modules:=.o)
|
extra-objs += $(ldconfig-modules:=.o)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -411,6 +413,8 @@ $(objpfx)ldd: ldd.bash.in $(common-objpfx)soversions.mk \
|
||||||
|
|
||||||
$(objpfx)sprof: $(libdl)
|
$(objpfx)sprof: $(libdl)
|
||||||
|
|
||||||
|
$(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
|
||||||
|
|
||||||
$(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
|
$(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
|
||||||
|
|
||||||
$(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o)
|
$(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o)
|
||||||
|
|
46
elf/static-stubs.c
Normal file
46
elf/static-stubs.c
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
/* Stub implementations of functions to link into statically linked
|
||||||
|
programs without needing libgcc_eh.
|
||||||
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* Avoid backtrace (and so _Unwind_Backtrace) dependencies from
|
||||||
|
sysdeps/unix/sysv/linux/libc_fatal.c. */
|
||||||
|
#include <sysdeps/posix/libc_fatal.c>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unwind.h>
|
||||||
|
|
||||||
|
/* These programs do not use thread cancellation, so _Unwind_Resume
|
||||||
|
and the personality routine are never actually called. */
|
||||||
|
|
||||||
|
void
|
||||||
|
_Unwind_Resume (struct _Unwind_Exception *exc __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
_Unwind_Reason_Code
|
||||||
|
__gcc_personality_v0 (int version __attribute__ ((unused)),
|
||||||
|
_Unwind_Action actions __attribute__ ((unused)),
|
||||||
|
_Unwind_Exception_Class exception_class
|
||||||
|
__attribute__ ((unused)),
|
||||||
|
struct _Unwind_Exception *ue_header
|
||||||
|
__attribute__ ((unused)),
|
||||||
|
struct _Unwind_Context *context __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
abort ();
|
||||||
|
}
|
|
@ -1,3 +1,10 @@
|
||||||
|
2012-07-03 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* sysdeps/arm/Makefile (gnulib-arch): New variable.
|
||||||
|
(static-gnulib-arch): Likewise.
|
||||||
|
[subdir = elf] ($(objpfx)libgcc-stubs.a): New rule.
|
||||||
|
[subdir = elf] (lib-noranlib): Depend on $(objpfx)libgcc-stubs.a.
|
||||||
|
|
||||||
2012-06-12 Joseph Myers <joseph@codesourcery.com>
|
2012-06-12 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Use
|
* sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Use
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
|
gnulib-arch = $(elfobjdir)/libgcc-stubs.a
|
||||||
|
static-gnulib-arch = $(elfobjdir)/libgcc-stubs.a
|
||||||
|
|
||||||
ifeq ($(subdir),elf)
|
ifeq ($(subdir),elf)
|
||||||
sysdep-dl-routines += tlsdesc dl-tlsdesc
|
sysdep-dl-routines += tlsdesc dl-tlsdesc
|
||||||
sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx tlsdesc dl-tlsdesc
|
sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx tlsdesc dl-tlsdesc
|
||||||
sysdep-rtld-routines += aeabi_unwind_cpp_pr1 tlsdesc dl-tlsdesc
|
sysdep-rtld-routines += aeabi_unwind_cpp_pr1 tlsdesc dl-tlsdesc
|
||||||
shared-only-routines += aeabi_unwind_cpp_pr1
|
shared-only-routines += aeabi_unwind_cpp_pr1
|
||||||
|
|
||||||
|
$(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os
|
||||||
|
$(build-extra-lib)
|
||||||
|
|
||||||
|
lib-noranlib: $(objpfx)libgcc-stubs.a
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),csu)
|
ifeq ($(subdir),csu)
|
||||||
|
|
Loading…
Reference in a new issue