This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC 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]

std=c++14 greatly increases debuginfo size. why?


Hi,

A colleague of mine noticed that switching from -std=c++11 to -std=c++14
dramatically increased the size of our binary.

After some investigation, this seems to be due to debuginfo.

Consider the following simple example, compiled four different ways:

jscott@citra:~/src/debuginfo-bloat$ cat simple.cpp 
#include <string>

size_t length (const std::string &data)
{
  size_t len = 0;
  for (auto iter = data.cbegin(); iter != data.cend(); iter++)
  {
    len++;
  }

  return len;
}
jscott@citra:~/src/debuginfo-bloat$ g++-6 -gdwarf-4 -std=c++11 -c simple.cpp -o simple-11.o 
jscott@citra:~/src/debuginfo-bloat$ g++-6 -gdwarf-4 -std=c++14 -c simple.cpp -o simple-14.o 
jscott@citra:~/src/debuginfo-bloat$ g++-6 -gdwarf-4 -std=c++11 -c simple.cpp -o simple-11-g1.o -g1
jscott@citra:~/src/debuginfo-bloat$ g++-6 -gdwarf-4 -std=c++14 -c simple.cpp -o simple-14-g1.o -g1
jscott@citra:~/src/debuginfo-bloat$ ls -l simple*o
-rw-rw-r-- 1 jscott jscott   6904 Nov  4 22:25 simple-11-g1.o
-rw-rw-r-- 1 jscott jscott  60192 Nov  4 22:25 simple-11.o
-rw-rw-r-- 1 jscott jscott   6904 Nov  4 22:25 simple-14-g1.o
-rw-rw-r-- 1 jscott jscott 129376 Nov  4 22:25 simple-14.o


So with the default -g2, the C++14 output is almost double that of C++11. But
with -g1 they are the same.

Can someone tell me why this is so? Am I getting much better debuginfo for those
bytes?

The manual doesn't document exactly what -g2 gives over -g1, except that -g1
doesn't include info about local variables (hence I assume -g2 does). I
certainly would like to keep debuginfo for local variables. So I'm pretty sure I
don't want to go down to -g1. Are there any other compromises worth considering
to reduce the binary size here?

Thanks,

John


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