Bug #6360

Debug information build even without requesting it

Added by Luis Lavena almost 2 years ago. Updated 3 months ago.

[ruby-core:44628]
Status:Assigned
Priority:High
Assignee:Nobuyoshi Nakada
Category:build
Target version:current: 2.2.0
ruby -v:2.0.0 i386-mingw32 r35473 Backport:

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 ruby19_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 -DFORTIFYSOURCE=2 -fno-strict-overflow -fvisibility=hidden -DRUBYEXPORT
CPPFLAGS = -DFD
SETSIZE=32767 -DWIN32WINNT=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 -DFORTIFYSOURCE=2 -fno-strict-overflow -fvisibility=hidden -DRUBYEXPORT
CPPFLAGS = -DFD
SETSIZE=32767 -DWIN32WINNT=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.

History

#1 Updated by Luis Lavena over 1 year ago

  • Target version changed from 1.9.3 to 2.0.0

=begin
Hello,

Friendly reminder than this still happens in trunk and ruby19_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

#2 Updated by Yusuke Endoh about 1 year 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

#3 Updated by Luis Lavena about 1 year 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.

#4 Updated by Yusuke Endoh about 1 year ago

Can you create a patch and get "ok" from nobu or any reliable person?

Yusuke Endoh mame@tsg.ne.jp

#5 Updated by Koichi Sasada about 1 year ago

  • Target version changed from 2.1.0 to 2.0.0

#6 Updated by Yusuke Endoh about 1 year 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

#7 Updated by Yusuke Endoh about 1 year ago

  • Target version changed from 2.0.0 to next minor

#8 Updated by Luis Lavena 10 months ago

  • Priority changed from Normal to High
  • Target version changed from next minor 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

#9 Updated by Hiroshi SHIBATA 3 months ago

  • Target version changed from 2.1.0 to current: 2.2.0

Also available in: Atom PDF