Bug #6360
openDebug information build even without requesting it
Description
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:
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
Reverting r34840:
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
Notice that -g changed into -ggdb instead.
I think debug symbols shouldn't be compiled unless requested and this is a regression.
Updated by luislavena (Luis Lavena) over 12 years ago
- Target version changed from 1.9.3 to 2.0.0
=begin
Hello,
Friendly reminder than this still happens in trunk and ruby_1_9_3:
http://ci.rubyinstaller.org/job/ruby-trunk-x86/94/console
CC = mingw32-gcc
LD = ld
LDSHARED = mingw32-gcc -shared
CFLAGS = -O3 -fno-omit-frame-pointer -fno-fast-math -ggdb3 -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 = -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
And Ruby 1.9.3:
CC = mingw32-gcc
LD = ld
LDSHARED = mingw32-gcc -shared
CFLAGS = -O3 -fno-omit-frame-pointer -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/i386-mingw32 -I../include -I..
DLDFLAGS = -Wl,--enable-auto-image-base,--enable-auto-import -Wl,--out-implib=libmsvcrt-ruby191.dll.a msvcrt-ruby191.def
SOLIBS = msvcrt-ruby191.res.o -lshell32 -lws2_32 -limagehlp
Thank you.
=end
Updated by mame (Yusuke Endoh) over 11 years ago
- Target version changed from 2.0.0 to 2.1.0
Sorry, but postponing it to 2.1.0.
I believe that Luis can work around the issue,
--
Yusuke Endoh mame@tsg.ne.jp
Updated by luislavena (Luis Lavena) over 11 years ago
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.
Updated by mame (Yusuke Endoh) over 11 years ago
Can you create a patch and get "ok" from nobu or any reliable person?
--
Yusuke Endoh mame@tsg.ne.jp
Updated by ko1 (Koichi Sasada) over 11 years ago
- Target version changed from 2.1.0 to 2.0.0
Updated by mame (Yusuke Endoh) over 11 years ago
I don't think that this is a showstopper; it actually works.
But if trunk can be fixed soon by an assured patch, I'm not against backporting it.
--
Yusuke Endoh mame@tsg.ne.jp
Updated by mame (Yusuke Endoh) over 11 years ago
- Target version changed from 2.0.0 to 2.6
Updated by luislavena (Luis Lavena) over 11 years ago
- Priority changed from Normal to 5
- Target version changed from 2.6 to 2.1.0
nobu: ping?
I'm still suffering this and is affecting developers cross-compiling gems in Linux targetting Windows, at it generates binary extensions of 6MB in size due the debug symbols.
-ggdb3 shouldn't be set for debugflags unless indicated.
Perhps adding a --enable-debug option to configure?
Thank you
Updated by hsbt (Hiroshi SHIBATA) almost 11 years ago
- Target version changed from 2.1.0 to 2.2.0
Updated by naruse (Yui NARUSE) almost 7 years ago
- Target version deleted (
2.2.0)
Updated by pcai (Peter Cai) 12 months ago
This still seems to set -ggdb3 CFLAGS by default in trunk. Is this still considered a bug and if so, how should it be re-enabled?