Issue #6360 has been updated by luislavena (Luis Lavena).


mame (Yusuke Endoh) wrote:
> Sorry, but postponing it to 2.1.0.
> I believe that Luis can work around the issue,
> 

Sorry, but as I mentioned in this, the change to default compile debug symbols is a bug and a regression.

Revisions in 1.9.3 prior 194 didn't suffer this.

Ruby 2.0.0 release will suffer by this too due r34840

Debug symbols shouldn't be generated by default unless requested by the user compiling the package. This is the same as adding -Werror, shouldn't be done by default.

While I personally can work around this issue, not everybody is aware that Ruby's default compile behavior is include debug information.

Please review this decision.

Thank you.
----------------------------------------
Bug #6360: Debug information build even without requesting it
https://bugs.ruby-lang.org/issues/6360#change-36528

Author: luislavena (Luis Lavena)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: build
Target version: 2.1.0
ruby -v: 2.0.0 i386-mingw32 r35473


Hello,

While working on latest RubyInstaller release for 1.9.3-p194 our team detected a bigger shared library and import library being generated.

After further inspection, we found this commit:
https://github.com/ruby/ruby/commit/ffdaca1d748804f2b5ca2de612f17cf6c78d351b

Backported r34840 into ruby_1_9_3 branch

The above change added -ggdb to CFLAGS even when was not provided by debugflags configure option.

The following is the comparison of "make" summary with and without the change:

Current trunk:

<pre>
C:\Users\Luis\Projects\oss\ruby\build32>make
        CC = gcc
        LD = ld
        LDSHARED = gcc -shared
        CFLAGS = -O3 -fno-omit-frame-pointer -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration
        XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
        CPPFLAGS = -DFD_SETSIZE=32767 -D_WIN32_WINNT=0x0501   -I. -I.ext/include/i386-mingw32 -I../include -I..
        DLDFLAGS = -Wl,--enable-auto-image-base,--enable-auto-import -Wl,--out-implib=libmsvcrt-ruby200.dll.a msvcrt-ruby200.def -Wl,--stack,0x00200000,--enable-auto-import
        SOLIBS = msvcrt-ruby200.res.o -lshell32 -lws2_32 -limagehlp
</pre>

Reverting r34840:

<pre>
C:\Users\Luis\Projects\oss\ruby\build32>make
        CC = gcc
        LD = ld
        LDSHARED = gcc -shared -s
        CFLAGS = -O3 -fno-omit-frame-pointer -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration
        XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
        CPPFLAGS = -DFD_SETSIZE=32767 -D_WIN32_WINNT=0x0501   -I. -I.ext/include/i386-mingw32 -I../include -I..
        DLDFLAGS = -Wl,--enable-auto-image-base,--enable-auto-import -Wl,--out-implib=libmsvcrt-ruby200.dll.a msvcrt-ruby200.def -Wl,--stack,0x00200000,--enable-auto-import
        SOLIBS = msvcrt-ruby200.res.o -lshell32 -lws2_32 -limagehlp
</pre>

Notice that -g changed into -ggdb instead.

I think debug symbols shouldn't be compiled unless requested and this is a regression.




-- 
http://bugs.ruby-lang.org/