This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch ld]: Increase stack size to be 10 MB by default


2008/6/7 Joseph S. Myers <joseph@codesourcery.com>:
> On Sat, 7 Jun 2008, Brian Dessent wrote:
>
>> Kai Tietz wrote:
>>
>> >         * emultempl/pep.em (init): Reserved stack size
>> >         defaults to 10 MB.
>>
>> This used to default to 32MB, but it was reduced to 2MB because of the
>> concern that in multi-threaded apps every thread gets a stack of this
>> size by default:
>> <http://sourceware.org/ml/binutils/2001-06/msg00054.html>.  I understand
>> that the problem is that some gcc files or testcases require a larger
>> stack, but shouldn't that be handled in gcc and not by changing the
>> defaults of the linker?  I just verified that the Microsoft Visual
>> Studio 2005 linker does default to 1MB StackReserve as stated in that
>> message.
>
> FWIW, we have the following local GCC patch at CodeSourcery to increase
> the stack limit to 8MB for Windows-hosted compilers, but weren't sure
> about upstream acceptability, especially since changing config/mh-mingw
> affects all tools built from the src repository, not just GCC.  I suppose
> at least none of these tools are multi-threaded.
>
> config:
> 2008-05-05  Joseph Myers  <joseph@codesourcery.com>
>
>        * config/mh-mingw (LDFLAGS): Define.
>
> gcc:
> 2008-05-05  Joseph Myers  <joseph@codesourcery.com>
>
>        * configure.ac: Use empty LDFLAGS when running configure for the
>        build system.
>        * configure: Regenerate.
>        * Makefile.in (BUILD_LDFLAGS): Do not define to $(LDFLAGS) unless
>        host == build.
>
> Index: gcc/configure.ac
> ===================================================================
> --- gcc/configure.ac    (revision 206790)
> +++ gcc/configure.ac    (revision 206791)
> @@ -1483,7 +1483,7 @@
>        *) realsrcdir=../${srcdir};;
>        esac
>        saved_CFLAGS="${CFLAGS}"
> -       CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> +       CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" LDFLAGS="" \
>        ${realsrcdir}/configure \
>                --enable-languages=${enable_languages-all} \
>                --target=$target_alias --host=$build_alias --build=$build_alias
> Index: gcc/Makefile.in
> ===================================================================
> --- gcc/Makefile.in     (revision 206790)
> +++ gcc/Makefile.in     (revision 206791)
> @@ -689,7 +689,11 @@
>  BUILD_CFLAGS= @BUILD_CFLAGS@ -DGENERATOR_FILE
>
>  # Native linker and preprocessor flags.  For x-fragment overrides.
> +ifeq ($(host),$(build))
>  BUILD_LDFLAGS=$(LDFLAGS)
> +else
> +BUILD_LDFLAGS=
> +endif
>  BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
>
>  # Actual name to use when installing a native compiler.
> Index: config/mh-mingw
> ===================================================================
> --- config/mh-mingw     (revision 206790)
> +++ config/mh-mingw     (revision 206791)
> @@ -1,3 +1,5 @@
>  # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows
>  # Vista (see PR33281 for details).
>  BOOT_CFLAGS += -D__USE_MINGW_ACCESS
> +# Increase stack limit to same as Linux default.
> +LDFLAGS = -Wl,--stack,8388608
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
>

I agree to this patch.
The problem I see is, that for default of ld for 32-bit 2MB stack are
ok, but for 64-bit a stack word is double of the 32-bit version. So I
mean may we should increase the stack size at least to 4MB for
default. A multi-thread application can lower the stack space reserved
by ld --stack switch. I think in general there are more application
running in single thread model then for multi-threaded. So IMHO we
should increase the default stack size.

Cheers,
  Kai

-- 
| (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]