Project

General

Profile

Actions

Bug #6360

open

Debug information build even without requesting it

Added by luislavena (Luis Lavena) over 12 years ago. Updated 12 months ago.

Status:
Assigned
Target version:
-
ruby -v:
2.0.0 i386-mingw32 r35473
Backport:
[ruby-core:44628]
Tags:

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

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

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

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
Actions #10

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?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0