Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #81965

Re: Global const objects missing from object file

From Paavo Helde <myfirstname@osa.pri.ee>
Newsgroups comp.lang.c++
Subject Re: Global const objects missing from object file
Date 2021-10-10 17:28 +0300
Organization A noiseless patient Spider
Message-ID <sjutb4$dud$1@dont-email.me> (permalink)
References <sjqap1$sih$1@gioia.aioe.org> <sjrhdp$bta$1@dont-email.me> <sju2pd$1ko$1@gioia.aioe.org> <isfms2F80esU1@mid.individual.net> <sjurco$1nlj$1@gioia.aioe.org>

Show all headers | View raw


10.10.2021 16:55 Steve Keller kirjutas:
> Bo Persson <bo@bo-persson.se> writes:
> 
>> It only causes duplication if you take the address and return a
>> pointer. Why do that for a constant defined in a header?
> 
> But taking the address is very common, e.g. if the object is an array.
> In fact, before I posted my first example with 'const int a = 42;' I
> had observed the behavior with const char arrays.  Here You see the
> duplication if you put it as non-extern const into a header file:
> 
>      $ cat foo.hh
>      const char s[] = "This is a string";
>      
>      void bar();
>      $ cat x.cc
>      #include <iostream>
>      
>      #include "foo.hh"
>      
>      void bar() { std::cout << s; }
>      $ cat y.cc
>      #include <iostream>
>      
>      #include "foo.hh"
>      
>      int main()
>      {
>          bar();
>          std::cout << s;
>      }
>      $ g++ -Os -o foo x.cc y.cc
>      $ strings -a foo | grep This
>      This is a string
>      This is a string

For having only one string the duplicates need to be removed at link 
time, so one needs -flto here. Also you should avoid to explicitly 
define two different arrays as indeed these would need to be different 
objects.

With the following changes I get one string only in the final executable:

$ cat foo.hh
const char* const s = "This is a string";
void bar();

$ g++ -Os -o foo x.cc y.cc -flto

$ strings foo | grep 'This is'
This is a string

Back to comp.lang.c++ | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-08 22:47 +0200
  Re: Global const objects missing from object file red floyd <no.spam.here@its.invalid> - 2021-10-08 15:09 -0700
    Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 08:28 +0200
      Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 12:03 +0300
      Re: Global const objects missing from object file David Brown <david.brown@hesbynett.no> - 2021-10-10 12:29 +0200
  Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-09 10:47 +0300
    Re: Global const objects missing from object file scott@slp53.sl.home (Scott Lurndal) - 2021-10-09 14:32 +0000
      Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-09 21:39 +0300
    Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 08:55 +0200
      Re: Global const objects missing from object file Bo Persson <bo@bo-persson.se> - 2021-10-10 10:34 +0200
        Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 15:55 +0200
          Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 17:28 +0300
            Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 20:42 +0200
              Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 22:44 +0300
      Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 12:14 +0300
        Re: Global const objects missing from object file Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-29 06:29 -0700
          Re: Global const objects missing from object file Bo Persson <bo@bo-persson.se> - 2021-10-29 15:55 +0200
            Re: Global const objects missing from object file Öö Tiib <ootiib@hot.ee> - 2021-10-29 22:20 -0700
            Re: Global const objects missing from object file Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-07 04:51 -0800
          Re: Global const objects missing from object file scott@slp53.sl.home (Scott Lurndal) - 2021-10-29 14:44 +0000
            Re: Global const objects missing from object file Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-07 05:08 -0800
              Re: Global const objects missing from object file scott@slp53.sl.home (Scott Lurndal) - 2021-11-07 14:21 +0000
      Re: Global const objects missing from object file David Brown <david.brown@hesbynett.no> - 2021-10-10 12:33 +0200
  Re: Global const objects missing from object file "Alf P. Steinbach" <alf.p.steinbach@gmail.com> - 2021-10-09 15:05 +0200
  Re: Global const objects missing from object file Juha Nieminen <nospam@thanks.invalid> - 2021-10-09 17:40 +0000

csiph-web